如何使用NSIS脚本将应用程序安装为windows服务?

如何使用NSIS脚本将应用程序安装为windows服务?,nsis,Nsis,我已经为我的java项目编写了nsis脚本。我已使用此nsis脚本成功创建了一个exe文件。安装过程的最后一步是使用批处理文件将应用程序安装为windows服务。我已使用以下代码通过命令行成功安装 "c:\program Files\program Files\test\bin\prunsrv.exe" //IS//servicename --Startup=auto --Jvm="Auto" --Classpath="%CLASSPATH%" --StartMode=jvm --StartCl

我已经为我的java项目编写了nsis脚本。我已使用此nsis脚本成功创建了一个exe文件。安装过程的最后一步是使用批处理文件将应用程序安装为windows服务。我已使用以下代码通过命令行成功安装

"c:\program Files\program Files\test\bin\prunsrv.exe" //IS//servicename --Startup=auto --Jvm="Auto" --Classpath="%CLASSPATH%" --StartMode=jvm --StartClass=com.class.name  --StartParams start --StopMode=jvm --StopClass=com.class.name --StopParams stop
Exec '"$INSTDIR\bin\prunsrv.exe" //IS//servicename --Startup=auto --Jvm="Auto" --Classpath="%CLASSPATH%" --StartMode=jvm --StartClass=com.class.name  --StartParams start --StopMode=jvm --StopClass=com.class.name --StopParams stop' 
我通过nsis脚本执行的相同命令运行不正常。我尝试了以下代码

"c:\program Files\program Files\test\bin\prunsrv.exe" //IS//servicename --Startup=auto --Jvm="Auto" --Classpath="%CLASSPATH%" --StartMode=jvm --StartClass=com.class.name  --StartParams start --StopMode=jvm --StopClass=com.class.name --StopParams stop
Exec '"$INSTDIR\bin\prunsrv.exe" //IS//servicename --Startup=auto --Jvm="Auto" --Classpath="%CLASSPATH%" --StartMode=jvm --StartClass=com.class.name  --StartParams start --StopMode=jvm --StopClass=com.class.name --StopParams stop' 

$INSTDIR引用此目录c:\program Files\test

在执行之前使用ExpandEnvStrings展开%classpath%。

问题是究竟是什么?该服务是否部分安装或根本未安装?配置错误?问题是当我运行nsis脚本时,应用程序未作为windows servcie安装。如何在命令中使用ExpandEnvString?我试过ExpandEnvString$0%CLASSPATH%Exec'$INSTDIR\bin\prunsrv.exe”//IS//servicename--Startup=auto--Jvm=“auto”--CLASSPATH=“$0”--StartMode=Jvm--StartClass=com.class.name--StartParams start--StopMode Jvm StopClass=com.class.name--stopArams-stopArams-stop“但这不起作用,我觉得没问题,尝试将NSIS和工作批处理文件执行与Process Monitor进行比较。。。