Я новичок, начал изучать WiX. Я хочу получить, проверить и зарегистрировать данные пользователя в процессе установки. Я создал диалоговое окно для захвата регистрации пользователя и вызова настраиваемого действия после нажатия пользователем кнопки «Далее».
Но здесь я получаю ошибку установщика 2762. Хотя в описании ошибки сказано, что «Действие должно быть запланировано между InstallInitialize и InstallFinalize», я не могу понять, как решить эту проблему.
Вот мой XML-скрипт:
<Binary Id="mycustom"
SourceFile="..\CustomAction1\bin\Debug\CustomAction1.CA.dll" />
<CustomAction Id="myCustomValidate"
BinaryKey="mycustom"
DllEntry="ValidateCustomAction"
Execute="deferred"
Return="check">
</CustomAction>
<UI>
<UIRef Id="WixUI_Mondo" />
<Dialog Id="UserRegistrationDlg"
Width="370"
Height="270"
Title="[ProductName] [Setup]"
NoMinimize="yes">
..
..
..
<Control Id="Next"
Type="PushButton"
X="236"
Y="243"
Width="56"
Height="17"
Default="yes"
Text="[ButtonText_Next]">
<Publish Event="ValidateProductID" Value="0">1</Publish>
<Publish Event="DoAction" Value="myCustomValidate">1</Publish>
<Publish Event="SpawnDialog" Value="InvalidRegDlg">PIDACCEPTED = "0"</Publish>
<Publish Event="NewDialog" Value="SetupTypeDlg">ProductID AND PIDACCEPTED = "1"</Publish>
</Control>
</Dialog>
</UI>
Ниже приведен код настраиваемого действия, который я использовал.
[CustomAction]
public static ActionResult ValidateCustomAction(Session session)
{
return ActionResult.Success;
}
Пользовательское действие работает нормально, если оно используется в «InstallExecuteSequence». Я не могу понять проблему, я удалил настраиваемый диалог и использовал следующий простой вызов для вызова настраиваемого действия. Но я получил ту же ошибку.
<Publish Dialog="LicenseAgreementDlg"
Control="Next"
Event="DoAction"
Value="myCustomValidate">1</Publish>
Я уверен, что делаю здесь что-то глупое, но не мог понять. Какое решение?