如何捆绑Mac / Windows的Java应用程序?

问题描述 投票:23回答:6

我有一个Java .jar应用程序,我想分发给Mac或Windows上的客户端。我想使用一个工具来获取我的jar文件并将其包装在Mac和Windows的.dmg和.exe包装器中,它们在运行时执行此操作:

  1. 检查是否安装了JRE;如果没有,它会从Oracle安装JRE6。否则,它将已安装的JRE更新到最新的1.6.x版本。
  2. 在“开始”菜单(在Windows中)或“应用程序”文件夹(在MacOSX中)中创建一个快捷链接到我的包装应用程序,并让我的应用程序使用上面的JRE运行
  3. 支持Windows的简单“卸载应用程序”。对于Mac,只需将.app拖到废纸篓即可删除。

可选功能:

  1. 支持平台独立的应用程序图标
  2. 支持jar的自动更新
  3. 运行我的.jar时支持JRE的参数
  4. Linux支持(.deb或.rpm)
java windows macos installer software-distribution
6个回答
9
投票

查看适用于Mac的Package Maker和适用于Windows的Advanced Installer

我已经将它们用于你列出的每个要求。

我没有将它们用于自动更新,但您可能必须在您的应用程序中构建该逻辑。

不过,不要指望他们为你做所有的工作。

期望花费相当多的时间为每个平台构建安装程序。

我确信Windows和Linux有很多选项。高级安装程序恰好是我使用过的唯一一个。

我相信Package Maker是Mac的标准。它非常棒且易于使用。

祝好运!


1
投票

对于在Windows上进行部署,我喜欢使用Launch4j来包装我的应用程序jar并创建可以检测和使用已安装的JRE的本机Windows可执行文件,或者允许您捆绑自己的JRE。它是快速,轻量级的,并且很容易使用Ant(或Maven)编写脚本,作为构建过程的一部分。

结合这一点,我通常使用NSIS创建一个放入快捷方式的安装程序,并允许从控制面板安装/卸载/修复。通过一些工作,这也可以通过Ant编写脚本,也可以从Linux平台构建。

这些解决方案显然不适用于Mac部署,但我怀疑如果您希望为最终用户提供最佳体验,则必须为不同平台使用不同的工具。


1
投票

我已经研究了一段时间,以便我可以在Linux和Windows中安装该应用程序。我找到的最佳选择是 -

您可以在此blogpost中找到有关如何使用本机的信息。但是在Linux中安装它让我使用.sh脚本。至于我,我的知识是有限的。希望这可以帮助。


1
投票

请注意,如果您将应用程序开发为netbeans平台应用程序,那么netbeans将为您生成跨平台安装程序(包括mac)。

事实上,它的netbeans应用程序对应用程序的外观和感觉几乎没有影响,你仍然可以使它的行为与任何独立的swing应用程序几乎相同。

这具有以下优点,我认为这是一个引人注目的选择: - 跨平台 - 免费 - 在运行安装程序之前不需要安装JDK - 集成了软件更新过程


1
投票

已经有一些很好的答案,但我想JavaWebStart需要被提及。当然,它仅适用于Web deploment,但安装后您的应用程序也可能脱机运行。

功能(自动更新,JVM版本检查,桌面图标)可用。

需要考虑的事项:

  • 您的应用程序需要签名才能拥有“普通”应用程序等访问权限。
  • afaik除了每次网络下载外,您不能以任何其他方式发送您的应用程序。

0
投票

自JDK 11以来,Java运行时环境(JRE)已经消失。

JDK 11 Release Notes州 -

在此版本中,不再提供JRE或Server JRE。仅提供JDK。用户可以使用jlink创建较小的自定义运行时。

Reddit has a nice comment关于这个问题。

没有单独的JRE,只有包含所有JRE部分的JDK(例如java二进制文件)。此外,除非您打算向他们付钱,否则不要使用OracleJDK。 OpenJDK是新的默认值。

您可以使用jlink(随JDK一起提供)来分发Java Apps。它将为您构建专用的JRE。您不需要在客户端计算机上安装Java。

oracle blog article提到 -

使用JDK 9引入的“jlink”工具将使应用程序开发人员更容易打包和部署专用运行时,而不是依赖于预安装的系统JRE。

© www.soinside.com 2019 - 2024. All rights reserved.