2012-05-24 3 views
2

J'ai créé un programme d'installation WiX en déployant un ajout pour Windows 2010. Le système cible est actuellement x64. Win & Office installé. J'ai parcouru plusieurs sites microsoft me disant que je vais avoir besoin d'un installateur x64 & runtime (car l'ajout de charges dans le processus de mot courant en cours d'exécution). Ce programme d'installation vérifie l'existence de VSTO Runtime en utilisant cette déclaration:Le moteur d'exécution VSTO x64 a été installé mais est introuvable

<?if $(var.Platform)=x64 ?> 
<?define win64Flag = "yes"?> 
<?else ?> 
<?define win64Flag = "no"?> 
<?endif ?> 

<Property Id="VSTORUNTIMEREDIST"> 
    <RegistrySearch Id="VSTORuntimeRedist" Root="HKLM" Key="SOFTWARE\Microsoft\vsto runtime setup\v4R\VSTORFeature_CLR40" Name="Version" Type="raw" Win64="$(var.win64Flag)"/> 
</Property> 

<Property Id="OFFICERUNTIME"> 
    <RegistrySearch Id="OfficeRuntime" Root="HKLM" Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4" Name="Version" Type="raw" Win64="$(var.win64Flag)"/> 
</Property> 
<Condition Message="The Visual Studio 2010 Tools for Office Runtime is not installed. Please install the Office Runtime."> 
    <![CDATA[Installed OR VSTORUNTIMEREDIST>="10.0.30319" OR OFFICERUNTIME>="10.0.21022"]]> 
</Condition> 

En fait, il travaille pour x86 version de mon programme d'installation, mais construire en mode 64 bits, il est incapable de trouver l'entrée x64 dans le registre à tout heure (même si le runtime est installé). J'ai déjà essayé de désinstaller et de réinstaller le moteur d'exécution (avec redémarrage de manière active) mais cela n'a pas fonctionné.

J'ai également retiré le chèque pour que mon AddIn soit installé mais il ne se charge pas correctement. Par conséquent ma question est, s'il y a un problème de bogue connu ou j'ai utilisé la clef de registre fausse?

Répondre

5

Sur les systèmes x64, les applications WoW64 sont redirigées de manière transparente dans le nœud Wow6432Node du registre, de sorte qu'elles recherchent en fait une clé telle que HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSTO Runtime Setup là où elle se trouve. Mais les vraies applications x64 se tournent vers le vrai noeud HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSTO Runtime Setup, et la clé n'y est naturellement pas présente. Cela provoque probablement l'échec de votre programme d'installation. Par conséquent, pour un programme d'installation x64, vous devez spécifier le nœud complet avec la partie de chemin Wow6432Node.

Ceci est appelé Registry Reflection et covered in details here.

+0

est-ce que cela s'applique uniquement à HKLM ou à chaque clé de base? J'ai rouge que l'on pourrait placer les bonnes entrées de registre AddIn (FriendlyName, LoadBehaviour, Manifest file location) dans le HKCU pour un seul utilisateur. devrais-je mettre ces clés puis explicite dans le WoW6432Node? – inva

+0

@inva seulement à certaines parties du Registre, voir la mise à jour de la réponse. –

+0

Merci beaucoup, ce lien m'a beaucoup aidé dans un autre contexte. – inva

Questions connexes