2013-04-24 53 views
3

我一直在寻找在这里提出的解决方案:使用维克斯刻录到选择哪个.msi的安装/修改/卸载

WiX Burn - Determine what items are already installed

但我不明白这是怎么了“修改”工作刻录屏幕(当有人决定删除某个.msi时)。

望着刻录.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'中,以后我用它来设置复选框的值,无论它是否被选中?

作为一个更根本的问题,是不是烧应在标准用户界面很好地支持关键使用模式之一,这种使用模式...

回答

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。您可以通过覆盖主题文件并将复选框添加到使用Checkbox1作为控件的@IdOptions页面来完成此操作。

+0

正是我在找的,谢谢!我从http://wixextba.codeplex.com/开始了一个非常好的用户界面 - 我只是在这里或那里添加一些小改动。 – user2313654 2013-04-24 13:33:42