2010-03-01 3 views
3

Мы использовали CustomizeDlg из библиотеки расширения UI UI для диалогового окна выбора функций, но появилось новое требование, в котором говорится, что кнопка просмотра должна быть отключена, если программное обеспечение обновляется.wix disable directory browse button

Я скопировал диалоговую 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 - это то, что я добавил, которое задано правильно, проблема в том, что даже когда свойство установлено, кнопка обзора все еще включена –

0

Если вы настраиваете атрибут ConfigurableProperty для элемента Feature, который вы пытаетесь установить, он, по-видимому, предотвращает изменение состояния кнопки «Обзор» (или потенциально любого элемента управления, связанного с событием SelectionBrowse). Вы можете изменить состояние, когда оно установлено, по-видимому, поэтому действие hide будет работать, если вы пытаетесь изменить/удалить эту функцию. Я не нашел пути вокруг него; Я не уверен, что это конструктор установщика Windows или что-то в WiX по вине. На данный момент я предполагаю, что первый.

EDIT(первоначально Дэвид Дж Antoine в дополнительном ответе)

Вы должны добавить условие к событию 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> 

К сожалению, я не мог получить кнопку Обзор, чтобы отключить даже при использовании этого. В лучшем случае он был включен, но ничего не сделал при нажатии. Следовательно, я закончил использование кода, чтобы отключить его в обоих случаях, чтобы предотвратить путаницу в пользовательском интерфейсе.