使用NSSM在Windows 7上安装Java服务

使用NSSM在Windows 7上安装Java服务,java,windows-services,inno-setup,nssm,Java,Windows Services,Inno Setup,Nssm,我正在尝试使用Inno安装程序将Windows服务安装为运行在NSSM(非吸吮式服务管理器)下的JAR文件 最终使我的服务处于“暂停”状态,并且它似乎从未开始 由于java.exe的位置可以随着更新而改变,我希望能够在没有java.exe的显式路径的情况下运行该服务,如何在NSSM中没有显式路径的情况下启动java服务?上周我不得不做一些类似的事情。 当我用java.exe的完整路径替换“java”时,我可以运行一个服务,因此: nssm install JarService FullPath/

我正在尝试使用Inno安装程序将Windows服务安装为运行在NSSM(非吸吮式服务管理器)下的JAR文件

最终使我的服务处于“暂停”状态,并且它似乎从未开始


由于
java.exe
的位置可以随着更新而改变,我希望能够在没有
java.exe
的显式路径的情况下运行该服务,如何在NSSM中没有显式路径的情况下启动java服务?

上周我不得不做一些类似的事情。 当我用java.exe的完整路径替换“java”时,我可以运行一个服务,因此:

nssm install JarService FullPath/java.exe -jar service.jar

应该有用。我认为NSSM不会搜索其应用程序的路径。

我必须创建一个powershell脚本来运行java服务:

java.exe -jar service.jar
然后,我在Inno安装程序的[Run]部分中引用powershell的完整路径:

Filename: "{app}\nssm.exe"; Parameters: "install ""{#MyAppName}"" ""{sys}\WindowsPowerShell\v1.0\powershell.exe"" ""-ExecutionPolicy Unrestricted -File {app}\runservice.ps1"""; Flags: runhidden 

只要powershell不移动,这应该可以工作。

在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

启动服务时出现错误“windows无法启动服务,如果是非Microsoft服务,请参阅特定于服务的错误代码3”
java -cp "C:\Program Files\MyServiceName\MyServiceName.jar" com.package.MyServiceMainClass