2017-08-03 60 views
1

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

  1. 软件包1已安装并呈现一个用户界面。它要求服务用户和密码。
  2. 包2已添加到我们的包中。它还需要服务用户和密码,与包1相同。
  3. 包3已添加到我们的包中。它还需要服务用户和密码,与包1相同。

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

回答

0

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