JAR安装程序,可自动检测Java是否存在并自动启动应用程序

我需要构建一个执行以下操作的安装程序:

  1. 在客户端上安装我的jar。
  2. 自动检测是否安装了JRE(在这种情况下它不会重新安装),否则安装它而无需用户单击另一个按钮。
  3. 引导客户端时自动启动应用程序。
  4. 适用于Windows,Mac和Linux。

知道如何去做吗?

如果商业工具还可以,我可以推荐install4j 。 1,2和4很容易用它做,但大约3我不确定。 编辑 :您可以通过将您的应用程序安装为“服务”来实现这一点,install4j支持所有平台。 从其function页面引用:

install4j提供对生成和安装服务(守护进程)的完全支持。 对于服务,install4j在Windows上生成服务可执行文件,在Mac OS X上生成启动项,在Unix / Linux平台上生成/停止脚本。

编辑 :关于#2,JRE检测:install4具有非常好的,灵活的JRE捆绑/检测选项。 您可以包含JRE(静态或动态,共享或不共享)或者更喜欢使用已存在的JRE,并可以从安装程序中下载JRE作为后备。 请查看这些文档以获取更多信息: 安装程序如何查找JRE和JRE软件包 。

( 更多关于我对install4j的体验 。)

对于其他工具,您可以在SO上检查一些早期的Java安装程序问题:

  • 分发Java应用程序的最佳方式是什么?
  • Java应用程序安装程序
  • 什么是最好的java安装工具?

像InstallAnywhere这样的商业工具可以做到这一点。 安装JAR(以及链接等)之后,安装程序可以检查注册表是否已安装Java并继续。 只要安装程序支持所有需要的平台,您就可以了。

您可以使用launch4j ,但它不会自动安装java。 但也许有一种方法可以通过打包JRE来实现这一目标。

您可能还想查看BitRock InstallBuilder ,它提供了内置function来执行您想要的操作。 我们很乐意为您构建一个示例安装程序,请给我们留言。

我建议下载像limewire这样的流行Java程序的构建脚本的源代码,并按照他们的例子。 结束。

……或者你可以像我一样做:

  • 如果Windows上的NSIS需要,我已经完成了JRE检测和可再发行的下载/安装。 也许.msi比NSIS创建的installer.exe更好。 我相信msi更像是mac上的软件包,所以它们允许适当的更新。 也许NSIS会创建MSI ……不确定。
  • Mac只是一个Java App捆绑包,您可以在info.plist中指定JRE和其他Java信息,您可以选择创建一个.pkg文件,为用户提供安装程序,并使用命令行dmg程序以dmg捆绑。
  • 我还没有做过Linux,也不打算…抱歉:)

所有这些都是相当大的工作。 我第一次做Windows的东西,然后几年后做了Mac的东西。

您可以在NSIS构建脚本和Ant中集成所有这些。 我不记得为什么我没有使用install4j。 可能我太便宜了:)

没有听说任何适用于所有这些平台的东西,但JSmooth可能会有所帮助(适合您在Windows上的需求)。 大约2年前我用过它,效果很好。