首页 > 解决方案 > 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>

标签: wixburnwix3

解决方案


推荐阅读