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

时间:2016-05-19 13:17:03

标签: 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
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没有对此提出质疑。此外,我还需要设置为admin的权限,并且应用程序需要管理员权限才能启动安装程序,因此我不认为它是用户问题。我是Inno Setup的新手,有点卡在这里。

调试输出:

[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

1 个答案:

答案 0 :(得分:3)

当您执行批处理文件(或任何命令)时,其结果(或错误)根本不可见(特别是在使用runhidden标志时)或快速消失,您无法读取它们。< / p>

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

所以而不是:

/K

或同等的:

[Run] 
Filename: {app}\setup.bat; Parameters: "arguments"

使用:

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

然后控制台窗口在[Run] Filename: {cmd}; Parameters: "/K ""{app}\setup.bat"" arguments" 完成后停留,您可以看到最终的错误。

如果批处理文件以隐藏正在执行的命令的公共setup.bat命令启动,则使用@echo off临时注释掉该行也将有助于调试。

enter image description here