我创建了一个具有以下结构的Wix安装程序
现在两个MSI都需要收集数据库的信息。
我的要求是,如果我从MSI1收集数据库信息,我想从Bootstrapper将该信息传递给MSI2(因为MSI1用户将从Bootstrapper中选择MSI2)
我们不希望最终用户一次又一次地提供此数据库信息。
请注意,我们无法从Bootstrapper本身收集数据库信息,因为用户可能会转到安装程序源并直接执行MSI1或MSI2。
任何人都知道我们如何在Bootstrapper中调用变量值以及从该Bootstrapper调用MSI?
答案 0 :(得分:1)
在安装过程中将该信息写入知名的注册表位置。
Here's Rob编写的“记住我模式”博客文章的资源。我知道仅仅链接一篇未来可能不存在的博客文章是不好的做法,但我也不想只复制大部分内容。
基本思想是将用户在运行时定义的属性保存到注册表中。再次运行安装程序时,您可以尝试读取该注册表位置并加载以前运行的安装程序中的属性,以便您已经知道用户将要编写的内容。
在这种情况下,您的第二个安装程序将知道第一个安装程序将db信息写入的众所周知的注册表位置。现在,第二个安装程序可以在以后运行时读取此信息,并在安装过程中使用它,这意味着客户无需为两个安装重新输入相同的信息。
您可以将其与自定义操作结合使用,以对敏感信息进行编码,并在运行时对其进行解码。这也是记住产品安装目录的常用技术,因为这是用户在运行时通常会更改的内容。
<小时/> 我重新阅读了这个问题,并意识到从引导程序获取信息并不是你可以做的事情,但无论如何我都会把这部分答案留在这里。 [我认为您可以在引导程序中收集信息并将其传递给MSI。只需在安装过程中将该信息写入注册表位置,如果用户仅在MSI中运行,则可以在安装时读取该信息。
或者,您可以更新引导程序的UI以收集此信息并将其传递给两个安装程序。这需要对引导程序应用程序如何工作以及如何生成其UI和存储属性进行一些研究。同样,您应该使用remember me技术从注册表中读取已输入的属性(如果它们存在),这样您就可以在安装的后续运行中预先填充具有先前值的字段。