我有一个包含几个包的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"/>
事情按预期工作,因为引擎正确地根据操作系统计划安装。
我遇到的麻烦是我想显示将要安装的软件包列表,我想:
但最重要的是,我想确保我的自定义BA可以遵守捆绑包中声明的内容,只要目标系统上允许安装哪些包。
答案 0 :(得分:2)
在运行时,会有一个名为BootstrapperApplicationData.xml的文件。此文件将包含有关每个包的信息,包括InstallCondition
(不确定何时添加,可能需要v3.10.3)。您将能够将每个条件的值传递给Engine的EvaluateCondition
方法,以确定它是真还是假。