2010-04-07 6 views
1

Je construis un programme d'installation de contrôle ActiveX dans VS2008 qui utilise à la fois les modules de fusion CRT et MFC à installer. Lorsque mon contrôle tente d'enregistrer sur Windows 7, il échoue. Dépendance Walker indique que les dépendances mfc90u.dll, msvcr90.dll et msvcp90.dll me manquent lorsque j'essaie d'enregistrer mon contrôle et que l'installation échoue. Les modules de fusion sont-ils censés prendre en charge cela? Ma sortie OCX est enregistrée avec l'option vsdrpCOMSelfReg. D'après ce que je lis sur d'autres forums, ce n'est peut-être pas la meilleure méthode, que dois-je essayer en ce moment?Aide avec l'installation ActiveX? Fusionner des modules - Windows Vista et Windows 7

L'installation fonctionne correctement sous Windows XP.

Mise à jour 4/8/2010:

Changé pour vsdrpCOM et l'installation passe à travers (sans surprise), cependant, msvcr90.dll on ne trouve pas par la suite. Je pensais que cela était géré par le module de fusion pour CRT (microsoft_vc90_crt_x86.msm)? Sous Windows XP, Dependency Walker le trouve dans Windows/System32, pas dans le dossier SxS comme je le pensais. Sur Windows 7, il ne trouve tout simplement pas du tout. Devrais-je mettre le msvcr90.dll dans Windows/System32 moi-même? Cela ne semble pas être le cas.

Mise à jour 20/04/2010:

Eh bien, il semble que la dépendance Walker trouve msvcr90.dll à la dépendance de niveau supérieur du contrôle lui-même, bien que msvcp90.dll et mfc90u.dll les deux ont des dépendances implicites/transmises sur msvcr90.dll aussi et ceux qui n'ont pas pu être résolus dans le Dependency Walker. Le contrôle, cependant, enregistre bien et exécute le chargement de ces bibliothèques. Est-ce quelque chose qui peut être ignoré?

Répondre

1

Les deux modules dont vous avez besoin sont: - Microsoft_VC90_MFC_x86.msm - Microsoft_VC90_CRT_x86.msm

Pour une application 64 bits, vous devez utiliser - Microsoft_VC90_MFC_x86_64.msm - Microsoft_VC90_CRT_x86_64.msm

Malheureusement l'auto-enregistrement cause beaucoup de problèmes, ce que vous devez faire est d'ajouter manuellement les entrées de registre requises dans le projet d'installation. (L'outil 'heat' de WiX fournit un moyen très simple de capturer ces informations, bien que si vous avez écrit la DLL, vous devriez déjà connaître les entrées requises). Le vrai problème avec l'auto-inscription est que si elle échoue, alors l'installation meurt. Le problème le plus évident est que si votre DLL nécessite des modules supplémentaires pour terminer l'auto-enregistrement et qu'ils sont en cours d'installation en même temps vous ne pouvez pas garantir que le système les trouvera présents pour l'auto-enregistrement à compléter.

Questions connexes