如何在 Windows 上 JPackage RPM/PKG/DEB?

Posted

技术标签:

【中文标题】如何在 Windows 上 JPackage RPM/PKG/DEB?【英文标题】:How can I JPackage an RPM/PKG/DEB on Windows? 【发布时间】:2021-05-19 16:38:51 【问题描述】:

我正在尝试使用 JPackage 为 Linux 系统创建可执行文件。 我已经使用这个命令成功地为 Windows 创建了一个可执行文件:

jpackage --type msi --name EzQuiz --description "EzQuiz by Benjamin Schreiber" --app-version 1.0 --input D:\dev\IdeaProjects\fblaproj\out\artifacts\fbla_gui_jar --dest D:\Users\Work\Desktop\ --main-jar fbla_gui.jar --win-shortcut

但是,当我尝试使用相同的命令制作 RPM、DEB 或 PKG 时

jpackage --type rpm --name EzQuiz --description "EzQuiz by Benjamin Schreiber" --app-version 1.0 --input D:\dev\IdeaProjects\fblaproj\out\artifacts\fbla_gui_jar --dest D:\Users\Work\Desktop\ --main-jar fbla_gui.jar --linux-shortcut

我收到Error: Invalid or unsupported type: [rpm]

在 JPackage 命令文档中,我可以清楚地看到 RPM 是一个可接受的值 allowed values

如何在 windows 上使用 jpackage 创建 RPM/PKG/DEB 文件文件?

【问题讨论】:

当我在 Windows 上运行jpackage --help 时,我只看到Valid values are: "app-image", "exe", "msi",据我所知,这取决于您运行的平台。即我认为不可能在 Windows 上创建 rpm (至少不是本机)。不过,您可以使用 Linux JDK 发行版在 WSL 下运行 jpackage 来执行此操作。 是的,这很糟糕,而且 Java 曾经是真正的多平台。一种不太理想的可能性是在所需的目标操作系统(在您的情况下为 Linux)上调用 jpackage 一次,然后将输出文件复制到主机操作系统(在您的情况下为 Windows)上的某个位置。您现在可以在主机操作系统上调用 jpackage。您可以丢弃所有“runtime/”文件夹,并复制“app/”文件夹的内容并在目标结构中替换它们。合并后,您应该希望得到想要的结果。 【参考方案1】:

如果这家伙的介绍还是最新的,jpackage不支持跨平台编译,也不支持跨平台部署。看看https://www.youtube.com/watch?v=ZGW9AalZLN4中的第一张幻灯片

解决方法可能是涉及正确的目标机器或尝试关注https://www.oracle.com/technical-resources/articles/javase/javatomac3.html

【讨论】:

以上是关于如何在 Windows 上 JPackage RPM/PKG/DEB?的主要内容,如果未能解决你的问题,请参考以下文章

首发! JDK14之jpackage命令尝鲜

在 Linux 上创建 JPackage 安装程序 Java 应用程序时 linux-menu-group 应该是啥?

通过 jpackage 打包找不到或加载主类

jpackage在Java 16中可以投入生产

JPackage 版本错误(%JAVA_HOME% 设置为正确目录)

是啥导致了这个“jpackage 不存在”错误?