2010-03-01 53 views
3

我們一直使用wix UI擴展庫中的CustomizeDlg作爲功能選擇對話框,但出現了一項新要求,即如果軟件正在更新,應該禁用瀏覽按鈕。wix禁用目錄瀏覽按鈕

所以我複製對話框WXS從庫文件,以定製它,改變了代碼如下

<Control Id="Tree" Type="SelectionTree" X="25" Y="85" Width="175" Height="115" Property="_BrowseProperty" Sunken="yes" TabSkip="no" Text="!(loc.CustomizeDlgTree)" /> 
    <Control Id="Browse" Type="PushButton" X="294" Y="210" Width="66" Height="17" Text="!(loc.CustomizeDlgBrowse)"> 
     <Publish Event="SelectionBrowse" Value="BrowseDlg">1</Publish>   
     <Condition Action="hide">Installed</Condition> 
     <Condition Action="disable">UPGRADE = 1</Condition> 
    </Control> 

問題是,瀏覽按鈕永遠不被禁用,能有人指出我在做什麼這裏錯了嗎?

千恩萬謝

回答

0

按照Windows Installer Property Reference,根本沒有UPGRADE財產。要驗證這是問題,用命令行日誌選項像這樣運行安裝程序:

msiexec /lvx* logfile.txt /i myinstaller.msi 

日誌文件會顯示在升級過程中使用的所有屬性的值。

你正在尋找的條件可能是

<Condition Action="disable">UPGRADINGPRODUCTCODE</Condition> 

,但我沒有測試它。

+0

UPGRADE屬性是我添加的東西,它被正確設置,問題是即使設置了屬性,瀏覽按鈕仍然處於啓用狀態 – 2010-03-02 15:54:54

0

如果您要爲要安裝的Feature元素設置ConfigurableProperty屬性,它似乎阻止修改瀏覽按鈕(或潛在的與SelectionBrowse事件關聯的任何控件)的狀態。您可以修改表面上安裝的狀態,這就是爲什麼如果您嘗試更改/刪除功能,隱藏操作將起作用。我沒有找到解決辦法。我不確定這是Windows安裝程序構造還是WiX中的錯誤。我現在假設前者。

編輯(最初由David J.安東尼在附加應答)

你有一個條件添加到SelectionBrowse事件以及瀏覽按鈕本身。使用原來的瀏覽按鈕的代碼,它會是這個樣子:

<Control Id="Browse" Type="PushButton" X="294" Y="210" Width="66" Height="17" Text="!(loc.CustomizeDlgBrowse)"> 
    <Publish Event="SelectionBrowse" Value="BrowseDlg">NOT Installed AND NOT (UPGRADE = 1)</Publish>   
    <Condition Action="hide">Installed OR UPGRADE = 1</Condition> 
    <Condition Action="disable">Installed OR UPGRADE = 1</Condition> 
</Control> 

不幸的是,使用這個時候我不能讓瀏覽按鈕來禁用均勻。最好的是,它被啓用,但點擊時什麼也沒做。因此,我最終在兩種情況下都使用代碼來禁用它,以防止UI中的混淆。