运行 在卸载时使用 Wix 安排任务的批处理文件

Running a batch file which schedules a Task with Wix on Uninstall

我的 .wxs 文件中有以下 XML,用于 运行卸载时批处理文件:

<InstallExecuteSequence>
  <Custom Action="uninstall_action" After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>

<Fragment>
  <CustomAction 
    Id         ="uninstall_action"
    Directory  ="INSTALLDIR"
    ExeCommand ="&quot;[INSTALLDIR]uninstallTester.bat&quot;"
    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 但它可能有用吗?听起来用户登录机器与运行在系统上下文中执行任务之间存在一些混淆。