WiX пропустить диалог с условиями - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть настраиваемое диалоговое окно, которое отображается при выборе функции InstallPEDatabase. Вот та часть последовательности, где MyEditConfig - мой пользовательский диалог:

  <Publish Dialog="MyCustomizeDlg" Control="Next" Event="NewDialog" Value="MyEditConfigDlg"><![CDATA[(&CreatePEDatabase=3)]]></Publish>
  <Publish Dialog="MyCustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg"><![CDATA[NOT(&CreatePEDatabase=3)]]></Publish>

  <Publish Dialog="MyEditConfigDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
  <Publish Dialog="MyEditConfigDlg" Control="Back" Event="NewDialog" Value="MyCustomizeDlg">1</Publish>

  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyCustomizeDlg" Order="1">NOT CreatePEDatabase = 3 AND NOT Installed OR WixUI_InstallMode = "Change"</Publish>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyEditConfigDlg" Order="2">CreatePEDatabase = 3 AND NOT Installed OR WixUI_InstallMode = "Change"</Publish>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="3">Installed AND NOT PATCH</Publish>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="4">Installed AND PATCH</Publish>

Таким образом, он работает для выбора функции, тогда отображается MyEditConfigDlg, а если функция не выбрана, то она не представляется. Проблема в том, что когда я нажимаю кнопку «Далее» в своем настраиваемом диалоговом окне и перехожу на VerifyReadyDlg и нажимаю обратно оттуда, это возвращает меня к MyCustomizeDlg вместо MyEditConfigDlg.. Я знаю, что с условиями что-то не так, но я не могу понять, что.

1 Ответ

3 голосов
/ 09 декабря 2011

Синтаксис «feature» CreatePEDatabase указывается как «свойство» (переменная без префикса). Вам нужно добавить префикс функции с амперсандом. Как и сейчас, тест запрашивает «НЕ (Свойство CreatePEDatabase = 3)», что будет истинным, потому что это свойство не существует и не равно ничему. Если вы измените синтаксис на функцию, то она будет оценена правильно.

Вот отличная сводка синтаксиса, используемого движком MSI (который читает полученный MSI-файл WiX): http://msdn.microsoft.com/en-us/library/aa368012(VS.85).aspx

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

...