如何使用默认命令行发送 Wix 创建的 MSI

问题描述

我们有一个名为 product.msi 的 MSI,其中包含一组功能。为了方便用户(并为其他用户隐藏功能),我们有一个命令行来选择 MSI 中的可见功能

task = BashOperator(
    task_id="task_C",bash_command="echo hello world",trigger_rule="all_done",dag=dag
)

到目前为止,我看到我们可以使用 wix 包为每种情况创建一个 Exe 安装程序并在内部传递命令行

Msiexec /I Product.msi featureset = a
Msiexec /I Product.msi Featureset = b

这很有效,使用“displayInternalUI”选项,我们应该可以访问 MSI 的完整内部 UI。无论如何,这个捆绑包是我们想要避免的开销。有没有替代方法来处理这个问题? 当前的计划“B”是多次编译 wsx 文件并直接在功能集中更改可见性。这将导致多个 MSI 文件

解决方法

我所知道的在一个客户一个客户的基础上烘焙自定义默认值而无需他们知道任何事情的最好方法是构建不同版本的 msi 并相应地分发。如果它非常具体,例如 API URI 或许可证密钥或其他东西,您可以在您的网站中以编程方式执行此操作。打开数据库,执行数据库更新并保存,然后退出 MSI 并将其提供给该用户。