У меня есть следующий XML в моем файле .wxs для запуска пакетного файла при удалении:Запуск пакетного файла, который в расписание задач с Wix на Uninstall
<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 в установщик, он должен жить внутри командного файла (на самом деле он будет жить внутри исполняемого файла, но я думал, что эта партия пример проще)
Вы можете попробовать добавить/RU "SYSTEM" в свой cmd. Я никогда не запускал schtasks, но это может сработать? Похоже, есть некоторая путаница между пользователем, зарегистрированным на компьютере, но выполняющим задачи в системном контексте. –
@BrianSutherland Это похоже на трюк. Если вы опубликуете его в качестве ответа, я соглашусь с ним. –