Установить последовательность диалогов и установок в WIX - PullRequest
0 голосов
/ 26 апреля 2019

Я пишу установщик в Wix и хочу следующую последовательность, в которой порядок диалогов и пользовательских действий смешан. Есть два сценария.

Первый сценарий: пользователь устанавливает программное обеспечение для пробной версии:

  1. Добро пожаловать (диалог)
  2. Лицензионное соглашение (диалог)
  3. Зарегистрируйте установку на моем сайте (настраиваемое действие), веб-сервер отвечает новому пользователю (пробный период).
  4. -
  5. -
  6. Завершение установки (диалоговое окно)

Второй сценарий: пользователь уже использовал программное обеспечение в течение пробного периода и должен ввести лицензионный код для полной установки. Новые шаги отмечены *.

  1. Приветствие (диалог)
  2. Лицензионное соглашение (диалог)
  3. Зарегистрируйте установку на моем сайте (настраиваемое действие), * веб-сервер отвечает старому пользователю (необходима лицензия).
  4. * Тип лицензионного ключа (диалоговое окно)
  5. * Проверка лицензионного ключа на веб-сервере (настраиваемое действие).
  6. Завершение установки (диалог)

Два сценария отличаются тем, как веб-сервер реагирует на шаге 3. Важно, что шаг 3 наступает после принятия условий лицензии.

У меня нет проблем с запуском диалогов, и я могу запускать пользовательские действия. Но я не могу понять, как смешать их последовательность. Я использовал поваренную книгу Ника Рамиреса WIX, но не вижу, чтобы в ней была тема.

Вопрос 1. Как смешать последовательность диалогов и настраиваемых действий?

Вопрос 2. Как можно использовать результат пользовательского действия (шаг 3) для выбора между двумя различными диалогами (шаг 4 или 6)?

1 Ответ

0 голосов
/ 01 мая 2019

После некоторых проб и ошибок я нашел решение этой проблемы:

<Property Id="INSTALL_WEB_RESPONSE" Value="NO" />
<UI Id="UIFlow">
   <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="DoAction" Value="CA_Licens">LicenseAccepted = "1"AND INSTALL_WEB_RESPONSE = "NO"</Publish>
   <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="MyCustomDlg">LicenseAccepted = "1" AND INSTALL_WEB_RESPONSE = "OVERSKREDET"</Publish>
   <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">LicenseAccepted = "1" AND INSTALL_WEB_RESPONSE = "GEMT"</Publish>
</UI>

После того, как вы приняли лицензионное соглашение (Control = "Next"), есть три варианта.

Сначала вы хотите запустить настраиваемое действие «CS_Licens», это действие изменяет свойство INSTALL_WEB_RESPONSE. В зависимости от изменения свойства INSTALL_WEB_RESPONSE, установщик каким-то образом возвращается к диалоговому окну Лицензионного соглашения и выбирает новое следующее событие:

Event="NewDialog" Value="MyCustomDlg"

или

Event="NewDialog" Value="VerifyReadyDlg"

Другими словами: значение свойства INSTALL_WEB_RESPONSE управляет потоком, а настраиваемое действие (напрямую) вообще не участвует в потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...