Msbuild 使用Wix安装程序检查VC2015运行时是否已安装,但归档以查找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,默认值为“是” 如果我按如下所示更改此选项,则此选项是否适用于

该属性由此搜索设置。但它在32位上失败,因为WOW6432节点搜索

但是Wix文档中的RegistrySearch元素说 当值为“是”时,Win64 YesNoType指示搜索在64位注册表中查找。当值为“否”时,搜索将在32位注册表中查找。默认值基于-arch开关设置为candle.exe的平台或.wixproj MSBuild项目中的InstallerPlatform属性:对于x86和ARM,默认值为“否”。对于x64和IA64,默认值为“是”

如果我按如下所示更改此选项,则此选项是否适用于32位和64位

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