Domanda

Usiamo file manifesto di fare senza registrazione COM, come ho anche elaborato in quest'altra domanda .

Ora stiamo cercando di utilizzare senza registrazione COM con un'applicazione che supporta i plug-in . I plug-in sono file OCX che possono essere aggiunti alla cartella dell'applicazione principale dopo l'applicazione principale è già installata.

Tuttavia, ciò significa che il file manifesto dell'applicazione principale avrebbe bisogno di essere patchato dal plug-in installer. Che sembra una cosa pericolosa e soggetta a errori da fare, soprattutto se possono essere installati più plug-in.

C'è un modo per dividere in qualche modo il file manifesto del ricorso principale, in modo che ogni plug-in può tranquillamente aggiungere il proprio ruolo come file separato? O un altro modo sicuro per patchare il file manifesto?

Nel caso in cui è rilevante:. Creiamo i nostri installatori con Wix

È stato utile?

Soluzione

Non vorrei raccomandare la modifica del file di manifesto della domanda; che sembra abbastanza fragile e avrebbe funzionato solo se si vive in una posizione scrivibile.

All'avvio processo, manifesto di un'applicazione viene utilizzato per generare un "activation-contesto" che viene spinto come il contesto di attivazione-processo di larghezza. Ma ogni thread ha anche uno stack di attivazione-contesto, che può essere manipolato direttamente. Le operazioni su un dato filo guardano sia al contesto più in alto nello stack e il contesto di attivazione-processo a livello quando alla ricerca di dati di registrazione COM.

La raccomandazione è che qualsiasi codice del plugin momento ha bisogno di mettere in COM, un manifesto-specific plugin dovrebbe essere attivato sul filo. Questo può essere fatto più facilmente in uno dei due modi:

  1. Incorporare il manifesto specifici plug-in come ID2 manifesta nel plug-in e compilare con la macro ISOLATION_AWARE_ENABLED definiti. Questo avvolge fondamentalmente API comuni di Windows che hanno bisogno di contesto da un manifesto per attivare e disattivare il contesto di attivazione corretta intorno alla chiamata automaticamente.

  2. attivare / disattivare il contesto di attivazione corretta sul filo intorno tutti i punti di entrata alla plugin. Questo viene fatto attraverso il API contesto di attivazione . Questo è fatto più facilmente con un oggetto di gestione del contesto .

Altri suggerimenti

Se si utilizza Net, è possibile utilizzare il codice mostrato in questa risposta di prendersi cura di attivazione contesti.

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