在Wix托管引导程序应用程序中获取程序包InstallCondition

时间:2016-08-13 16:44:20

标签: wix windows-installer burn

我有一个包含几个包的Wix Bundle。一些包是互斥的。我的意思是它们都包括在内,因为一个需要安装在32位机器上,另一个需要安装在64位机器上。为了解决这个问题,我已经定义了一个这样的包组:

<Fragment>
  <PackageGroup Id="Drivers">
    <MsiPackage Id="Driversx64" InstallCondition="VersionNT64" SourceFile="SRC\drivers64.msi" DisplayInternalUI="no" Visible="no" ForcePerMachine="yes" EnableFeatureSelection="yes"/>
    <MsiPackage Id="Driversx86" InstallCondition="NOT VersionNT64" SourceFile=".SRC\drivers32.msi" DisplayInternalUI="no" Visible="no" ForcePerMachine="yes" EnableFeatureSelection="yes"/>
  </PackageGroup>
</Fragment>

然后,在链中我只包含<PackageGroupRef Id="Drivers"/>

事情按预期工作,因为引擎正确地根据操作系统计划安装。

我遇到的麻烦是我想显示将要安装的软件包列表,我想:

  • 从自定义引导程序确定某个程序包是否应该对UI可见,并且可能是它的级别
  • 从自定义引导程序确定程序包的InstallCondition的值是否为true

但最重要的是,我想确保我的自定义BA可以遵守捆绑包中声明的内容,只要目标系统上允许安装哪些包。

1 个答案:

答案 0 :(得分:2)

在运行时,会有一个名为BootstrapperApplicationData.xml的文件。此文件将包含有关每个包的信息,包括InstallCondition(不确定何时添加,可能需要v3.10.3)。您将能够将每个条件的值传递给Engine的EvaluateCondition方法,以确定它是真还是假。