我有一个Java .jar应用程序,我想分发给Mac或Windows上的客户端。我想使用一个工具来获取我的jar文件并将其包装在Mac和Windows的.dmg和.exe包装器中,它们在运行时执行此操作:
可选功能:
答案 0 :(得分:9)
查看适用于Mac的Package Maker和适用于Windows的Advanced Installer。
我已将它们用于您列出的每个要求。
我没有将它们用于自动更新,但您可能必须在您的应用中构建该逻辑。
不要指望他们为你做所有的工作。
期望花费大量时间为每个平台构建安装程序。
我确信Windows和Linux有很多选项。 高级安装程序恰好是我用过的唯一一个。
我相信 Package Maker 是Mac的标准。它非常棒且易于使用。
祝你好运!答案 1 :(得分:1)
对于在Windows上进行部署,我喜欢使用Launch4j来包装我的应用程序jar并创建可以检测和使用已安装的JRE的本机Windows可执行文件,或者允许您捆绑自己的JRE。它是快速,轻量级的,并且很容易使用Ant(或Maven)编写脚本,作为构建过程的一部分。
与此相结合,我通常使用NSIS来创建放入快捷方式的安装程序,并允许从控制面板进行安装/卸载/修复。通过一些工作,这也可以通过Ant编写脚本,也可以从Linux平台构建。
这些解决方案显然不适用于Mac部署,但我怀疑如果您希望为最终用户提供最佳体验,则必须为不同平台使用不同的工具。
答案 2 :(得分:1)
我已经研究了一段时间,以便我可以在Linux和Windows中安装该应用程序。我找到的最佳选择是 -
您可以在blogpost中找到有关如何使用原生信息的信息。但是在Linux中安装它让我使用.sh脚本。至于我,我的知识是有限的。希望这会有所帮助。
答案 3 :(得分:1)
请注意,如果您将应用程序开发为netbeans平台应用程序,那么netbeans将为您生成跨平台安装程序(包括mac)。
它的netbeans应用程序对应用程序的外观和感觉几乎没有影响,你仍然可以使它的行为与任何独立的swing应用程序几乎相同。
这具有以下优点,我认为这是一个引人注目的选择: - 跨平台 - 免费 - 在运行安装程序之前不需要安装JDK - 集成软件更新过程
答案 4 :(得分:1)
已经有一些很好的答案,但我想{}需要提及JavaWebStart。 当然,它仅适用于Web deploment,但安装后您的应用程序也可以脱机运行。
可以使用功能(自动更新,JVM版本检查,桌面图标)。
需要考虑的事项:
答案 5 :(得分:0)
Java运行时环境(JRE)自JDK 11起就消失了。
在此版本中,不再提供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。