2017-10-09 4 views
0
<Property Id="VC2015_X86"> 
    <RegistrySearch Id="VC2015_X86" 
        Root="HKLM" 
        Key="SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\14.0\RuntimeAdditional" 
        Name="Version" 
        Type="raw" 
        /> 
    </Property> 

La propriété est définie par cette recherche. Mais il échoue sur 32 bits parce que la recherche Wow6432Node.Vérification de l'exécution de VC2015 Installé ou non avec Wix Installer mais Archivage pour trouver 32bit ou 64bit

Mais l'élément RegistrySearch dans Wix Doc indique Win64 YesNoType Indique à la recherche de rechercher dans le registre 64 bits lorsque la valeur est 'yes'. Lorsque la valeur est 'non', la recherche apparaît dans le registre 32 bits. La valeur par défaut est basée sur la plate-forme définie par le commutateur -arch sur candle.exe ou la propriété InstallerPlatform dans un projet .wixproj MSBuild: Pour x86 et ARM, la valeur par défaut est 'non'. Pour x64 et IA64, la valeur par défaut est 'oui'.

Si je change cela comme ci-dessous cela fonctionnera sur 32 bits et 64 bits?

<Property Id="VC2015_X86"> 
    <RegistrySearch Id="VC2015_X86" 
        Root="HKLM" 
        Key="SOFTWARE\Microsoft\DevDiv\vc\Servicing\14.0\RuntimeAdditional" 
        Name="Version" 
        Type="raw" 
        /> 
    </Property> 

Répondre

3

Vos modifications sont à mi-chemin. Malgré les indications implicites sur Redistributing Visual C++ Files, je vous recommande de ne pas faire référence directement à la clé Wow6432Node. Au lieu de cela, vous devez utiliser tout ce qui est disponible pour spécifier une vue de registre 32 bits. (Pour mieux visualiser l'idée d'une vue de registre 32 bits, comparez les fichiers C: \ Windows \ System32 \ regedit.exe et C: \ Windows \ SysWow64 \ regedit.exe sur une machine 64 bits.)

Dans votre cas, pour rechercher la présence du redist 32 bits, vous devez spécifier la clé avec son nom de vue 32 bits (Key="SOFTWARE\Microsoft\DevDiv\vc\Servicing\14.0\RuntimeAdditional") et spécifier explicitement Win64="No" pour que la recherche utilise la vue 32 bits du Hive dans une version 32 bits ou 64 bits de votre projet. Si vous souhaitez également trouver la redist 64 bits sur les machines 64 bits, vous devez ajouter une seconde recherche dans une autre propriété et, en fonction de vos besoins pour une génération 32 bits, spécifier explicitement Win64="Yes" ou vous assurer que la recherche est uniquement incluse dans une version 64 bits de votre projet. Les chances sont que vous n'avez pas besoin de rechercher les deux, comme n'importe quel .exe ou .dll donné dépendra d'une seule bitness des redists 32 bits ou 64 bits.