我有一个Java .jar应用程序,我想分发给Mac或Windows上的客户端。我想使用一个工具来获取我的jar文件并将其包装在Mac和Windows的.dmg和.exe包装器中,它们在运行时执行此操作:
可选功能:
查看适用于Mac的Package Maker和适用于Windows的Advanced Installer。
我已经将它们用于你列出的每个要求。
我没有将它们用于自动更新,但您可能必须在您的应用程序中构建该逻辑。
不过,不要指望他们为你做所有的工作。
期望花费相当多的时间为每个平台构建安装程序。
我确信Windows和Linux有很多选项。高级安装程序恰好是我使用过的唯一一个。
我相信Package Maker是Mac的标准。它非常棒且易于使用。
祝好运!
请注意,如果您将应用程序开发为netbeans平台应用程序,那么netbeans将为您生成跨平台安装程序(包括mac)。
事实上,它的netbeans应用程序对应用程序的外观和感觉几乎没有影响,你仍然可以使它的行为与任何独立的swing应用程序几乎相同。
这具有以下优点,我认为这是一个引人注目的选择: - 跨平台 - 免费 - 在运行安装程序之前不需要安装JDK - 集成了软件更新过程
已经有一些很好的答案,但我想JavaWebStart需要被提及。当然,它仅适用于Web deploment,但安装后您的应用程序也可能脱机运行。
功能(自动更新,JVM版本检查,桌面图标)可用。
需要考虑的事项:
自JDK 11以来,Java运行时环境(JRE)已经消失。
在此版本中,不再提供JRE或Server JRE。仅提供JDK。用户可以使用jlink创建较小的自定义运行时。
Reddit has a nice comment关于这个问题。
没有单独的JRE,只有包含所有JRE部分的JDK(例如java二进制文件)。此外,除非您打算向他们付钱,否则不要使用OracleJDK。 OpenJDK是新的默认值。
您可以使用jlink(随JDK一起提供)来分发Java Apps。它将为您构建专用的JRE。您不需要在客户端计算机上安装Java。
使用JDK 9引入的“jlink”工具将使应用程序开发人员更容易打包和部署专用运行时,而不是依赖于预安装的系统JRE。