Inno setup 安排任务在Inno安装程序中隐藏运行
我有一个使用pyinstaller创建的exe文件。我正在使用Inno安装程序为此可执行文件创建Windows安装程序 下面是我的编译器脚本的一个片段: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
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作为参数,计划的任务应该在没有窗口的情况下运行命令