2011-06-15 2 views
1

J'utilise un contrôle Active-X tiers qui nécessite l'installation d'une certaine version de MFC42.dll sur le système de l'utilisateur.Utilisez mfc42.dll comme enregistrement gratuit COM?

J'essaye d'ajouter le support pour des installations non-admin de mon produit, et devoir installer par exemple. mfc42.dll dans un dossier système et enregistrez-le évidemment rend cela impossible. La troisième partie Active-X est utilisée comme COM sans inscription en utilisant un fichier manifeste, et je me demandais s'il serait possible de faire la même chose pour MFC42.dll et MSVCRT.DLL et de les stocker dans l'application dossier? Quelqu'un a essayé ça?

Répondre

2

Ce n'est pas possible. MSVCRT et MFC42.dll ne sont pas des objets COM ou même des assemblys win32, et ne sont donc pas accessibles en utilisant COM sans reg.

Vous pouvez installer mfc42.dll et msvcrt.dll app-local. Le système favorisera le répertoire de l'application sur les copies du système 32.

(voir http://msdn.microsoft.com/en-us/library/ms682586(v=VS.85).aspx pour plus de détails sur la façon dont la liaison DLL se produit).

Vous ne devez pas installer ces DLL sauf très anciens systèmes d'exploitation (pré-Win2k) car sont installés sur chaque version de Windows, à droite et des copies compatibles binaires mises à jour vers Windows 7.

Cependant, même si vous le faites, vous devrez toujours synthétiser un manifeste COM reg-free pour votre contrôle ActiveX et tous les objets COM dont il dépend (tels que proxy/stubs). Le SDK inclut des outils qui peuvent aider à cela, mais si vous n'avez pas de source pour le contrôle ActiveX, il peut être non trivial. Notez également que IE ne peut pas provoquer le chargement de contrôles COM AX sans reg. Ceci n'est possible que dans d'autres hôtes AX tels que ATL ou MFC. Note finale: Vous devez également travailler dur pour éviter de prendre une dépendance sur n'importe quel composant construit sur mfc42 ou msvcrt. Ceux-ci ont été construits avec une très ancienne version de l'ensemble d'outils VS qui manque de nombreuses corrections de bogues importantes et mises à jour de sécurité. Et le jeu d'outils VC6 qui les vise (à partir de 1998) n'a pas été pris en charge depuis longtemps.

Martyn