gpt4 book ai didi

java - 如何通过 NSIS 脚本使 prunsvr 工作

转载 作者:行者123 更新时间:2023-12-01 12:30:12 27 4
gpt4 key购买 nike

我有一个 NSIS 脚本,负责创建安装程序。该安装程序复制我们的 java 应用程序的文件,然后使用 prunsvr 安装 Windows 服务。当我针对使用 J 的 launch 构建的 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 指定的启动和停止方法。

无论我尝试什么,我总是会遇到错误。当我尝试从服务管理器启动时,我收到错误代码 1 或 4。根本没有其他信息。我做错了什么?

我的事件查看器仅显示:

The IPTI Host Interface service terminated with service-specific error Incorrect Function.

最佳答案

根据这个Blog-Entry您必须将 prunsrv.exe 重命名为您的服务名称。

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

关于java - 如何通过 NSIS 脚本使 prunsvr 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25982149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com