Domanda

Stiamo utilizzando un modello di automazione degli oggetti COM per rendere la nostra applicazione disponibile per i nostri clienti.

Stanno utilizzando per la maggior parte python per accedere alla nostra interfaccia di applicazione.

Poiché vogliamo essere in grado di installare (non ancora eseguito, questo è un altro problema) versioni diverse dell'applicazione, stiamo cambiando i nostri componenti COM in regfree.

Ma questo è in conflitto con l'accesso dai linguaggi di scripting tramite l'automazione IDispatch poiché hanno bisogno delle voci nel registro.

Il nostro approccio è quello di creare un'applicazione che gestisca la versione attiva della nostra attuale applicazione. Permette all'utente di decidere quale versione desidera avere e si occupa delle voci di registro.

Quali sono le alternative al nostro approccio?

È stato utile?

Soluzione

Esiste un protocollo all'interno di COM per farlo. Se si esegue la versione delle interfacce (e si cambiano i GUID per ciascuna versione) è possibile installare più versioni. Microsoft lo fa con WORD ecc.

È possibile creare una classe Word.Document.5 specifica per la versione 5 della libreria, o solo word.Document che creerà un'istanza del più alto presente sulla macchina. Non sono sicuro che questa funzionalità sia integrata in COM o debba essere implementata, ma vale la pena esaminarla.

Altri suggerimenti

È possibile accedere agli oggetti COM Regfree tramite Microsoft. Windows.ActCtx oggetto.

Per quanto riguarda l'automazione IDispatch che richiede voci nel registro - questo non è strettamente corretto. Presumo che tu stia utilizzando l'implementazione ATL predefinita, IDispatchImpl. Abbiamo risolto questa soluzione fornendo la nostra implementazione, IRegFreeDispatchImpl, che utilizzava API di manipolazione del contesto di attivazione in suggerito qui per racchiudere tutti i punti di ingresso nella DLL con l'attivazione / disattivazione del contesto di attivazione.

Bene, la risposta è suggerita da te. È possibile scrivere un'applicazione che abbia un elenco completo di tutte le versioni dei componenti COM. Una volta selezionata una versione dall'utente, puoi chiamare l'applicazione regsvr32 per registrare quella particolare versione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top