AnOldSoul
AnOldSoul

Reputation: 4207

TaskScheduler not creating task though command is getting called

I have a WiX installer in which I have the below custom actions to create a couple of tasks in task scheduler.

[CustomAction]
        public static ActionResult CreateScheduleTaskForUpdateTriggering(Session session)
        {
            session.Log("Creating the Scheduled Task");
            string MyAppPath = Environment.GetEnvironmentVariable("MyAppPATH");
            if (!IsTaskExisting("MyAppUpdateTrigger"))
            {
                session.Log("Command Created : " + "C:\\Windows\\System32\\SCHTASKS.exe /Create /TN \"MyAppUpdateTrigger\" /SC ONCE /TR \"" + Path.Combine(new string[] { MyAppPath, "Watchdog", "RunMyAppInstaller.bat" }) + "\" /RL HIGHEST");
                Process p = Process.Start("C:\\Windows\\System32\\SCHTASKS.exe", " /Create /TN \"MyAppUpdateTrigger\" /SC ONCE /TR \"" + Path.Combine(new string[] { MyAppPath, "Watchdog", "RunMyAppInstaller.bat" }) + "\" /ST 00:00:00 /SD 01/01/1990 /RL HIGHEST");
            }
            else
            {
                session.Log("MyAppUpdateTrigger schedule already exists");
            }
            return ActionResult.Success;
        }

        [CustomAction]
        public static ActionResult CreateScheduleTaskForRunningWatchdog(Session session)
        {
            session.Log("Creating the Scheduled Task for running watch dog");

            string MyAppPath = Environment.GetEnvironmentVariable("MyAppPATH");

            if (!IsTaskExisting("RunWatchDog"))
            {
                session.Log("Command Created : " + "C:\\Windows\\System32\\SCHTASKS.exe /Create /TN \"RunWatchDog\" /SC ONSTART /TR \"" + Path.Combine(new string[] { MyAppPath, "Watchdog", "RunWatchDog.bat" }) + "\" /RL HIGHEST");
                Process p = Process.Start("C:\\Windows\\System32\\SCHTASKS.exe", " /Create /TN \"RunWatchDog\" /SC ONSTART /TR \"" + Path.Combine(new string[] { MyAppPath, "Watchdog", "RunWatchDog.bat" }) + "\" /ST 00:00:00 /SD 01/01/1990 /RL HIGHEST");
            }
            return ActionResult.Success;
        }

I am calling these as shown below in my WiX file.

<CustomAction Id="CA_scheduleTaskAction" BinaryKey="removeFolderCustomActionDLL" DllEntry="CreateScheduleTaskForUpdateTriggering" Execute="commit" Return="ignore" />
<CustomAction Id="CA_scheduleTaskActionForWatchDog" BinaryKey="removeFolderCustomActionDLL" DllEntry="CreateScheduleTaskForRunningWatchdog" Execute="commit" Return="ignore" />

<InstallExecuteSequence>
  <!--Custom Action="LaunchWatchdog" After="InstallFinalize" /-->
  <Custom Action="WatchDog.TaskKill" Before="InstallValidate"/>
  <Custom Action="CA_scheduleTaskAction" After="InstallFiles"/>
  <Custom Action="CA_scheduleTaskAction" After="InstallFiles"/>
  <Custom Action="CA_myCustomAction" Before="InstallFinalize">Installed</Custom>
</InstallExecuteSequence>

Though the 1st scheduled task gets created, second one is missing in the task scheduler. Logs do indicate that the custom action has run. But it doesn't exist in the task scheduler. When I run the command manually, it does get created. What am I doing wrong here? Any help would be much appreciated. Below are the logs.

    Calling custom action CustomActionRemoveFolder!CustomActionRemoveFolder.CustomActions.CreateScheduleTaskForRunningWatchdog
Creating the Scheduled Task for running watch dog
Command Created : C:\Windows\System32\SCHTASKS.exe /Create /TN "RunWatchDog" /SC ONSTART /TR "C:\Program Files\Kube2.0\Watchdog\RunWatchDog.bat" /RL HIGHEST
MSI (s) (88:38) [09:42:01:431]: Note: 1: 2318 2:  
MSI (s) (88:38) [09:42:01:431]: No System Restore sequence number for this installation.
MSI (s) (88:38) [09:42:01:431]: Unlocking Server
MSI (s) (88:38) [09:42:01:446]: PROPERTY CHANGE: Deleting UpdateStarted property. Its current value is '1'.
Action ended 9:42:01: InstallFinalize. Return value 1.
Action ended 9:42:01: INSTALL. Return value 1.

Upvotes: 1

Views: 718

Answers (1)

wannadream
wannadream

Reputation: 1760

Now, I see. From doc: https://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx

/SC schedule

A value that specifies the schedule frequency. Valid values are: MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONLOGON, ONIDLE, and ONEVENT.

Upvotes: 1

Related Questions