wix - Burn/Bootstrapping:仅在用户选择时执行 Chainelement
问题描述
我们想要构建一个安装程序,其中包含已作为独立 msi 文件提供的第三方依赖项。一些第三方依赖项是可选的,用户决定是否安装它们。
可以使用Installation Package Bundles捆绑多个独立安装程序,并且没有可选约束,这可以按预期工作。
我们现在的问题是,Bundle 是否允许(可选)“功能”,用户可以选择?
如果没有,一个想法是使用选择/取消选择元素构建自己的 UI 对话,设置变量并使用MsiPackage 元素InstallCondition
的属性中的变量。但我们更愿意创建和维护尽可能少的代码。
目前(并且被剥离),我们的 wix 代码如下所示:
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="ACME Product" Version="1.0.0" Manufacturer="ACME"
UpgradeCode="XXXX">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication
LogoFile="resources/logo_64x64.png"
ShowVersion="yes"
/>
</BootstrapperApplicationRef>
<bal:Condition Message="Requires Windows >= 10">
<![CDATA[VersionNT >= v10.0 AND VersionNT64]]>
</bal:Condition>
<Chain>
<MsiPackage Id="MainProduct" SourceFile="resources/obligatory.msi" Compressed="yes" Vital="yes"/>
<MsiPackage Id="OptionalThirdPartyAppA" SourceFile="resources/optionalA.msi" Compressed="no" Visible="yes"/>
<MsiPackage Id="OptionalThirdPartyAppB" SourceFile="resources/optionalB.msi" Compressed="no" Visible="yes"/>
</Chain>
</Bundle>
</Wix>
解决方案
推荐阅读
- pandas - Pandas 协方差矩阵
- javascript - .match() 和正则表达式的意外输出
- javascript - 如何通过引用调用函数
- f# - Compare values in a list
- laravel - Laravel 网站背后的反向代理和子文件夹?
- android - Disable Preference based on Value of its Dependency (Code Check)
- html - CSS Flexbox or CSS Grid for Header, Sticky Footer and Vertically Aligned Middle Content all together?
- javascript - 我想测试用户输入是否为元音。但是程序每次都显示else输出
- python - 如何在python中删除三个字母并留下重复?
- linux - 使用 EDMA 通过 GPMC 在处理器和 FPGA 之间传输数据