Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 安排任务在Inno安装程序中隐藏运行_Inno Setup_Windows Task Scheduler - Fatal编程技术网

Inno setup 安排任务在Inno安装程序中隐藏运行

Inno setup 安排任务在Inno安装程序中隐藏运行,inno-setup,windows-task-scheduler,Inno Setup,Windows Task Scheduler,我有一个使用pyinstaller创建的exe文件。我正在使用Inno安装程序为此可执行文件创建Windows安装程序 下面是我的编译器脚本的一个片段: Filename: "schtasks"; \ Parameters: "/Create /F /SC MINUTE /MO 2 /TN ""Discovery"" /TR ""'{app}\Discovery.exe'""&quo

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

下面是我的编译器脚本的一个片段:

Filename: "schtasks"; \
  Parameters: "/Create /F /SC MINUTE /MO 2 /TN ""Discovery"" /TR ""'{app}\Discovery.exe'"""; \
  Flags: runhidden runminimized
我正在使用
schtasks
计划执行我的exe文件(
Discovery.exe
)。调度工作得非常好,但文件运行时仍会出现一个命令行窗口。这让我相信
runminimized
runhidden

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

如何确保在运行此文件时不显示任何命令行窗口


根据@Bill_Stewart的回答,Inno设置的最终工作[运行]声明:

[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安装程序的
[Run]
部分中的
runhidden
标志正在运行schtasks命令,而schtasks命令正在安排程序(Discovery.exe)运行。安装包时,schtasks命令会按请求隐藏运行,但这并不意味着您正在创建的计划任务将作为隐藏进程运行Discovery.exe

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

//RunHidden.js
//在隐藏窗口中运行程序
//使用wscript.exe运行此脚本
var Args=WScript.Arguments;
if((Args.Unnamed.Count==0)| |(Args.Named.Item(0)=“/?”){
Echo('用法:WScript RunHidden.js“command“);
WScript.Quit(0);
}
var FSO=新的ActiveXObject(“Scripting.FileSystemObject”);
var命令=Args.Unnamed.Item(0);
如果(!FSO.FileExists(命令)){
Echo(“未找到文件-”+命令);
WScript.Quit(2);//找不到错误文件
}
var WshShell=newActiveXObject(“WScript.Shell”);
运行(““+Command+”,0);
您可以在安装时分发上述脚本。计划wscript.exe作为要运行的程序,上面的脚本和Discovery.exe作为参数,计划的任务应该在没有窗口的情况下运行命令