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

时间:2017-08-03 17:40:12

标签: wix burn

我们有一个刻录引导程序包,它安装了许多先决条件,启动了我们的主要安装,然后静默运行一些扩展安装程序。我们最近不得不在安装包中添加几个新组件,这两个组件都需要从早期安装中推出的其他产品中收集的配置信息。所以基本上:

  1. 安装了包1并显示了一个UI。它要求服务用户和密码。
  2. 套餐2已添加到我们的套装中。它还需要服务用户和密码,与包1相同。
  3. 套餐3已添加到我们的套装中。它还需要服务用户和密码,与包1相同。
  4. 我们希望不必让用户三次分别配置相同的信息。我们看到的一个可能的解决方案是编写我们自己的WiX引导程序应用程序,但这看起来相当繁重。我们考虑的另一种可能性是,有一种方法可以让包一调用自定义操作来设置刻录变量的值。然后,我们可以使用作为其静默安装命令行的一部分传入的burn变量来调用包和第二个安装程序。有没有办法做到这一点?如果是这样,它会涉及什么?

1 个答案:

答案 0 :(得分:0)

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