我正在尝试使用bootstrapper安装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" />
目前它将始终安装,无论是否安装,我如何检查是否安装?
答案 0 :(得分:2)
在您的捆绑包中,添加以下行:
<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"/>
将{GUID_HERE}标记替换为Visual C ++ 2013的正确GUID。要在具有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"