Условный выбор между двумя диалоговыми окнами выхода при использовании расширения WIX InstallDir UI - PullRequest
4 голосов
/ 20 июня 2011

Я хотел бы иметь два разных диалоговых окна выхода на основе версии свойства VersionMsi, чтобы использовать элемент управления гиперссылкой для диалогового окна выхода. Больше информации здесь .

Я использую настроенную версию расширения InstallDir_UI WIX для моего процесса установки. Поскольку я хотел бы при желании поддерживать элемент управления гиперссылкой, если он доступен, я создал два разных диалоговых окна:

<Dialog Id="NonHyperlinkExit" Width="370" Height="270" Title="!(loc.ExitDialog_Title)">
    <Control Id="Finish" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIFinish)" />
    ...
    <Control Id="HowToLink" Type="Text" X="135" Y="175" Width="220" Height="10" Transparent="yes" NoPrefix="yes" Text="!(loc.InfoUrl)" />
    ...
</Dialog>

<Dialog Id="HyperlinkExit" Width="370" Height="270" Title="!(loc.ExitDialog_Title)">
    <Control Id="Finish" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIFinish)" />
    ...
    <Control Id="HowToHyperLink" Type="Hyperlink" X="135" Y="175" Width="220" Height="10" Text="!(loc.InfoLink)" />
    ...
</Dialog>

Затем я изменил операторы публикации пользовательского интерфейса для поддержки этих диалогов:

<Publish Dialog="NonHyperlinkExit" Control="Finish" Event="EndDialog" Value="Return" Order="998"><![CDATA[VersionMsi < "5.0"]]></Publish>
<Publish Dialog="HyperlinkExit" Control="Finish" Event="EndDialog" Value="Return" Order="999"><![CDATA[VersionMsi >= "5.0"]]></Publish>

При запуске этого я получаю следующие ошибки:

error LGHT0204: ICE20: Exit dialog/action not found in 'AdminUISequence' Sequence Table. 
error LGHT0204: ICE82: This action HyperlinkExit has duplicate sequence number -1 in the table InstallUISequence

Так что я попытался изменить вместо этого InstallUISequence, но с небольшой помощью. Пробовал это:

<InstallUISequence>
    ...
    <Show Dialog="NonHyperlinkExit" Before="HyperlinkExit"><![CDATA[VersionMsi < "5.0"]]></Show>
    <Show Dialog="HyperlinkExit" OnExit="success"><![CDATA[VersionMsi >= "5.0"]]></Show>
</InstallUISequence>

Но это только дает мне следующую ошибку:

error LGHT0177: The InstallUISequence table contains an action 'NonHyperlinkExit' that is scheduled to come before or after action 'HyperlinkExit', 
which is a special action which only occurs when the installer terminates.  
These special actions can be identified by their negative sequence numbers.  
Please schedule the action 'NonHyperlinkExit' to come before or after a different action.

Буду признателен за любые идеи о том, как создавать диалоговые окна условного выхода.

Ответы [ 2 ]

2 голосов
/ 16 октября 2012

Вы также можете использовать настраиваемое действие для динамического добавления элементов управления в диалоговое окно, только когда оно поддерживается.См .:

Динамический интерфейс установщика Windows

2 голосов
/ 20 июня 2011

MSI поддерживает только один выходной диалог на состояние (например, успех).Вместо этого вы можете использовать настраиваемое действие, которое показывает соответствующий диалог.

...