我正在使用Burn作为安装程序的引导程序,我需要将几个参数传入MSI。
我知道这样做的方法是使用MsiProperty
元素,我遇到的问题是显示用于捕获这些属性的UI。我知道我可以通过托管引导程序应用程序主机创建一个完全自定义的UI,但是这对于对引导程序进行相对较小的调整实现了很多工作。
我发现this blog article描述了如何进行基本的UI自定义,并想知道是否可以修改Burn UI以包含一个简单的复选框/文本框(其值用于设置Burn变量,所以我可以用类似的方式将它传递给我的MSI),还是我需要使用托管的引导程序应用程序主机呢?
答案 0 :(得分:33)
我无法在任何地方找到任何相关的文档,但是通过源代码进行一些实验+阅读可以看出这是相当简单的 - 只需将控件的Name
(例如Checkbox)设置为一个Burn变量(不是一个WiX变量 - 它们是不同的),就像这样(有关放置此位置的更多信息,请参阅Burn UI Customisations)
<Checkbox Name="MyCheckBox" ...>Hello, checkbox</Checkbox>
如果您愿意,可以在捆绑包下方定义刻录变量,将其初始化为某个值(使用1表示“勾选”,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。