如何检查visual C++ 2013是否安装在bootstrapper(wix)中?

如何检查visual C++ 2013是否安装在bootstrapper(wix)中?

问题描述:

我试图安装Visual C++ 2013与引导程序,所以捆绑标签中,我使用下面的代码安装Visual C++ 2013如下如何检查visual C++ 2013是否安装在bootstrapper(wix)中?

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

目前它总是会安装,无论是否已安装或不,我如何检查它是否安装?

+0

为什么这是一个问题吗?当然,vcredist重新运行时会做正确的事情。 –

+0

我认为它每次都要重新安装,这需要花费太多时间进行安装过程 –

在你的包,加上下面几行:

<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}标签与正确的GUID为Visual C++ 2013年为了找到这个,一台机器上使用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++,并会阻止你的安装者重新安装。

此外,添加以下到*“维克斯”标签:

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