Msbuild 使用Wix安装程序检查VC2015运行时是否已安装,但归档以查找32位或64位
该属性由此搜索设置。但它在32位上失败,因为WOW6432节点搜索 但是Wix文档中的RegistrySearch元素说 当值为“是”时,Win64 YesNoType指示搜索在64位注册表中查找。当值为“否”时,搜索将在32位注册表中查找。默认值基于-arch开关设置为candle.exe的平台或.wixproj MSBuild项目中的InstallerPlatform属性:对于x86和ARM,默认值为“否”。对于x64和IA64,默认值为“是” 如果我按如下所示更改此选项,则此选项是否适用于32位和64位Msbuild 使用Wix安装程序检查VC2015运行时是否已安装,但归档以查找32位或64位,msbuild,wix,64-bit,Msbuild,Wix,64 Bit,该属性由此搜索设置。但它在32位上失败,因为WOW6432节点搜索 但是Wix文档中的RegistrySearch元素说 当值为“是”时,Win64 YesNoType指示搜索在64位注册表中查找。当值为“否”时,搜索将在32位注册表中查找。默认值基于-arch开关设置为candle.exe的平台或.wixproj MSBuild项目中的InstallerPlatform属性:对于x86和ARM,默认值为“否”。对于x64和IA64,默认值为“是” 如果我按如下所示更改此选项,则此选项是否适用于
<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>
您的更改已经完成了一半。尽管有关于的暗示指导,但我建议您避免直接引用Wow6432Node键。相反,您应该使用任何可用的方法来指定32位注册表视图。(为了更好地可视化32位注册表视图的概念,请在64位计算机上比较常规C:\Windows\System32\regedit.exe和C:\Windows\SysWow64\regedit.exe。) 在您的情况下,要查找32位redist的存在,这意味着指定具有32位视图名称的键(
Key=“SOFTWARE\Microsoft\DevDiv\vc\Servicing\14.0\RuntimeAdditional”
),并显式指定Win64=“No”
以便搜索将在项目的32位或64位版本中使用配置单元的32位视图
如果还希望在64位计算机上查找64位redist,则应在另一个属性中添加第二次搜索,并根据您对32位生成的需要,明确指定
Win64=“Yes”
,或确保搜索仅包含在项目的64位生成中。很可能您不需要同时搜索这两个文件,因为任何给定的.exe或.dll都只取决于32位或64位redists的一位。您的更改已经完成了一半。尽管有关于的暗示指导,但我建议您避免直接引用Wow6432Node键。相反,您应该使用任何可用的方法来指定32位注册表视图。(为了更好地可视化32位注册表视图的概念,请在64位计算机上比较常规C:\Windows\System32\regedit.exe和C:\Windows\SysWow64\regedit.exe。)
在您的情况下,要查找32位redist的存在,这意味着指定具有32位视图名称的键(Key=“SOFTWARE\Microsoft\DevDiv\vc\Servicing\14.0\RuntimeAdditional”
),并显式指定Win64=“No”
以便搜索将在项目的32位或64位版本中使用配置单元的32位视图
如果还希望在64位计算机上查找64位redist,则应在另一个属性中添加第二次搜索,并根据您对32位生成的需要,明确指定Win64=“Yes”
,或确保搜索仅包含在项目的64位生成中。很可能您不需要同时搜索这两个文件,因为任何给定的.exe或.dll都只依赖于32位或64位redists的一位
<Property Id="VC2015_X86">
<RegistrySearch Id="VC2015_X86"
Root="HKLM"
Key="SOFTWARE\Microsoft\DevDiv\vc\Servicing\14.0\RuntimeAdditional"
Name="Version"
Type="raw"
/>
</Property>