Как связать настраиваемое действие для управления событием - PullRequest
5 голосов
/ 24 августа 2011

Я изучаю Wix для сборки установщика продукта.Я успешно настроил пользовательский интерфейс, но мне интересно, как связать настраиваемое действие с управляющим событием (например, PushButton).

У меня есть 2 проекта:

Product.Wix.CustomActions

[CustomAction]
public static ActionResult CustomAction1(Session session)
{
 session.Log("Begin CustomAction1");
 MessageBox.Show("CustomActions1");
 return ActionResult.Success;
}

Product.Wix.Setup (ссылка на проект Product.Wix.CustomActions).В файле Setup.wxs я объявил настраиваемое действие:

<Binary Id="CustomActions" SourceFile="..\Product.Wix.CustomActions\bin\Debug\Product.Wix.CustomActions.CA.dll" />
<CustomAction Id='Action1' BinaryKey='CustomActions' DllEntry='CustomAction1' Execute='immediate' Return='check' />

У меня есть настраиваемый диалог с кнопкой «Подключить» и подключением к действию, как показано ниже:

<Control Id="Connect" Type="PushButton" X="325" Y="75" Width="30" Height="17" Text="...">
<Publish Event="DoAction" Value="Action1">1</Publish>
</Control>

Это не работаеткак я и ожидал, при нажатии кнопки «Подключить» должно появиться окно с сообщением.

Ответы [ 2 ]

4 голосов
/ 24 августа 2011

Не уверен, будет ли работать MessageBox.Show (). Также лучше использовать диалоги WIX, так как вы можете зафиксировать выбранную пользователем опцию во всплывающем окне.

Пример

<Control Id="TestConn" Type="PushButton" X="265" Y="205" Width="70" Height="18" Text="&amp;Test Connection">
    <Publish Event="DoAction" Value="Action1">1</Publish>
    <Publish Property="ERRORMSG" Value="CustomActions1">ACCEPTED = "1"</Publish>
    <Publish Event="SpawnDialog" Value="InvalidDBConnDlg">ACCEPTED = "0"</Publish>
</Control>

<Dialog Id="InvalidDBConnDlg" Width="260" Height="120" Title="[ProductName]">
    <Control Id="OK" Type="PushButton" X="102" Y="90" Width="56" Height="17" Default="yes" Cancel="yes" Text="OK" />
    <Control Id="Text" Type="Text" X="48" Y="22" Width="194" Height="60" Text="[MSGVAR]" />
    <Control Id="Icon" Type="Icon" X="15" Y="15" Width="24" Height="24" ToolTip="Information icon" FixedSize="yes" IconSize="32" Text="WixUI_Ico_Info" />
</Dialog>

Пользовательское действие

[CustomAction]
public static ActionResult CustomAction1(Session session)
{
    session["MSGVAR"] = "Some Message";
    return ActionResult.Success;
}
2 голосов
/ 05 сентября 2011

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

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>

из файла конфигурации.Добавил его обратно и теперь все работает.

...