我正在尝试使用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
答案 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
临时注释掉该行也将有助于调试。