Отмените 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>
Это все.