如何在bootstraper(wix)中检查condtiotion进行版本检查?

时间:2017-08-16 10:45:38

标签: installation wix windows-installer install wix3.6

我正在使用bootstraper来安装VC ++和.net框架,

<?xml version="1.0" encoding="UTF-8"?>
  <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
 <Bundle Name="Engage" Version="1.0.0.0" Manufacturer="my Corporation" UpgradeCode="d7d559b1-3388-4275-91e2-d8d44d2f02db">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
  <!-- TODO: Define the list of chained packages. -->
  <PackageGroupRef Id="Netfx45FullPackage" />
  </Chain>
 </Bundle>
 <Fragment>
<PackageGroup Id="Netfx45FullPackage">
  <ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\NDP452-x86-x64ENU.exe"  />
  <ExePackage Id="VC2013" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile=".\vcredist_x862013.exe"  />

  <MsiPackage Id="MyProg" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="D:\Projects\Crimson\engage.client\EngageSetupCreator\bin\Debug\EngageSetupCreator.msi" />
  </PackageGroup>
  </Fragment>
</Wix>

目前iam安装这两个而不检查任何条件,我该怎么做才能检查vc ++和.netframework的相同版本是否存在,如果存在则跳过安装?

如果已经存在,则无需再次安装。

1 个答案:

答案 0 :(得分:1)

您需要添加检测条件并使用注册表搜索来获取已安装的版本。

例如:

<?define NetFx451MinRelease = 378675 ?>

<util:RegistrySearchRef Id="NETFRAMEWORK45"/>

<ExePackage Id="NetFx451"
                ...
              DetectCondition="NETFRAMEWORK45 &gt;= $(var.NetFx451MinRelease)"
                ...
              >
</ExePackage>

vc ++相同。