Batch file 调试从Inno安装程序执行的非工作批处理文件或命令

Batch file 调试从Inno安装程序执行的非工作批处理文件或命令,batch-file,inno-setup,Batch File,Inno Setup,我试图使用Inno Setup通过命令行在Windows 10上安装Tomcat作为一项服务,但目前遇到了问题,这是我的语法 [Run] Filename: net.exe; Flags: runascurrentuser; parameters: "user elt_user TrackFox38# /add" ; installs tomcat makes it run as a service NOTE THAT IN INNO THIS IS A SINGLE LINE Filena

我试图使用Inno Setup通过命令行在Windows 10上安装Tomcat作为一项服务,但目前遇到了问题,这是我的语法

[Run] 
Filename: net.exe; Flags: runascurrentuser; parameters: "user elt_user TrackFox38# /add"

; installs tomcat makes it run as a service NOTE THAT IN INNO THIS IS A SINGLE LINE
Filename: {src}\..\apache-tomcat-7.0.69\bin\service.bat; Flags: runascurrentuser; parameters: "tomcat7 //IS//Tomcat7 --DisplayName='Apache_Tomcat_7' ^ --Install='C:\Program Files\Tomcat\bin\tomcat7.exe' --Jvm=auto ^ --StartMode=jvm --StopMode=jvm ^ --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^ --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop"
奇怪的是,当我手动将它粘贴到命令行时,它就可以工作了。起初我认为这是一个权限问题,但事实上,
net.exe
命令起作用,Tomcat没有对此提出疑问。此外,我有权限要求设置为管理员和应用程序需要管理员权限启动安装程序,所以我不认为这是一个用户问题。我不熟悉Inno设置,有点困在这里

调试输出:

[09:18:54.770] Filename: C:\program\Output\..\apache-tomcat-   7.0.69\bin\service.bat 
[09:18:54.771] Parameters: tomcat7 //IS//Tomcat7 --DisplayName='Apache_Tomcat_7' ^ --Install='C:\Program Files\Tomcat\bin\tomcat7.exe' --Jvm=auto ^ --StartMode=jvm --StopMode=jvm ^ --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^ --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop 
[09:18:54.867] Process exit code: 0

执行批处理文件(或任何命令)时,其结果(或错误)要么根本不可见(特别是在使用
runhidden
标志时),要么消失得太快,无法读取

在这种情况下,通过
cmd.exe
显式运行命令(Inno Setup在运行批处理文件时自行隐式运行),但这次使用的是
/K
开关,而不是更常见的
/C
开关。
/K
开关确保控制台窗口不会自行关闭

因此,不是:

[Run] 
Filename: {app}\setup.bat; Parameters: "arguments"
或同等标准:

[Run] 
Filename: {cmd}; Parameters: "/C ""{app}\setup.bat"" arguments"
使用:

然后在
setup.bat
完成后,控制台窗口保持不变,您可以看到最终的错误

如果批处理文件以公共
@echo off
命令开始,该命令隐藏了正在执行的命令,则使用
rem
临时注释掉这一行也将有助于调试


执行批处理文件(或任何命令)时,其结果(或错误)要么根本不可见(特别是在使用
runhidden
标志时),要么消失得太快,无法读取

在这种情况下,通过
cmd.exe
显式运行命令(Inno Setup在运行批处理文件时自行隐式运行),但这次使用的是
/K
开关,而不是更常见的
/C
开关。
/K
开关确保控制台窗口不会自行关闭

因此,不是:

[Run] 
Filename: {app}\setup.bat; Parameters: "arguments"
或同等标准:

[Run] 
Filename: {cmd}; Parameters: "/C ""{app}\setup.bat"" arguments"
使用:

然后在
setup.bat
完成后,控制台窗口保持不变,您可以看到最终的错误

如果批处理文件以公共
@echo off
命令开始,该命令隐藏了正在执行的命令,则使用
rem
临时注释掉这一行也将有助于调试