Question

Nous utilisons des fichiers manifestes pour faire COM sans inscription, comme je l'ai également mentionnés dans les formulaires cette autre question .

Maintenant, nous essayons d'utiliser COM sans enregistrement avec une application qui prend en charge les plug-ins . Les plug-ins sont des fichiers OCX qui peuvent être ajoutés au dossier de l'application principale après l'application principale est déjà installée.

Cependant, cela signifie que le fichier manifeste de l'application principale devra être patché par le plug-in d'installation. Cela semble être une chose dangereuse et sujette aux erreurs à faire, en particulier si plusieurs plug-ins peuvent être installés.

Est-il possible de diviser en quelque sorte le manifeste de l'application principale, de sorte que chaque plug-in peut en toute sécurité ajouter sa propre partie dans un fichier séparé? Ou une autre façon sûre patcher le fichier manifeste?

Dans le cas où il est pertinent. Nous créons nos installateurs Wix

Était-ce utile?

La solution

Je recommande de ne pas modifier le fichier manifeste de l'application; qui semble assez fragile et ne fonctionne que si elle vit dans un endroit inscriptible.

Au démarrage du processus, est utilisé pour générer une « activation-contexte » le manifeste d'une application qui est poussé le processus à l'échelle contexte d'activation. Mais chaque thread dispose également d'une pile d'activation contexte, qui peut être manipulé directement. Les opérations sur un fil donné regarder à la fois le contexte le plus élevé sur la pile et le contexte d'activation processus à l'échelle lors de la recherche de données d'enregistrement COM.

La recommandation est que tout code plugin temps doit remettre en COM, doit être activé un manifeste spécifique au plugin sur le fil. Cela peut le plus facilement être fait dans l'une des deux façons suivantes:

  1. Intégrer la manifeste spécifique-plugin comme un ID2 manifeste dans le plug-in et compiler avec la macro ISOLATION_AWARE_ENABLED définis. Cette enveloppe essentiellement API Windows communs qui nécessitent un contexte d'un manifeste pour activer et désactiver automatiquement le contexte d'activation autour de l'appel.

  2. Activer / Désactiver le contexte d'activation sur le fil autour de tous les points d'entrée dans le plug-in. Cela se fait par l'. Ceci est le plus facile à faire avec une activation .

Autres conseils

Si vous utilisez .Net, vous pouvez utiliser le code indiqué dans cette réponse pour prendre soin de l'activation contextes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top