Отмените MSI, не показывая диалоговое окно "установка прервана"

Мне интересно, возможно ли, чтобы кнопка "Отмена" на моем экране приветствия полностью вышла из установщика, не показывая окончательное диалоговое окно "Установка прервана". Я считаю это излишним, когда пользователь еще не начал установку.

Я по-прежнему хочу, чтобы диалоговое окно отображалось, если пользователь отменяет уже начатую установку, но не, если установка не была запущена (что имеет место при нажатии кнопки "Отмена" на экране приветствия).

Я пробовал разные вещи, но мне не хватает понимания того, как работает установщик Windows, чтобы найти решение.

Обновление: начало работать! Я закончил тем, что использовал комбинацию из двух предложений - я хотел бы дать вам оба ответа, но я передам его Рэю, так как у него самая низкая репутация. Но я проголосую за них обоих. Вот как я это сделал (я все еще удивлен, что это работает):

Я использовал Publish элемент, как предложил Ray, но вместо вызова события (нет события с именем "Finish"), я устанавливаю свойство "AbortInstall" в 1:

<Publish Dialog="SimpleDlg"
                    Control="Cancel"
                    Property="AbortInstall"
                    Value="1">1</Publish>

Я сделал это в моем файле пользовательского набора WixUI_Simple.wxs в Wix/Fragment/UI

Затем внутри UserExit.wxs я изменил InstallUISequence следующим образом:

<InstallUISequence>
            <Show Dialog="Simple_UserExit"
                    OnExit="cancel">NOT AbortInstall = 1</Show>
        </InstallUISequence>

... это идея, предложенная Кристофером.

Спасибо вам обоим!

3 ответа

Решение

Я не проверял это, так что это могло бы не работать ни в малейшей степени, но какого черта.

Вы, вероятно, можете создать элемент Publish для WelcomeDlg с помощью кнопки "Отмена" следующим образом:

<Publish Dialog="WelcomeDlg" Control="Cancel" Event="Finish" Value="Exit">1</Publish>

Дайте мне знать, как оно идет:)

Посмотрите на таблицу InstallUISequence:

http://msdn.microsoft.com/en-us/library/aa369543(VS.85).aspx

Обратите внимание на специальные диалоги с последовательностью -1, -2 и -3. Обратите внимание, что вы также можете поставить условие в диалогах. С небольшим творческим потенциалом вы можете использовать свойство в качестве флага, чтобы определить, действительно ли началась ваша установка, и предотвратить или показать соответствующее диалоговое окно.

Просто к вашему сведению и весело.
Как скрыть диалог выхода в wix:
В вашем собственном WixUI_xxxxx.wxs под <UI> пометить место

<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return">1</Publish>
<Publish Dialog="MyNewDlg" Control="Ok" Event="EndDialog" Value="Return" Order="1">1</Publish>

Под <Product> тег вставки:

<Property Id="ExitSuccess" Value="1" />

А также

<InstallUISequence>
  <Show Dialog="MyNewDlg" After="SomeAction">Installed</Show>
  <Show Dialog="ExitDialog" OnExit="success">NOT ExitSuccess = 1</Show>
</InstallUISequence>

Это все.

Другие вопросы по тегам