wxs 파일을 통해 WiX 사용자 지정 작업에 매개 변수를 전달하려고합니다. 그러나 나는 아래 예외를 얻고있다.WiX 사용자 지정 작업에 매개 변수를 전달할 때 작동하지 않습니다.
Calling custom action CustomActionRemoveFolder!CustomActionRemoveFolder.CustomActions.CreateScheduleTaskForRunningWatchdog
Creating the Scheduled Task for running watch dog
Exception thrown by custom action:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Microsoft.Deployment.WindowsInstaller.InstallerException: Cannot access session details from a non-immediate custom action
at Microsoft.Deployment.WindowsInstaller.Session.ValidateSessionAccess()
at Microsoft.Deployment.WindowsInstaller.Session.get_Item(String property)
at CustomActionRemoveFolder.CustomActions.CreateScheduleTaskForRunningWatchdog(Session session)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object parameters, Object arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture)
at Microsoft.Deployment.WindowsInstaller.CustomActionProxy.InvokeCustomAction(Int32 sessionHandle, String entryPoint, IntPtr remotingDelegatePtr)
CustomAction CA_scheduleTaskActionForWatchDog returned actual error code 1603 but will be translated to success due to continue marking
다음은 wxs 파일에서 사용자 지정 동작을 전달하는 매개 변수를 선언하고 호출하는 방법입니다.
<Property Id="UserName" Value="someDefaultValue" />
<CustomAction Id="SetUserName" Property="UserName" Value="[UserName]"/>
<InstallExecuteSequence>
<Custom Action="SetUserName" After="InstallInitialize" />
</InstallExecuteSequence>
그리고 내 사용자 지정 동작은 다음과 같습니다.
[CustomAction]
public static ActionResult CreateScheduleTaskForRunningWatchdog(Session session)
{
session.Log("The session value for username is " + session["UserName"]);
}
은 그럼 내가 잘못 여기서 뭐하는 거지
msiexec /i <installer-name> UserName="myName" /l*v log.txt
로 MSI를 실행하고? 어떤 도움이라도 대단히 감사 할 것입니다.
, 그 예외는 사라졌다. 하지만 지금 사용자 지정 작업 CreateScheduleTaskForRunningWatchdog 내부 세션 [ "UserName"]에 대한 기본값이 나타납니다. 다른 문제가 있습니까? – mayooran
당신은 아마 적절한 순서를 설정해야합니다. 먼저 속성을 설정하고 가져옵니다. ExecuteSequence ... "After"특성을 사용합니다. 즉, CreateScheduleTaskForRunningWatchdog는 SetUserName 뒤에 있어야합니다. – Nikolay