我有一个NSIS脚本负责创建安装程序。此安装程序为我们的Java应用程序复制文件,然后使用prunsvr安装Windows服务。当我运行这个目标是使用launch for J构建的EXE文件时,一切正常。我希望能够在我的应用程序中响应WSM消息以执行一些清理/日志记录。我的NSIS脚本创建了这样的服务:
ExecWait '"$INSTDIR\prunsrv.exe" "//IS//${Project}" --DisplayName="IPTI ${Project}" --Install="$INSTDIR\prunsrv.exe" --Classpath="$INSTDIR\Host Interface.jar" --StartMode="java" --StartClass="com.ipti.ptl.hostinterfaceservice.HostInterfaceService" --StopMode="java" --StopClass="com.ipti.ptl.hostinterfaceservice.HostInterfaceservice" --Startup="auto" --StartPath="$INSTDIR"'
ExecWait 'net start "IPTI ${Project}"'
上述方法无法创建实际运行的服务,但此方法正常(以EXE为目标)
ExecWait '"$INSTDIR\prunsrv.exe" "//IS//${Project}" --DisplayName="IPTI ${Project}" --Install="$INSTDIR\prunsrv.exe" --StartMode=exe --StartImage="$INSTDIR\${Project}.exe" --Startup=auto --StartPath="$INSTDIR"'
ExecWait 'net start "IPTI ${Project}"'
我在主要方法中添加了以下内容,以便在不针对EXE时使用prunsvr:
public static void main(String[] args) throws Exception {
Common.deployResources();
if (args.length > 0 && args[0].equals("start")) {
HostInterfaceService hi = new HostInterfaceService();
hi.launch();
}
else {
System.exit(0);
}
}
我也尝试过使用--StartClass --StartMethod --StopClass和--StopMethod指定的start和stop方法。
无论我尝试什么,我总会得到一个错误。当我尝试从服务管理器启动时,我得到错误代码1或4.根本没有其他信息。我做错了什么?
我的活动查看器仅显示:
The IPTI Host Interface service terminated with service-specific error Incorrect Function.