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

Posted

技术标签:

【中文标题】自动检测 Java 是不是存在并自动启动应用程序的 JAR 安装程序【英文标题】:JAR installer that auto-detects if Java is there and autostarts the application自动检测 Java 是否存在并自动启动应用程序的 JAR 安装程序 【发布时间】:2010-11-03 00:16:41 【问题描述】:

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

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

知道怎么做吗?

【问题讨论】:

【参考方案1】:

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

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

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

(More about my experiences with install4j.)

对于其他工具,您可以查看之前关于 SO 的一些 Java installer 问题:

What’s the best way to distribute Java applications? Java Application Installers What is the best installation tool for java?

【讨论】:

注意到彼得的回答,顺便说一句,我肯定建议选择 install4j 而不是 InstallAnywhere,后者价格过高且笨拙。我们用 install4j 替换了 InstallAnywhere;请参阅上面的“更多关于我的经历”链接。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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

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

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

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

【讨论】:

【参考方案6】:

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

【讨论】:

嗨 abyx.. 我需要你在 JSmooth 方面的帮助.. 你能帮帮我吗? @Venkatesh - 我上次使用它已经 4 年了,我不能说我记得任何东西......对不起:)

以上是关于自动检测 Java 是不是存在并自动启动应用程序的 JAR 安装程序的主要内容,如果未能解决你的问题,请参考以下文章

java中如何检测本机指定的UDP服务端口是不是被占用?并且自动分配一个可用udp端口;

Derby 在 Java 应用程序中自动启动服务器并连接到数据库

检测是不是存在某些东西,然后自动化过程

如何检查程序是不是从自动启动运行?

Delphi:如何确定应用程序是不是在 Win32 / Win64 下运行并在 64 位上自动启动 64 位版本?

自动更新.检测外部程序版本号.管理员权限.禁止多次启动.代码混淆