Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 已安装VSTO x64运行时,但可以';找不到_.net_Wix_Registry_64 Bit_32bit 64bit - Fatal编程技术网

.net 已安装VSTO x64运行时,但可以';找不到

.net 已安装VSTO x64运行时,但可以';找不到,.net,wix,registry,64-bit,32bit-64bit,.net,Wix,Registry,64 Bit,32bit 64bit,我创建了一个WiX安装程序,它部署了一个适用于Windows 2010的外接程序。目标系统当前已安装x64 Win&Office。我浏览了几个微软网站,告诉我需要一个以上的x64安装程序和运行时(因为加载项加载到当前word运行的过程中)。 此安装程序使用以下语句检查VSTO运行时是否存在: <?if $(var.Platform)=x64 ?> <?define win64Flag = "yes"?> <?else ?> <?define win64F

我创建了一个WiX安装程序,它部署了一个适用于Windows 2010的外接程序。目标系统当前已安装x64 Win&Office。我浏览了几个微软网站,告诉我需要一个以上的x64安装程序和运行时(因为加载项加载到当前word运行的过程中)。 此安装程序使用以下语句检查VSTO运行时是否存在:

<?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>

=“10.0.30319”或办公时间>=“10.0.21022”]>
实际上,它适用于x86版本的安装程序,但是在x64模式下构建,它在任何时候都无法在注册表中找到x64项(即使安装了运行时)。 我已经尝试卸载并重新安装运行时(使用reboot acutally),但它不起作用

我也删除了检查,以获得我的插件安装,但它没有加载然后acutally


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

在x64系统上,WoW64应用程序会透明地重定向到注册表的
Wow6432Node
节点,因此它们实际上会在注册表中查找类似
HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSTO Runtime Setup
的项。但是真正的x64应用程序需要查看real
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\VSTO运行时设置
节点,而密钥自然不存在。这很可能导致安装程序失败。因此,对于x64安装程序,需要使用
Wow6432Node
path部分指定完整节点


这称为注册表反射。

这是否仅适用于HKLM或每个基键?我有一个红色提示,您可以只为一个用户将正确的加载项注册表项(FriendlyName、LoadBehavior、清单文件位置)放入HKCU。我是否需要将这些键放入WoW6432Node中?@inva仅用于注册表的一部分,请参阅更新的答案。非常感谢,此链接在另一个上下文中帮助了我很多。