我正在尝试使用Inno Setup将Windows服务安装为在NSSM(非吸引服务管理器)下运行的JAR文件
nssm install JarService java -jar service.jar
nssm start JarService
最终将我的服务置于“暂停”状态,似乎无法启动。
由于java.exe
的位置随更新而变化,我希望能够在没有显式路径java.exe
的情况下运行服务,如何在没有显式路径的情况下启动java服务NSSM?
答案 0 :(得分:8)
上周我必须做一些非常相似的事情。 当我替换" java"使用java.exe的完整路径,我可以获得运行服务,所以:
nssm install JarService FullPath/java.exe -jar service.jar
应该有效。我不认为NSSM会搜索它的应用路径。
答案 1 :(得分:2)
在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
答案 2 :(得分:1)
我必须创建一个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不移动,这应该有用。