已安装VSTO x64运行时但无法找到

inv*_*nva 2 .net registry 64-bit wix 32bit-64bit

我创建了一个WiX安装程序,为Windows 2010部署了一个添加.目标系统目前安装了x64 Win&Office.我走过几个微软网站告诉我,我需要的不仅仅是x64安装程序和运行时(因为加载加载到当前运行的单词的过程中).此安装程序使用以下语句检查VSTO Runtime是否存在:

<?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>
Run Code Online (Sandbox Code Playgroud)

实际上它适用于我的安装程序的x86版本,但是在x64模式下构建,它无法在注册表中随时找到x64条目(即使安装了运行时).我已经尝试卸载并重新安装运行时(重新启动)但它不起作用.

我也删除了检查以安装我的Add In,但它没有加载然后实际上.

因此我的问题是,如果有任何已知的错误问题或我使用了错误的注册表项?

Pet*_*lin 5

在x64系统上,WoW64应用程序被透明地重定向到Wow6432Node注册表的节点,因此它们实际上会查找HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSTO Runtime Setup它所在的键.但真正的x64应用程序会查看真实HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSTO Runtime Setup节点,而关键是,当然不存在.这很可能导致安装程序失败.因此,对于x64安装程序,您需要指定带有Wow6432Node路径部分的完整节点.

这称为注册表反射,在此处详细介绍.