2013-04-24 98 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