【问题标题】:Using WiX Burn to Select Which .msi's to Install/Modify/Uninstall使用 WiX Burn 选择要安装/修改/卸载的 .msi
【发布时间】:2013-04-24 02:47:19
【问题描述】:

我正在查看此处提供的解决方案:

WiX Burn - Determine what items are already installed

但我不明白这对于“修改”刻录屏幕(当有人决定删除某个 .msi 时)如何工作。

在卸载/修改页面出现时查看 Burn .log(我将描述是否选中复选框的变量称为“Checkbox1”到“Checkbox6”):

[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox1' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox2' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox3' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox4' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox5' to value '1'
[171C:1034][2013-04-23T11:49:24]i000: Initializing numeric variable 'Checkbox6' to value '1'

(等等)

[171C:1034][2013-04-23T11:49:24]i100: Detect begin, 3 packages
[171C:1034][2013-04-23T11:49:24]i000: Setting string variable 'NETFRAMEWORK40' to value '1'
[171C:1034][2013-04-23T11:49:24]i052: Condition 'NETFRAMEWORK40' evaluates to true.
[171C:1034][2013-04-23T11:49:24]i101: Detected package: NetFx40Redist, state: Present, cached: None
[171C:1034][2013-04-23T11:49:24]i101: Detected package: Setup, state: Present, cached: Complete
[171C:1034][2013-04-23T11:49:24]i101: Detected package: Setup1, state: Present, cached: Complete
[171C:1034][2013-04-23T11:49:24]i199: Detect complete, result: 0x0

所以,这让我想知道,各种 .msi 的“检测”结果存储在哪里?为什么不能将它们存储到我自己的变量“Checkbox1”中,我以后用它来设置复选框的值,不管它是否被选中?

作为一个更基本的问题,Burn 的这种使用模式难道不是标准 UI 应该很好支持的关键使用模式之一吗...

【问题讨论】:

    标签: wix installation burn


    【解决方案1】:

    您可以通过设置包的InstallCondition 属性来控制是否应安装包。例如,如果Checkbox1 被确定是否应该安装Msi1,你的链可能有:

    <MsiPackage Id='Msi1' InstallCondition='Checkbox1' SourceFile='path\to\msi1.msi' />
    

    您可能希望定义您的 Checkbox1 变量,使其保持其值:

    <Variable Name='Checkbox1` Value='1' Persisted='yes' />
    

    注意:默认情况下假定应安装Msi1,因为该值默认为'1'

    剩下的唯一事情就是将您的Checkbox1 绑定到 wixstdba 中的 UI。您可以通过覆盖主题文件并将复选框添加到使用Checkbox1 作为控件的@IdOptions 页面来做到这一点。

    【讨论】:

    • 正是我想要的,谢谢!我从 wixextba.codeplex.com 开始有一个非常好的用户界面 - 我只是在这里或那里添加一些小改动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2019-05-18
    相关资源
    最近更新 更多