如何检查引导程序(wix)中是否安装了 visual c++ 2013?

how to check visual c++ 2013 is installed or not in bootstrapper(wix)?

我正在尝试使用引导程序安装 visual c++ 2013,因此在 bundle 标签内我使用以下代码安装 visual c++ 2013,如下所示

 <ExePackage Id="VC2013" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\vcredist_x862013.exe"  />

目前无论是否安装都会一直安装,请问如何查看是否安装?

在您的包中,添加以下行:

<util:RegistrySearch Id="VCRedistTest64" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID_HERE}" Result="exists" Variable="VCR64Present" Win64="yes"/>
<util:RegistrySearch Id="VCRedistTest32" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID_HERE}" Result="exists" Variable="VCR32Present" Win64="no"/>

用 Visual C++ 2013 的正确 GUID 替换 {GUID_HERE} 标签。要找到它,在已经安装了 Visual C++ 的机器上,打开注册表并导航至:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\

在这个键中会有若干个子键,每个子键对应当前安装的一个软件包。找到Visual C++ 2013对应的键,复制键名,就是上面代码中需要插入的GUID。

最后,将您的 Exepackage 元素更改为:

<ExePackage Id="VC2013" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\vcredist_x862013.exe"  DetectCondition="(VCR32Present OR VCR64Present)/>

这将允许 Windows 检测是否已安装 Visual C++,并防止安装程序重新安装它。

此外,将以下内容添加到顶级 "Wix" 标签中:

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"