代码之家  ›  专栏  ›  技术社区  ›  KublaKhan

从捆绑的MSI设置WiX burn引导程序变量?

  •  1
  • KublaKhan  · 技术社区  · 7 年前

    我们有一个burn bootstrapper包,它安装了一系列先决条件,启动了主安装程序,然后默默地运行了几个扩展安装程序。我们最近不得不在安装包中添加几个新组件,这两个组件都需要从安装早期发布的其他产品中收集的配置信息。所以基本上:

    1. 包2已添加到我们的包中。它还需要服务用户和密码,与包1相同。
    2. 包3已添加到我们的包中。它还需要服务用户和密码,与包1相同。

    我们希望不必让用户分别三次配置相同的信息。我们看到的一个可能的解决方案是编写我们自己的WiX引导程序应用程序,但这似乎相当繁琐。我们考虑的另一种可能性是,可能有一种方法让package one调用一个自定义操作,该操作设置burn变量的值。然后,我们可以调用包2和包3的安装程序,并将burn变量作为静默安装命令行的一部分传入。有办法做到这一点吗?如果是这样,它将涉及什么?

    1 回复  |  直到 7 年前
        1
  •  0
  •   KublaKhan    7 年前

    我们最终找到了解决方案,利用 extended bootstrapper application 来自尼尔·斯莱特霍姆。这允许在引导程序中创建自定义操作。我们创建了一个WiX burn自定义操作,它在OnDetect中启动一个单独的线程。该线程打开一个命名管道并侦听要发送的变量名称和值对:当它获得这样一对时,它使用引擎的SetVariableValue命令来设置值。在被调用的安装中,我们创建了一个自定义操作,该操作连接到命名管道,并根据它收集的内容跨变量名和值发送。变量的新值成功地传递给后续安装,但是在启动任何安装之前都会评估安装条件,因此这些条件不能使用其值由安装设置的变量。