2010-08-25 8 views
2

J'ai un contrôle C++ ActiveX dont j'ai besoin pour faire un installateur. Il doit supprimer la DLL et créer des clés de registre.Windows Installer pour le composant COM

J'ai environ 6 fichiers .RGS que j'ai fait pour l'auto-enregistrement via regsvr32, qui fonctionnent.

Pour faire un installateur, je suis en train de transférer manuellement les scripts RGS dans l'interface graphique du registre d'installation de windows 2008 de visual studio. J'ai l'impression qu'il n'est pas possible de faire un port exact (par exemple des mots-clés RGS comme ForceRemove).

N'existe-t-il pas un moyen de générer ces fichiers à partir du fichier IDL? Est-ce que je fais cela mal?

Répondre

1

SelfReg n'est pas une bonne pratique dans une installation MSI car elle est hors processus et fragile. Les programmes d'installation de Visual Studio 2008 sont limités, mais vous devriez pouvoir définir la propriété Register sur vsdrfCOM au lieu de vsdrfCOMSelfReg. Cela entraînera la collecte des métadonnées COM à partir de votre DLL et créé nativement dans MSI. Après la construction de votre fichier MSI, vous devez remarquer que la table SelfReg est vide et qu'une série de lignes automatiquement créées dans la table Registry est disponible pour les données COM.

Remarque: VDPROJ est un peu floconneux lors de l'extraction de ce COM, cela peut donc ne pas fonctionner. Vous devrez peut-être envisager un outil plus puissant tel que InstallShield ou Windows Installer XML.

+0

ok, ouais, vsdrfCOM est "incapable d'extraire les informations d'enregistrement" ou une telle. Je vais vérifier WIX. Y at-il une raison pour entrer manuellement les clés d'enregistrement? –

+0

Oui. L'extraction de COM peut être un processus effrayant et parfois il échoue. Dans ces cas, je clique sur/profile/diff une VM pour trouver ce qu'elle a manqué et ensuite écrire manuellement ces entrées dans l'installateur pour compenser. –

1

Vous le faites mal. Les fichiers .rgs sont là pour que le composant puisse s'installer lui-même. Tout programme d'installation prend en charge l'installation d'un composant lui-même. Un projet d'installation Visual Studio par exemple, définissez la propriété Register.

+0

bien, j'ai vu cela, mais MSDN semble déconseiller: http://msdn.microsoft.com/en-us/library/bb204770(VS.85).aspx#no_selfreg http://msdn.microsoft .com/fr-fr/library/aa371608 (v = VS.85) .aspx suis-je en train de les lire? –

+0

D'accord. Dans ce cas, ma réponse est "non". –

+0

+1. On dirait que les fichiers .rgs ne peuvent être analysés que par les fonctions ATL et que leur seul but est d'être inclus dans les ressources de la bibliothèque pour une utilisation ultérieure depuis 'DllRegisterServer()'. – sharptooth

Questions connexes