wix отключить кнопку просмотра каталога - PullRequest
3 голосов
/ 01 марта 2010

Мы использовали 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>

проблема в том, что кнопка обзора никогда не отключается, кто-то может указать, что я здесь не так делаю?

большое спасибо

Ответы [ 2 ]

0 голосов
/ 21 июля 2010

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

РЕДАКТИРОВАТЬ (первоначально Дэвид Дж. Антуан в дополнительном ответе)

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

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

0 голосов
/ 01 марта 2010

Согласно справочнику о свойствах установщика Windows , свойства UPGRADE просто нет.Чтобы убедиться, что это проблема, запустите ваш установщик с параметрами ведения журнала из командной строки, например:

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

В файле журнала будет показано значение всех свойств, использованных во время обновления.* Состояние, которое вы ищете, вероятно

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

, но я не проверял его.

...