我已经创建了一个具有以下结构的Wix安装程序
现在,两个MSI都需要收集数据库的信息。
我的要求是,如果我从MSI1收集DB信息,我想从Bootstrapper将该信息传递给MSI2 (在MSI1用户从Bootstrapper中选择MSI2之后)
我们不希望最终用户一次又一次地提供这个数据库信息。
请注意,我们不能从Bootstrapper本身收集数据库信息,因为用户可以转到安装程序源并直接执行MSI1或MSI2。
谁知道如何在Bootstrapper和MSI之间存储变量的值,从Bootstrapper调用吗?
发布于 2016-10-13 20:12:38
在安装过程中将该信息写入著名的注册表位置。
下面是是罗布写的“记住我的模式”博客文章的一个资源。我知道把将来可能不存在的博客链接起来是不好的做法,但我也不想复制其中的大部分。
基本思想是将用户在运行时可能定义的属性保存到注册表中。当您再次运行安装程序时,您可以尝试读取该注册表位置,并从安装程序的前一次运行中加载属性,以便您已经知道用户将要写什么。
在本例中,您的第二个安装程序将知道第一个安装程序将向其写入数据库信息的熟悉注册表位置。现在,第二个安装程序可以在以后运行时读取该信息,并在hte安装期间使用它,这意味着客户不必为两个安装重新输入相同的信息。
您可以将此与自定义操作相结合,对敏感信息进行编码,并在运行时对其进行解码。这也是一种非常常用的技术,用于记住产品的安装目录,因为这是用户在运行时经常更改的内容。
我重新阅读了这个问题,并意识到从引导者那里获取信息不是你可以做的事情,但无论如何,我将把这部分的答案留在这里。我想你可以在引导程序中收集信息并把它传递给MSI。只需在安装过程中将该信息写入注册表位置,如果用户仅从MSI运行,则可以在安装时读取该信息。
或者,您可以更新引导程序的UI以收集此信息并将其传递给两个安装程序。这需要对引导应用程序如何工作以及它如何生成UI和存储属性进行一些研究。同样,如果已经输入的属性存在,您应该使用remember技术从注册表读取这些属性,这样您就可以在安装的后续运行中使用前面的值预填充字段。
https://stackoverflow.com/questions/40014440
复制相似问题