如何使用jpackage(Java 19)创建Windows服务作为启动器

4
我想使用jpackage创建一个安装程序,并将我的Java应用程序启动器注册为Windows服务。
我已安装WiX Toolset v3.11.2。
我尝试通过指定--launcher-as-service标志来创建我的安装程序,该标志在Java 19 JDK-8275062中得到支持,但是我遇到了以下错误:
> jpackage --type msi -i . --main-jar my-app.jar --name my-app --app-version "1.0.00" --dest . --win-shortcut --win-menu --launcher-as-service
Bundler MSI Installer Package failed because of java.lang.NullPointerException: Cannot invoke "jdk.jpackage.internal.InstallableFile.srcPath()" because "this.serviceInstaller" is null

文档提到了一个名为service installer executable的文件(service-installer.exe),作为需要考虑的资源。请问我能在哪里找到这个文件,并且最好做什么?
1个回答

4

我通过配置--resource-dir选项来指定NSSM资源路径,将nssm.exe重命名为service-installer.exe来解决这个问题。

> jpackage --type msi -i . --main-jar my-app.jar --name my-app --app-version "1.0.00" --dest . --win-shortcut --win-menu --resource-dir "C:\Program Files\nssm-2.24\win64" --launcher-as-service

1
是的,jpackage 已经被设计成与 NSSM 协同工作:https://github.com/openjdk/jdk/blob/master/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/service-config.wxi#L6。如果您想使用另一个服务包装器,比如 WinSW,您需要覆盖 service-config.wxiservice-install.wxi - Morgan Courbet
请给我更多关于这个答案的细节,因为安装程序将service_installer.exe称为一个服务,而不是我的应用程序的exe文件。 - Ahmed Saber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接