Как запланировать задачу с wix?
Я пытаюсь запланировать задачу с помощью установщика wix. Программа установки успешно установлена, но задача не добавлена в планировщик задач. Я использую Windows XP.
<Product Id="*"
Name="FooBar"
Language="1033"
Version="1.0.0.0" Manufacturer="Foo"
UpgradeCode="GID">
<Package Id="*"
InstallerVersion="200"
Compressed="yes"
InstallScope="perMachine"
InstallPrivileges="elevated"/>
...
</Product>
<Fragment>
<CustomAction Id="CreateScheduledTask"
Return="check"
Impersonate="no"
Execute="deferred"
Directory="TARGETDIR"
ExeCommand=""[SystemFolder]SCHTASKS.EXE" /CREATE /SC MINUTE /MO 20 /TN "Foobar" /TR "[INSTALLFOLDER]\Foobar.exe" /RU "NT Authority\System" /RP" />
</Fragment>
2 ответа
Вы не указали, когда ваш CustomAction происходит в последовательности установки. Если это должно быть после установки или после закрытия.
<InstallExecuteSequence>
<Custom Action='CreateScheduledTask' After='InstallFiles'/>
</InstallExecuteSequence>
Кроме того, вложенные кавычки никогда не работают для меня. я использую "
внутри любых цитат. Вот пример создания сервиса.
<CustomAction Id="MyService"
Property="CMD"
ExeCommand="[SystemFolder]cmd.exe /c sc create "MyService" binPath= "[#MyService.exe]" start= auto type= interact type= own"
Execute="deferred"
Return="check"
Impersonate="no"/>
Вот что у меня получилось (адаптировано с http://kamivaniea.com/?p=632):
<InstallExecuteSequence>
<Custom Action="CreateScheduledTask" After="InstallFiles">
NOT Installed
</Custom>
</InstallExecuteSequence>
<CustomAction Id="CreateScheduledTask"
Return="check"
Impersonate="no"
Execute="deferred"
Directory="TARGETDIR"
ExeCommand=""[SystemFolder]SCHTASKS.EXE" /Create /TN "Task Name Here" /TR "[INSTALLFOLDER]MyExecutable.exe" /SC WEEKLY /D MON /ST 05:00 /F" />
Когда я сделал то, что предложил Вэл, я получил эту ошибку в логах (msiexec /l*v log.txt /i MyInstaller.msi
):
Ошибка 1721. Проблема с этим пакетом установщика Windows. Не удалось запустить программу, необходимую для завершения этой установки. Обратитесь в службу поддержки или к поставщику пакета.
Вот что у меня было:
<InstallExecuteSequence>
<Custom Action='CreateScheduledTask' After='InstallFiles'/>
</InstallExecuteSequence>
<CustomAction Id="CreateScheduledTask"
Property="CMD"
ExeCommand="[SystemFolder]cmd.exe /c schtasks /Create /TN "Task Name Here" /TR "[INSTALLFOLDER]MyExecutable.exe" /SC WEEKLY /D MON /ST 05:00 /F"
Execute="deferred"
Return="check"
Impersonate="no"/>