我正在使用Burn作为安装程序的引导程序,我需要将几个参数传递给MSI。
我知道做到这一点的方法是使用MsiProperty
元素,我遇到的问题是显示UI来捕获那些属性。我知道我可以通过托管的引导程序应用程序主机创建一个完全自定义的UI,但是事实证明,要对引导程序进行较小的调整就需要大量的工作。
我发现this blog article描述了如何进行基本的UI定制,并想知道是否可以修改Burn UI以包括一个简单的复选框/文本框(然后使用其值来设置Burn变量,以便将其传递给我MSI),还是我毕竟需要使用托管的引导程序应用程序主机?
最佳答案
我在任何地方都找不到任何文档,但是经过一点试验+阅读源代码,我们发现这非常简单-只需将控件的Name
(例如Checkbox)设置为Burn变量的名称即可(不一个WiX变量-它们是不同的),就像这样(有关放置位置的更多信息,请参见Burn UI Customisations)
<Checkbox Name="MyCheckBox" ...>Hello, checkbox</Checkbox>
如果愿意,您可以在捆绑软件下定义一个burn变量,以将其初始化为某个值(使用复选框将其标记为“勾选”,将0标记为“未勾选”)
<Variable Name="MyCheckBox" Value="1" />
但是,它不是必需的-无论如何,变量将自动为您创建。请注意,它必须是
Variable
,而不是WixVariable
-这些是不同的。最后,要基于此变量设置MSI属性,请添加
MsiProperty
元素作为MsiPackage
元素的子元素,如下所示<MsiPackage Name="MyMsi.msi" ...>
<MsiProperty Name="SOMEPROPERTY" Value="[MyCheckBox]" />
</MsiPackage>
然后,根据复选框的选中状态,MSI属性“ SOMEPROPERTY”的值将设置为0或1。
关于wix - 使用其他输入来自定义WiX Burn主题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12323106/