如何检查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" />
目前它总是会安装,无论是否已安装或不,我如何检查它是否安装?
答
在你的包,加上下面几行:
<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"
为什么这是一个问题吗?当然,vcredist重新运行时会做正确的事情。 –
我认为它每次都要重新安装,这需要花费太多时间进行安装过程 –