Установщик Wix — изменить размер диалогового окна с фатальной ошибкой или использовать пользовательский диалог вместо диалогового окна с фатальной ошибкой

#wix #wix3.5 #wix3 #wix3.6

#wix #wix3.5 #wix3 #wix3.6

Вопрос:

В установщике WiX — Как я могу настроить или переопределить диалоговое окно с фатальной ошибкой ()? Я хотел бы показать подробное сообщение об ошибке вместо сообщения об ошибке установки по умолчанию.

Опции:

  1. Возможно ли изменить размер диалогового окна с фатальной ошибкой в WiX?
  2. Если нет, как я могу использовать свой собственный диалог вместо диалогового окна с фатальной ошибкой?

Ответ №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». В противном случае это приведет к ошибке компоновщика.