使用额外的输入自定义WiX Burn主题

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

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

我发现this blog article描述了如何进行基本的UI定制,并想知道是否可以修改Burn UI以包含一个简单的复选框/文本框(其值可用于设置刻录变量,以便我可以将其传递到我的MSI中)以类似的方式,或者我需要使用托管引导程序应用程序主机?

我不能在任何地方找到任何文档,但是通过源代码读取一点实验可以看出,这是相当简单的 – 只需将控件的名称(例如“复选框”)设置为Burn变量的名称(而不是WiX变量) – 他们是不同的),像这样(见 Burn UI Customisations更多信息在哪里放这个)
<CheckBox Name="MyCheckBox" ...>Hello,checkBox</CheckBox>

如果你喜欢,你可以在你的包下面定义一个刻录变量,将其初始化为一些值(对于“ticked”使用1,对于“uncicked”,使用复选框选择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.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...