【问题标题】:Schedule task to run hidden in Inno Setup计划任务在 Inno Setup 中隐藏运行
【发布时间】:2021-08-20 16:54:15
【问题描述】:

我有一个使用 pyinstaller 创建的 exe 文件。我正在使用 Inno Setup 为这个可执行文件创建一个 Windows 安装程序。

这是我的编译器脚本中的一个 sn-p:

Filename: "schtasks"; \
  Parameters: "/Create /F /SC MINUTE /MO 2 /TN ""Discovery"" /TR ""'{app}\Discovery.exe'"""; \
  Flags: runhidden runminimized

我正在使用schtasks 来安排我的 exe 文件 (Discovery.exe) 的执行。调度工作正常,但文件运行时仍会出现命令行窗口。这让我相信runminimizedrunhidden 发生了一些奇怪的事情

Discovery.exe 实际上是使用 pyinstaller 创建的命令行应用程序。

如何确保在该文件应该运行时不显示命令行窗口?


根据@Bill_Stewart 的回答,关于 Inno Setup 的最终工作 [Run] 声明:

[Run]
Filename: "schtasks"; \
  Parameters: "/Create /F /SC MINUTE /MO 5 /TN ""Discovery"" /TR ""'wscript.exe' '{app}\RunHidden.js' '{app}\Discovery.exe' "" "; \
  Flags: runhidden runminimized;

由于我的文件路径中有空格,请注意引号的使用。

【问题讨论】:

    标签: inno-setup windows-task-scheduler


    【解决方案1】:

    问题在于 Inno Setup 的 [Run] 部分中的 runhidden 标志正在运行 schtasks 命令,而 schtasks 命令正在调度您的程序(Discovery.exe) 运行。安装包时,schtasks 命令会按要求隐藏运行,但这并不意味着您正在创建的计划任务将作为隐藏进程运行 Discovery.exe

    如果您以当前用户身份运行计划任务,则任务计划程序没有“隐藏运行此任务”设置。但是,您可以通过创建一个简短的 WSH 脚本来解决此问题:

    // RunHidden.js
    // Runs a program in a hidden window
    // Run this script using wscript.exe
    
    var Args = WScript.Arguments;
    
    if ( (Args.Unnamed.Count == 0) || (Args.Named.Item(0) == "/?") ) {
      WScript.Echo('Usage: wscript RunHidden.js "command"');
      WScript.Quit(0);
    }
    
    var FSO = new ActiveXObject("Scripting.FileSystemObject");
    var Command = Args.Unnamed.Item(0);
    if ( ! FSO.FileExists(Command) ) {
      WScript.Echo("File not found - " + Command);
      WScript.Quit(2);  // ERROR_FILE_NOT_FOUND
    }
    
    var WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run('"' + Command + '"',0);
    

    您可以将上述脚本与您的安装一起分发。调度wscript.exe作为要运行的程序,上面的脚本和Discovery.exe作为参数,调度任务应该无窗口运行命令。

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 2018-06-05
      • 1970-01-01
      • 2016-08-18
      • 2016-03-07
      • 2019-06-01
      • 1970-01-01
      • 2021-10-22
      相关资源
      最近更新 更多