【问题标题】:Customising the WiX Burn theme with additional inputs使用附加输入自定义 WiX Burn 主题
【发布时间】:2012-09-01 15:10:48
【问题描述】:

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

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

我发现 this blog article 描述了如何进行基本的 UI 自定义,并想知道是否可以修改 Burn UI 以包含一个简单的复选框/文本框(然后使用其值来设置 Burn 变量,以便我可以通过MSI),还是我需要使用托管引导程序应用程序主机?

【问题讨论】:

    标签: wix windows-installer bootstrapper burn


    【解决方案1】:

    我无法在任何地方找到任何关于此的文档,但一点点实验 + 阅读源代码表明这相当简单 - 只需将控件(例如复选框)的 Name 设置为 Burn 的名称变量(不是 WiX 变量 - 它们是不同的),就像这样(请参阅Burn UI Customisations 了解有关放置位置的更多信息)

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

    如果您愿意,可以在捆绑包下定义一个 burn 变量以将其初始化为某个值(使用 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。

    【讨论】:

    • 我也使用这种方法——它有效。可以安全地接受这个作为答案:)
    • 很好的帮助,谢谢,但是我将 SOMEPROPERTY="" 传递给 MSI,直到我在 中的
    • 此解决方案仅适用于复选框还是对 EditBox 也有效?我在通过 EditBox 设置变量值时遇到问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2017-12-25
    相关资源
    最近更新 更多