在 Wix Managed Bootstrapper 应用程序中获取包 InstallCondition
Getting Package InstallCondition In Wix Managed Bootstrapper Application
我有一个包含多个包的 Wix 包。几个包是相互排斥的。我的意思是它们都包含在内,因为一个需要安装在 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 的计算结果是真还是假
但最重要的是,我想确保我的自定义 BA 可以遵守捆绑包中声明的内容,以及允许在目标系统上安装哪些软件包。
在运行期间,将有一个名为 BootstrapperApplicationData.xml 的文件。该文件将包含有关每个包的信息,包括 InstallCondition
(不确定何时添加,可能需要 v3.10.3)。您将能够将每个条件的值传递给引擎的 EvaluateCondition
方法以确定它是真还是假。
我有一个包含多个包的 Wix 包。几个包是相互排斥的。我的意思是它们都包含在内,因为一个需要安装在 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 的计算结果是真还是假
但最重要的是,我想确保我的自定义 BA 可以遵守捆绑包中声明的内容,以及允许在目标系统上安装哪些软件包。
在运行期间,将有一个名为 BootstrapperApplicationData.xml 的文件。该文件将包含有关每个包的信息,包括 InstallCondition
(不确定何时添加,可能需要 v3.10.3)。您将能够将每个条件的值传递给引擎的 EvaluateCondition
方法以确定它是真还是假。