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

5
我需要建立一个安装程序,实现以下功能:
  1. 在客户端上安装我的jar包。
  2. 自动检测JRE是否已经安装(如果已安装,则不重新安装),否则在用户不点击其他按钮的情况下进行安装。
  3. 在客户端启动时自动启动应用程序。
  4. 跨Windows、Mac和Linux平台工作。
有什么好的想法吗?
6个回答

6
如果使用商业工具可以的话,我可以推荐install4j。其中1、2和4很容易用它实现,但是对于3我不确定。编辑:你可以通过将应用程序安装为“服务”来实现这一点,install4j支持所有平台的服务安装。引用自其Features页面:

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

< p >< em >编辑:关于 #2,JRE检测:install4具有相当不错的、灵活的JRE捆绑/检测选项。您可以包含一个JRE(静态或动态,共享或非共享),或者选择使用已经存在的JRE,并且在安装程序中下载一个JRE作为备选方案。查看这些文档以获取更多信息:安装程序如何查找JREJRE捆绑

了解我使用install4j的更多经验。)

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


顺便说一句,注意到Peter的回答后,我 绝对 推荐选择install4j而不是过于昂贵和笨重的InstallAnywhere。我们用install4j替换了InstallAnywhere;请参见上面的“更多关于我的经验”的链接。 - Jonik

1

我建议下载流行的Java程序(如limewire)的构建脚本源代码,并按照它们的示例进行操作。结束。

...或者你可以像我一样:

  • 我使用NSIS在Windows上完成了JRE检测和下载/安装可再分发文件。也许.msi比NSIS创建的installer.exe更好。我认为msi更像mac上的软件包,因此它们允许正确的更新。也许NSIS会创建MSI...不确定。
  • Mac只是一个Java应用程序包,您可以在info.plist中指定JRE和其他Java信息,并可以选择创建.pkg文件以向用户提供安装程序,并使用命令行dmg程序将其打包到dmg中。
  • 我没有做过Linux,也没有计划...抱歉:)

所有这些都是相当大量的工作。我首先做了Windows的东西,然后几年后才做了Mac的东西。

您可以将所有这些集成到NSIS构建脚本和Ant中。我记不清为什么没有使用install4j。可能我太吝啬了:)


1

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


1

商业工具如InstallAnywhere可以实现这一点。安装JAR文件(以及链接等)后,安装程序可以检查注册表是否已经安装了Java并进行相应的处理。只要安装程序支持所有所需平台,您就没问题。


1

你可以使用launch4j,它不会自动安装Java。但也许有一种方法可以通过打包JRE来实现它的工作。


0
我没有听说过任何能在所有这些平台上运作的东西,但是 JSmooth 可能会有所帮助(适用于 Windows)。我大约两年前使用过它,而且它的表现不错。

嗨,abyx。我需要你在JSmooth方面的帮助。你能帮我吗? - Venky
@Venkatesh - 我已经有4年没有使用它了,我不能说我记得任何东西...抱歉 :) - abyx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接