Frage

Wir sind mit einem COM-Objekt Automatisierungsmodell für unsere Kunden unserer Anwendung zur Verfügung zu stellen.

Sie sind mit zum größten Teil Python unserer applicaton Schnittstelle zugreifen zu können.

Wie wir in der Lage sein wollen, installieren (noch nicht laufen, das ist ein anderes Thema) verschiedene Versionen der Anwendung sind wir unsere COM-Komponenten zu ändern regfree sein.

Aber, dass Konflikte mit dem Zugang von Skriptsprachen durch IDispatch Automatisierung, da sie die Einträge in der Registrierung benötigen.

Unser Ansatz ist es, eine Anwendung zu erstellen, die die aktive Version unserer tatsächlichen Anwendung verwaltet. Es kann der Benutzer entscheiden, welche Version er haben will und es kümmert sich um die Registry-Einträge.

Was sind die Alternativen zu unserem Ansatz?

War es hilfreich?

Lösung

Es gibt ein Protokoll innerhalb COM, dies zu tun. Wenn Sie die Version die Schnittstellen (und die GUIDs für jede Version ändern) können Sie mehrere Versionen installieren. Microsoft tut dies mit WORD etc.

Es ist möglich, eine Word.Document.5 Klasse zu erstellen, die auf der Version 5 der Bibliothek spezifisch ist, oder einfach nur Word.Document, die eine Instanz von der höchsten auf der Maschine vorhanden schaffen. Ich bin mir nicht sicher, ob diese Funktionalität bauen in COM ist oder werden muss, impemented aber es lohnt ein Blick in.

Andere Tipps

Regfree COM-Objekte können über die Microsoft zugegriffen werden. Windows.ActCtx Objekt.

Wie für IDispatch Automatisierungs Einträge in der Registrierung erforderlich - das ist nicht ganz richtig. Ich nehme an, Sie die Standard-ATL-Implementierung verwenden, IDispatchImpl. Wir lösten diese Lösung durch unsere eigene Implementierung bereitstellt, IRegFreeDispatchImpl, die die Weise hier vorgeschlagenen alle Eintrittspunkte in die DLL mit einer Aktivierungskontext Aktivierung / Deaktivierung zu wickeln.

Nun, die Antwort ist selbst vorgeschlagen. Sie können eine Anwendung schreiben, die vollständige Liste aller Versionen von COM-Komponenten hat. Sobald eine Version vom Benutzer ausgewählt ist, können Sie regsvr32 Anwendung aufrufen, dass bestimmte Version zu registrieren.

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