Inscription gratuite (Regfree) COM

Nous utilisons un modèle d’automatisation COM Object pour rendre notre application disponible pour nos clients.

Ils utilisent pour la plupart python pour accéder à notre interface applicaton.

Comme nous voulons être en mesure d’installer (pas encore exécuté, c’est un autre problème) différentes versions de l’application, nous modifions nos composants COM pour qu’ils soient regfree.

Mais cela entre en conflit avec l’access aux langages de script via l’automatisation IDispatch car ils ont besoin des entrées du registre.

Notre approche consiste à créer une application qui gère la version active de notre application réelle. Il permet à l’utilisateur de décider quelle version il veut avoir et il s’occupe des entrées du registre.

Quelles sont les alternatives à notre approche?

Pour cela, il existe un protocole dans COM. Si vous mettez à jour les interfaces (et modifiez les GUIDS pour chaque version), vous pouvez installer plusieurs versions. Microsoft le fait avec WORD etc.

Il est possible de créer une classe Word.Document.5 spécifique à la version 5 de la bibliothèque ou simplement word.Document qui créera une instance du plus haut présent sur la machine. Je ne sais pas si cette fonctionnalité est intégrée à COM ou doit être mise en œuvre, mais cela vaut la peine d’être examiné.

Les objects COM Regfree sont accessibles via l’object Microsoft.Windows.ActCtx .

En ce qui concerne l’automatisation IDispatch nécessitant des entrées dans le registre, cela n’est pas ssortingctement correct. Je suppose que vous utilisez l’implémentation ATL par défaut, IDispatchImpl. Nous avons résolu cette solution en fournissant notre propre implémentation, IRegFreeDispatchImpl, qui utilisait les API de manipulation du contexte d’activation de la manière suggérée ici pour envelopper tous les points d’entrée dans la DLL avec une activation / désactivation du contexte d’activation.

Eh bien, la réponse est suggérée par vous-même. Vous pouvez écrire une application contenant la liste complète de toutes les versions des composants COM. Une fois qu’une version est sélectionnée par l’utilisateur, vous pouvez appeler l’application regsvr32 pour enregistrer cette version particulière.