我正在尝试使用 Inno Setup 将 Windows 服务安装为在 NSSM(非吸盘服务管理器)下运行的 JAR 文件
nssm install JarService java -jar service.jar
nssm start JarService
最终将我的服务置于“暂停”状态,它似乎从未开始。
由于 的位置java.exe
可以随着更新而改变,我希望能够在没有明确路径的情况下运行服务java.exe
,如何在 NSSM 中没有明确路径的情况下启动 java 服务?
我正在尝试使用 Inno Setup 将 Windows 服务安装为在 NSSM(非吸盘服务管理器)下运行的 JAR 文件
nssm install JarService java -jar service.jar
nssm start JarService
最终将我的服务置于“暂停”状态,它似乎从未开始。
由于 的位置java.exe
可以随着更新而改变,我希望能够在没有明确路径的情况下运行服务java.exe
,如何在 NSSM 中没有明确路径的情况下启动 java 服务?
就在上周,我不得不做一些非常相似的事情。当我用 java.exe 的完整路径替换“java”时,我可以运行一个服务,所以:
nssm install JarService FullPath/java.exe -jar service.jar
应该管用。我认为 NSSM 不会搜索其应用程序的路径。
在 Windows 2012 R2 操作系统上,我使用了:
nssm install MyServiceName "C:\Program Files\MyServiceName\start.bat"
然后在批处理文件 start.bat 中,我有:
java -cp "C:\Program Files\MyServiceName\MyServiceName.jar" com.package.MyServiceMainClass
我必须创建一个 powershell 脚本来运行 java 服务:
java.exe -jar service.jar
然后,我在 Inno Setup 的 [Run] 部分引用了 powershell 的完整路径:
Filename: "{app}\nssm.exe"; Parameters: "install ""{#MyAppName}"" ""{sys}\WindowsPowerShell\v1.0\powershell.exe"" ""-ExecutionPolicy Unrestricted -File {app}\runservice.ps1"""; Flags: runhidden
只要powershell不动,这应该可以工作。