2013-03-08 62 views
2

我在刻錄時帶有「安裝桌面圖標」複選框的自定義用戶界面。我的MSI(也是使用WiX創建的)我有和Burn一樣的東西。問題是刻錄似乎設置複選框值爲01(通過MsiProperty),而我的MSI預計NULLNOT NULL。如果您嘗試通過Burn中的複選框值發送,則MSI將始終將其評估爲NOT NULL。我發現,我可以編輯我的WiX的項目和改變:WiX - 將Burn UI中的複選框值傳遞給MSI

<Condition>DESKTOP_ICONS</Condition> 

到:

<Condition>DESKTOP_ICONS = 1</Condition> 

,這將解決這個問題。但是有沒有任何方法讓Burn根據複選框的值向MSI傳遞NULL或NOT NULL?

回答

0

燒傷會將「真」和「檢查」視爲「1」和「0」爲假。但是,您可以在MSI中創建一個將數字屬性轉換爲「NULL」的自定義操作。它會是這個樣子:

<SetProperty Id="NULL" Value="1" After="AppSearch">DESKTOP_ICONS = 1</SetProperty> 

現在Property命名爲「NULL」(這是一個非常有趣的名稱,屬性,恕我直言)如果DESKTOP_ICONS屬性設置爲「1」將被定義。

+0

感謝您的關注。我可以看到如何編輯MSI將允許Burn複選框值傳遞給MSI,但我想避免編輯MSI - 看起來這是不可能的。 看待這個另一種方式是,如果你有,你想通過命令行來設置的邏輯屬性將是: 'MSIEXEC/I my.msi MYVAR = 1' ,然後反向,即有'MYVAR'未定義,它會是: 'msiexec/i my.msi MYVAR =「」' 您可以實現第一個與燒傷,但不是第二個據我所知 - 不是如果你想控制它帶有Burn's UI中的複選框。 – 2013-03-08 17:43:44

+0

你是對的。 – 2013-03-08 17:58:06