我的.wxs文件中有以下XML用于在卸载时运行批处理文件:
<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中,它必须存在于批处理文件中(实际上它将存在于可执行文件中,但我认为这个批处理示例更容易)
答案 0 :(得分:1)
您可以尝试添加/ RU&#34; SYSTEM&#34;你的cmd。我从未运行过schtasks,但它可能有用吗?听起来好像用户登录到机器但在系统环境下运行任务时会有些混淆。