2010-02-10 3 views
6

Wir entwickeln eine ClickOnce-Anwendung mit einer Mischung aus .NET-Komponenten und älteren C++ - COM-Komponenten.Ist es möglich, COM-sichtbare .NET-Klassen mit registrierungsfreier COM zu verwenden?

Derzeit fügen wir die C++ - COM-Komponenten mit einer MSI auf dem Computer des Benutzers hinzu (dies ist eine Voraussetzung für die Installation unserer ClickOnce-App), was bedeutet, dass wir die COM-Objekte zuvor auf dem Computer des Benutzers registrieren können.

Wir können immer noch Updates für den Rest der in C# geschriebenen Anwendung per ClickOnce bereitstellen, aber die Aktualisierung der vom MSI installierten Komponenten erfordert manuelle Eingriffe.

Wir versuchen jedoch herauszufinden, ob es möglich ist, die C++ COM-Komponenten über registrierungsfreie COM zu installieren, dh sie befinden sich alle im selben Verzeichnis und jede Komponente hat eine Manifestdatei, die die clsid für jede COM angibt Objekt und Schnittstelle. Dies würde bedeuten, dass wir das MSI vollständig loswerden können.

Diese link war eine gute Einführung in das Thema.

Ich konnte eine .NET-Komponente erhalten, um ein C++ - COM-Objekt zu laden, aber nicht andersherum.

Weiß jemand, ob das möglich ist?

Antwort

5

Ja, das ist möglich. Sie müssen das Element <clrClass> im Manifest verwenden. Es gibt eine anständige Anleitung located here. Die SDK-Dokumente sind ansonsten ziemlich miserabel, Sie benötigen Junfeng Zhang's blog, um bessere Hintergrundinformationen zu erhalten.

Verwandte Themen