Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使prunsvr从NSIS脚本工作_Java_Windows Services_Nsis - Fatal编程技术网

Java 如何使prunsvr从NSIS脚本工作

Java 如何使prunsvr从NSIS脚本工作,java,windows-services,nsis,Java,Windows Services,Nsis,我有一个NSIS脚本负责创建安装程序。此安装程序复制java应用程序的文件,然后使用prunsvr安装windows服务。当我针对一个使用launchforj构建的EXE文件运行这个程序时,一切都正常。我希望能够响应应用程序中的WSM消息以执行一些清理/日志记录。我的NSIS脚本创建如下服务: ExecWait '"$INSTDIR\prunsrv.exe" "//IS//${Project}" --DisplayName="IPTI ${Project}" --Install="$INSTDI

我有一个NSIS脚本负责创建安装程序。此安装程序复制java应用程序的文件,然后使用prunsvr安装windows服务。当我针对一个使用launchforj构建的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)

我在我的主要方法中添加了以下内容,以便在不以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.
根据这一点,您必须将prunsrv.exe重命名为您的服务名称


也许您可以先使用这里提供的示例服务进行尝试。

对不起,我本应该删除这个问题,但问题是--Install标志如何处理安装路径中的空格。在NSIS内部,这必然导致空间被截断后的一切。修复方法是从安装该服务的NSIS调用批处理脚本。prunsrv.exe的名称似乎不相关,但您必须将prunmgr.exe重命名为服务名称才能使其工作。
The IPTI Host Interface service terminated with service-specific error Incorrect Function.