使用jpackage创建本机安装程序
名为 jpackage 的 java packaging tool 已作为 Java 开发密钥 (JDK) 版本 16 的一部分发布。
此工具与适用于各种平台的原生打包工具(例如,WIX 适用于 Windows,RPM 和 DEB 适用于 Linux 发行版,DMG 适用于 Mac)允许为 Java 应用程序构建本地安装程序然后可以作为可执行文件运行。对于分发,可能只分发应用程序的可执行文件,独立于安装程序(我不知道,我没有尝试过)。
一篇很好的教程风格的博客文章描述了使用 jpackage 工具为 Java 应用程序创建本机 Windows 安装程序:
使用jlink 和jdeps 自定义运行时映像
打包工具可以(可选)与jlink工具结合使用:
jlink - 将一组模块及其依赖项组装和优化到自定义运行时映像中
这允许您自定义应用程序的运行时映像,以仅包含应用程序代码、java 运行时和第 3 方库的所需自定义选定模块化部分,而不是分发完整的 java 运行时。
您还可以选择使用jdeps 工具来确定jlink 的输入。
关于使用 jdeps + jlink + jpackage + 原生包创建者(例如 wix/rpm/deb/dmg)的完整讨论超出了 StackOverflow 答案的范围,但可以在以下位置找到各种资源如果您搜索,请访问网络。
第三方工具可以帮助提供解决方案
如果您希望结合使用所有这些工具,事情可能会变得复杂,我建议使用第 3 方实用程序或模板来帮助执行此任务。例如:
对于 JavaFX 特定应用程序(因为您的问题带有 JavaFX 标记),您可以查看:
-
JPackageScriptFX -> “演示项目如何使用脚本通过 jdeps、jlink 和 jpackage 工具构建独立的、特定于平台的可执行文件和 JavaFX 应用程序的安装程序。”
有关原生移动部署,请参阅 Gluon Mobile
这个问题是针对 Windows 的,但为了完整起见,如果您的目标是在移动设备上部署本机应用程序,那么您可能需要使用第 3 方解决方案,例如 Gluon Mobile。
背景原理(如果不需要,请忽略)
使用jpackage 创建本机安装程序可能有点麻烦,那么您为什么要这样做呢?
以下是一些原因:
- 当应用程序通过使用
jpackage 创建的安装程序分发时,该应用程序可以安装在目标系统上,而无需用户手动安装其他依赖项(例如 Java 运行时)。安装程序将确保安装您的应用程序及其所需的任何依赖项。
- 该应用程序附带了自己定制的 Java 运行时版本。这意味着如果用户没有安装 JRE,并且如果他们安装了与您的应用程序不兼容的 JRE 版本,您的应用程序仍然可以正常运行。
- 可以使用目标平台的标准操作系统工具安装和卸载应用程序。这些平台的大多数用户都熟悉这些。
是的,Java 在很大程度上是跨平台的,但许多用户并不关心这一点,他们只希望他们的应用程序有一个流畅和熟悉的安装(和卸载)体验,jpackage 可以帮助完成那个。