如何使用WiX引导程序检查是否已安装Visual C ++ 2013可再发行组件?

时间:2014-05-23 15:08:29

标签: wix bootstrapper redistributable visual-c++-2013

我正在尝试为WiX安装程序创建一个引导程序。我需要安装VC ++ 2013可再发行组件包(适用于x86和x64平台)。如果已安装这些软件包,我想跳过这些软件包的安装。为此,我为每个包添加了product.xml的下一个元素:

<InstallChecks>
  <MsiProductCheck
    Property="IsMsiInstalled"
    Product="{?????????????????????????}"/> 
</InstallChecks>

<Commands>
  <Command PackageFile="vcredist_2013_x86.exe">
    <InstallConditions>
      <BypassIf Property="IsMsiInstalled" Compare="ValueGreaterThan" Value="0"/>

所以问题是:产品代码应该是什么?

在Google没有帮助我之后,我尝试提取vcredist_2013_x86.exe并查看msi文件属性,但这是另一个问题。在使用7Zip提取它之后,我只得到一堆奇怪名字的文件,例如:&#34; 0&#34;,&#34; u0&#34;,&#34; u1&#34;,&#34; u2&#34 ;等文件&#34; 0&#34;原来是Burn清单。它包含产品代码:for x86:{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}和x64:{A749D8E6-B613-3BE3-8F5F-045C84EBA29B}。所以我试着用它们但没有运气。尽管安装了软件包,MsiProductCheck仍返回-1。

然后我查看了HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall注册表项(我在Win8.1上工作)发生了什么变化。安装期间添加的密钥和卸载后删除的密钥不同:x86为{ce085a78-074e-4823-8dc1-8a721b94b76d},x64为{7f51bdb9-ee21-49ee-94d6-90afc321780e}。但他们也没有与MsiProductCheck合作。即使安装了它们,它的结果仍然是-1(未知产品)。

所以我现在绝望了。我唯一的想法是使用RegistryCheck而不是MsiProductCheck并检查卸载中的密钥。但我想知道这里有什么问题。 VC ++ 2013可再发行组件应使用哪些产品代码?为什么在软件包安装过程中添加的唯一密钥不适用于MsiProductCheck

0 个答案:

没有答案