13

我正在考虑使用 Burn 作为安装程序的引导程序,我需要将几个参数传递给 MSI。

我知道这样做的方法是使用MsiProperty元素,我遇到的问题是显示 UI 以捕获这些属性。我知道我可以通过托管引导程序应用程序主机创建一个完全自定义的 UI,但是要对引导程序进行相对较小的调整,这需要做很多工作。

我发现这篇博客文章描述了如何进行基本的 UI 自定义,并想知道是否可以修改 Burn UI 以包含一个简单的复选框/文本框(然后使用其值来设置 Burn 变量,以便我可以将其传递到我的MSI)以类似的方式,还是我需要使用托管引导程序应用程序主机?

4

1 回答 1

34

我在任何地方都找不到任何关于此的文档,但是一些实验+阅读源代码表明这相当简单 - 只需将Name控件(例如 Checkbox)的名称设置为 Burn 变量的名称(不是 WiX 变量- 它们是不同的),就像这样(有关将其放置在何处的更多信息,请参阅刻录 UI 自定义)

<Checkbox Name="MyCheckBox" ...>Hello, checkbox</Checkbox>

如果你喜欢,你可以在你的 bundle 下定义一个 burn 变量,将它初始化为某个值(使用 1 表示“已勾选”,使用 0 表示“未勾选”并带有复选框)

<Variable Name="MyCheckBox" Value="1" />

但是它不是必需的 - 无论如何都会自动为您创建变量。请注意,它必须是 a Variable,而不是 a WixVariable- 这些是不同的。

最后要设置基于此变量的 MSI 属性,添加一个MsiProperty元素作为元素的子MsiPackage元素,如下所示

<MsiPackage Name="MyMsi.msi" ...>
    <MsiProperty Name="SOMEPROPERTY" Value="[MyCheckBox]" />
</MsiPackage>

MSI 属性“SOMEPROPERTY”的值将根据复选框的选中状态设置为 0 或 1。

于 2012-09-07T19:23:29.090 回答