Как связать пользовательское действие с событием управления
Я изучаю Wix, чтобы построить инсталлятор продукта. Я успешно настроил пользовательский интерфейс, но мне интересно, как связать пользовательское действие с событием управления (например, кнопка).
У меня есть 2 проекта:
Продукт.Уикс.CustomActions
[CustomAction]
public static ActionResult CustomAction1(Session session)
{
session.Log("Begin CustomAction1");
MessageBox.Show("CustomActions1");
return ActionResult.Success;
}
Продукт.Уикс.Setup (ссылка на продукт.Уикс.Проект CustomActions). в программе установки.wxs, я объявил пользовательское действие:
<Binary Id="CustomActions" SourceFile="..Product.Wix.CustomActionsbinDebugProduct.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 ответа:
Не уверен, что MessageBox.Show() будет работать. Также его лучше использовать с диалогами WIX, так как вы можете захватить опцию, выбранную пользователем во всплывающем окне.
Пример
<Control Id="TestConn" Type="PushButton" X="265" Y="205" Width="70" Height="18" Text="&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; }
Файл журнала показывает, что мои пользовательские сборки действий не могут быть загружены должным образом. Причина в том, что я непреднамеренно удалил раздел:
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" /> </startup>
Из файла конфигурации. Добавил его обратно, и теперь все работает.