【问题标题】:how to check visual c++ 2013 is installed or not in bootstrapper(wix)?如何检查引导程序(wix)中是否安装了visual c++ 2013?
【发布时间】:2017-08-17 10:28:51
【问题描述】:

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

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

目前它会一直安装,不管它是否安装,我如何检查它是否安装?

【问题讨论】:

  • 为什么会出现这个问题?当然,vcredist 在重新运行时会做正确的事情。
  • 我认为它每次都重新安装,安装过程需要太多时间

标签: installation wix windows-installer wix3.6


【解决方案1】:

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

<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对应的key,复制key名称,也就是上面代码中需要插入的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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多