Frage

Wir verwenden Manifest-Dateien anmeldefreien COM zu tun, wie ich auch auf in diese andere Frage .

Jetzt versuchen wir zu nutzen Registrierung frei COM mit einer Anwendung, die unterstützt Plug-in . Die Plug-Ins sind OCX-Dateien, die auf die Hauptanwendung des Ordners hinzugefügt werden kann, nachdem die Hauptanwendung ist bereits installiert.

Das bedeutet aber, dass die Manifest-Datei der Hauptanwendung müßte vom Plug-in gepatcht werden Installer. Das scheint wie ein gefährliches und fehleranfällig, was zu tun, vor allem, wenn mehrere Plug-In installiert werden.

Gibt es eine Möglichkeit, um irgendwie die Manifest-Datei der Hauptanwendung aufgeteilt, so dass jede Plug-In kann es sicher hinzufügen eigener Teil als separate Datei? Oder eine andere sichere Art und Weise die Manifest-Datei patchen?

Falls es relevant: Wir erstellen unsere Installateure mit wix

.
War es hilfreich?

Lösung

Ich würde nicht empfehlen, die Manifest-Datei der Anwendung zu modifizieren; Das scheint ziemlich zerbrechlich und würde nur funktionieren, wenn sie lebt in einer beschreibbaren Lage.

Beim Prozess der Inbetriebnahme eines Manifest der Anwendung wird verwendet, um einen „Aktivierung-Kontext“ zu erzeugen, die als prozessweiten Aktivierungskontext geschoben wird. Aber jeder Thread hat auch einen Aktivierungs-Kontextstapel, die direkt manipuliert werden kann. Operationen auf einem bestimmten Thread Blick sowohl auf dem obersten Rahmen auf dem Stapel und den prozessweiten Aktivierungskontext, wenn für COM Registrierungsdatum suchen.

Die Empfehlung ist, dass jedes Mal Plugin-Code Bedürfnisse in COM zu nennen, ein Plugin-spezifischen manifestieren sollte auf dem Thread aktiviert werden. Dies kann am einfachsten in einem von zwei Arten erfolgen:

  1. Embed das Plugin-spezifisches Manifest als ID2 Manifest in das Plugin und die Kompilierung mit dem Makro ISOLATION_AWARE_ENABLED definiert. Dieser im Grunde Wraps gängigen Windows-APIs, dass Bedarf Zusammenhang von einem Manifest automatisch aktivieren und den richtigen Aktivierungskontext um den Anruf zu deaktivieren.

  2. Aktivieren / Deaktivieren der richtige Aktivierungskontext auf den Faden um allen den Einspeisepunkten in das Plugin. Dies geschieht durch die Aktivierungskontext APIs . Dies geschieht am einfachsten mit einer Aktivierung erfolgt Kontextmanagementobjekt .

Andere Tipps

Wenn Sie .NET verwenden, können Sie den Code in dieser Antwort gezeigt, kümmern sich um die Aktivierung Kontexte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top