#wix #wix3.5 #wix3 #wix3.6
#wix #wix3.5 #wix3 #wix3.6
Вопрос:
В установщике WiX — Как я могу настроить или переопределить диалоговое окно с фатальной ошибкой ()? Я хотел бы показать подробное сообщение об ошибке вместо сообщения об ошибке установки по умолчанию.
Опции:
- Возможно ли изменить размер диалогового окна с фатальной ошибкой в WiX?
- Если нет, как я могу использовать свой собственный диалог вместо диалогового окна с фатальной ошибкой?
Ответ №1:
Чтобы изменить размер или иным образом изменить любой существующий диалог, по сути, вам нужно его заменить. К счастью, вы можете загружать исходные тексты из репозитория git и изменять их по своему усмотрению.
Во-первых, чтобы иметь возможность изменять любой элемент пользовательского интерфейса, вам необходимо переопределить таблицу пользовательского интерфейса по умолчанию. Давайте изменим пользовательский интерфейс InstallDir для этого примера:
<UIRef Id="WixUI_InstallDir" /> <!-- original -->
<UIRef Id="CustomWixUI_InstallDir" /> <!-- modified -->
Теперь давайте изменим WixUI_InstallDir, загрузив исходный код и изменив то, что мы хотим. Мы делаем это, добавляя новый пользовательский файл wixui_installdir.wxs в программу установки. Содержимое можно загрузить с WixUI_InstallDir.wxs git.
Назначьте уникальный идентификатор для этого пользовательского интерфейса, изменив атрибут Id элемента пользовательского интерфейса внутри вновь созданного файла CustomWixUI_InstallDir.wxs:
<UI Id="WixUI_InstallDir"> <!-- original -->
<UI Id="CustomWixUI_InstallDir"> <!-- modified -->
Найдите строку, которая ссылается на диалоговое окно FatalError, и замените его своим собственным диалоговым окном с фатальной ошибкой, например:
<DialogRef Id="FatalError" /> <!-- original -->
<DialogRef Id="Custom_FatalError" /> <!-- modified -->
Теперь нам нужно еще раз загрузить исходный код FatalError.wxs или создать его с нуля. Давайте еще раз загрузим исходный код FatalError.wxs из git. И добавьте его в качестве нового установочного файла с именем Custom_FatalError.wxs.
Еще есть шаг, чтобы это диалоговое окно появилось после фатальной ошибки во время установки: найдите строки в файле Custom_FatalError.wxs, которые упорядочивают это диалоговое окно, и замените их своим собственным диалоговым идентификатором следующим образом:
Оригинал:
<InstallUISequence>
<Show Dialog="FatalError" OnExit="error" Overridable="yes" />
</InstallUISequence>
<AdminUISequence>
<Show Dialog="FatalError" OnExit="error" Overridable="yes" />
</AdminUISequence>
Изменено:
<InstallUISequence>
<Show Dialog="Custom_FatalError" OnExit="error" /> <!-- note that Overridable attribute is removed -->
</InstallUISequence>
<AdminUISequence>
<Show Dialog="Custom_FatalError" OnExit="error" />
</AdminUISequence>
Вот и все, теперь вы можете свободно изменять диалоговое окно FatalError или любое другое диалоговое окно, следуя этому примеру. Я лично добавил пользовательское сообщение об ошибке в диалоговое окно FatalError, изменив элемент управления описанием:
<Control Id="Description" Type="Text" X="135" Y="70" Width="220" Height="80" Transparent="yes" NoPrefix="yes" Text="!(loc.FatalErrorDescription1) [CUSTOMERRORMESSAGE] !(loc.FatalErrorDescription2)" />
Комментарии:
1. Чтобы добавить: Не забудьте изменить атрибут ‘Id’ элемента ‘Dialog’ в файле Custom_FatalError.wxs на «Custom_FatalError». В противном случае это приведет к ошибке компоновщика.