Я использую Wix 3.11.1 с расширением VS2017.Я устанавливаю свойство из элемента управления в настраиваемом диалоге, а затем пытаюсь выполнить немедленное настраиваемое действие.Когда я пытаюсь прочитать сессию, она всегда пуста.
В соответствии с рекомендациями я изменил свое действие на другое выполнение и использовал немедленное действие для установки моего свойства.Когда я запускаю мой установщик, я получаю сообщение об ошибке: «ОТЛАДКА: Ошибка 2896: не удалось выполнить действие [ActionName]».
In CustomDialog.wxs
<Control Id="ConnId" Type="Edit" X="60" Y="110" Height="17" Width="300" Property="CONN"/>
<Control Id="installButton" Type="PushButton" Text="Continue" Height="15" Width="60" X="240" Y="260">
<Publish Event="DoAction" Value="RegistrationInfoCustomAction">1</Publish>
<Publish Event="EndDialog" Value="Return">1</Publish>
</Control>
<Fragment>
<Binary Id="CustomActionBinary" SourceFile="..\..\CustomActions\bin\Debug\CustomActions.CA.dll"/>
<CustomAction Id="SetPropertyForShowProperty" Property="RegistrationInfoCustomAction" Execute="immediate" Value="[CONN]" Return="check" />
<CustomAction Id="RegistrationInfoCustomAction" BinaryKey="CustomActionBinary" DllEntry="SaveUserInfo" Execute="deferred" Return="check" HideTarget="no"/>
</Fragment>
In Product.wxs
<InstallExecuteSequence>
<Custom Action="SetPropertyForShowProperty" After="InstallInitialize"/>
<Custom Action="RegistrationInfoCustomAction" Before="InstallFinalize"/>
</InstallExecuteSequence>
В CustomActions.cs
[CustomAction]
public static ActionResult SaveUserInfo(Session session)
{
Debugger.Launch();
CustomActionData data = session.CustomActionData;
session.Log("Begin SaveUserInfo");
var connectionString = data["CONN"];
session.Log($"content: {connectionString}");
session.Log("End SaveUserInfo");
return ActionResult.Success;
}
Настраиваемое действие работает, когда оно содержит только операторы журналирования, но при добавлении любого другого кода происходит сбой.Кроме того, сеанс всегда пуст.
В журнале установщика:
MSI (c) (88:34) [16: 30: 21: 255]: запуск удаленного настраиваемого действия.DLL: C: \ Users \ Andre \ AppData \ Local \ Temp \ MSIF1A3.tmp, точка входа: SaveUserInfo
MSI (c) (88: F8) [16: 30: 21: 256]: маскировка включена.
MSI (c) (88: F8) [16: 30: 21: 256]: попытка включить все отключенные привилегии перед вызовом Install на сервере
MSI (c) (88: F8) [16: 30: 21: 256]: подключено к службе для интерфейса CA.
Действие завершено 16:30:41: RegistrationInfoCustomAction.Возвращаемое значение 3.
ОТЛАДКА: Ошибка 2896: Ошибка при выполнении действия RegistrationInfoCustomAction.
Программа установки обнаружила непредвиденную ошибку при установке этого пакета.Это может указывать на проблему с этим пакетом.Код ошибки: 2896. Аргументы: RegistrationInfoCustomAction, Действие завершено 16:30:41: SetupDialog.Возвращаемое значение 3. MSI (c) (88: 8C) [16: 30: 41: 911]: выполнение действия: FatalError