Запуск пакетного файла, который планирует задачу с Wix при удалении
У меня есть следующий XML в моем файле.wxs для запуска командного файла при удалении:
<InstallExecuteSequence>
<Custom Action="uninstall_action" After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>
а также
<Fragment>
<CustomAction
Id ="uninstall_action"
Directory ="INSTALLDIR"
ExeCommand =""[INSTALLDIR]uninstallTester.bat""
Execute ="deferred"
Impersonate="no"
/>
</Fragment>
Поэтому он должен запустить командный файл, расположенный в каталоге установки. Мой командный файл выглядит так:
schtasks /Create /F /SC ONCE /ST 22:05 /TN exampleUninstall /TR "echo hello" 2> batch_log.log
Когда я запускаю деинсталлятор, я получаю следующее в batch_log.log:
ERROR: No mapping between account names and security IDs was done.
(40,4):UserId:
Похоже, что проблема связана именно с созданием новой запланированной задачи, потому что, если я изменю пакет, чтобы удалить запланированную задачу, она запускается без ошибок. Итак, мой вопрос: как я могу запланировать выполнение этого одноразового задания? Также будет работать и сам пакетный файл, у него просто проблема при вызове деинсталлятором.
Я также попытался погуглить эту конкретную ошибку без удачи.
Я упростил свой фактический вариант использования, поэтому я не могу просто переместить команду schtasks в ExecCommand в установщике, она должна находиться внутри пакетного файла (на самом деле она будет жить внутри исполняемого файла, но я подумал, что этот пакетный пример проще)
1 ответ
Вы можете попробовать добавить /RU "SYSTEM" в ваш cmd. Я никогда не запускал schtasks, но это может сработать? Похоже, что есть некоторая путаница между пользователем, вошедшим в систему, но выполняющим задачи в контексте системы.