2010-05-24 39 views
1

Deux de nos programmes utilisent le même serveur COM (également créé par nos soins) avec les mêmes identifiants de classe. Chaque programme lors de l'installation copie les fichiers du serveur COM dans son dossier et regsvr32 s le serveur COM.Puis-je utiliser des manifestes pour consommer un serveur COM sans spécifier sa version?

Le problème est de savoir comment installer le serveur COM afin que l'utilisateur puisse installer l'un de nos programmes ou les deux dans des dossiers différents dans n'importe quel ordre et probablement dans des versions différentes. Clairement c'est impossible sans changer les identifiants de classe et c'est beaucoup de tracas avec des configurations. Idéalement, nous aimerions utiliser des manifestes pour cela et aller sans regsvr32. Le problème est chaque fois que je lis à propos de COM sans reg (par exemple, here) il y a l'attribut version dans le assemblyIdentity. Le numéro de version devrait changer tous les soirs et je n'aime absolument pas l'idée de l'ajuster (automatiquement). Je comprends pourquoi spécifier une dépendance sur une version spécifique est bon, mais c'est complètement inutile dans notre scénario.

Existe-t-il un moyen d'écrire des manifestes pour le serveur COM et le consommateur afin qu'ils ne spécifient pas de versions et fonctionnent avec la version du fichier qui se trouve dans le dossier? Aussi existe-t-il un moyen de restreindre la recherche au même dossier que le consommateur?

Répondre

0

Windows recherche les manifestes uniquement dans global location followed by the application directory. Si vous n'installez rien globalement, la recherche est restreinte au même dossier.

Si vous envoyez toujours le serveur COM dans le même dossier que le client COM, il s'agit en réalité d'une "unité logicielle". Considérations version sont des contrats d'interface entre différentes unités logicielles, donc dans votre scénario, cela n'a pas d'importance. Vous pouvez soit omettre l'attribut de version de l'identité, soit le paramétrer sur quelque chose de fixe comme "1.0.0.0", sachant qu'à ce moment-là, c'est à la façon dont vous distribuez le logiciel pour vous assurer du bon versionnage, et non pas système parallèle.