如何检查引导程序(wix)中版本检查的条件?

how to check condtiotion for version check in bootstraper (wix)?

我正在使用引导程序安装 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>

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

如果已经存在则无需重新安装。

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

例如:

<?define NetFx451MinRelease = 378675 ?>

<util:RegistrySearchRef Id="NETFRAMEWORK45"/>

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

vc++ 也一样。