3

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

WiX Burn - 确定已安装的项目

但我看不出这对“修改”刻录屏幕(当有人决定删除某个 .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'

(ETC。)

[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 应该很好支持的关键使用模式之一吗?

4

1 回答 1

7

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 联系起来。您可以通过覆盖主题文件并将复选框添加到用作控件的Options页面来执行此操作。Checkbox1@Id

于 2013-04-24T04:53:33.943 回答