5

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

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

知道该怎么做吗?

4

6 回答 6

6

如果商业工具没问题,我可以推荐install4j。1、2和4很容易用它来做,但关于3我不确定。编辑:您可能可以通过将您的应用程序安装为“服务”来实现,install4j 支持所有平台。引用其功能页面:

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

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

更多关于我使用 install4j 的经验。)

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

于 2009-06-15T12:51:43.250 回答
1

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

于 2009-07-18T16:16:07.243 回答
1

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

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

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

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

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

于 2009-11-01T05:57:26.847 回答
1

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

于 2009-06-15T12:44:33.283 回答
1

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

于 2009-06-15T12:56:35.343 回答
0

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

于 2009-06-15T12:46:08.210 回答