2010-08-25 7 views
4

J'essaie d'obtenir l'exemple Registration-Free Activation of COM Components: A Walkthrough de Microsoft pour l'exécuter sur une machine Windows 7 Professional/64 bits. J'ai téléchargé le programme de démonstration MSDNRegFreeCOM.msi.Objets COM sans enregistrement sur Windows-7/64bit

Je l'ai construit et fonctionne correctement sur ma boîte de dev XP-32 en utilisant VS2008SP1. Mais quand je copie le programme de démonstration de travail de 32bit à ma machine de Windows 7, il échoue avec une erreur 0x80040154. Cette erreur signifie que la classe n'est pas enregistrée. Cependant, ne pas enregistrer explicitement cet objet avec Windows est le point de cet objet com particulier, alors ne me dites pas d'enregistrer cet objet avec Windows.

Quelqu'un sait-il quelque chose de spécial qui doit être fait avec ceci pour Windows 7?


EDIT par Cristian Adam commentaires ci-dessous, je me sers d'un fichier manifeste externe (client.exe.manifest). Cependant, quand je copie celui de l'exemple, cela ne fonctionne pas pour moi. Le code est -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" 
     manifestVersion="1.0"> 
     <assemblyIdentity 
      type = "win32" 
      name = "client" 
      version = "1.0.0.0" /> 
    <dependency> 
     <dependentAssembly> 
        <assemblyIdentity 
         type="win32" 
         name="SideBySide" 
         version="1.0.0.0" /> 
     </dependentAssembly> 
    </dependency> 
</assembly> 

Répondre

4

Windows 7 lit d'abord le fichier manifeste interne et le manifeste externe ensuite. Windows XP fait l'inverse.

http://blogs.msdn.com/b/junfeng/archive/2009/05/11/internal-manifest-vs-external-manifest.aspx

La fusion d'un manifeste externe dans le manifeste interne peut être fait en cours d'exécution (dans une fenêtre "Visual Studio 2008 Command Prompt"):

mt.exe -nologo -manifest client.exe.manifest -updateresource:"client.exe;#1"

+0

C'est vrai, mais si je don N'incluez pas le manifeste externe, il devrait toujours lire le manifeste interne et charger l'objet com de la même manière que sur ma boîte de dev XP. –

+0

Vous venez d'essayer "Activation sans inscription de composants COM \ based \ client.exe" sur Windows 7 et cela a fonctionné. Client.exe n'a aucun manifeste interne, seulement le manifeste externe. –

+0

C'est génial. Cependant, il me manque toujours quelque chose de vraiment simple dans le fichier client.exe.manifest. J'ai copié le contenu du fichier de l'exemple et je n'arrive toujours pas à le charger. Pourriez-vous télécharger le vôtre? –

Questions connexes