Launch4J和Java Web Start的结合?

fin*_*nnw 8 java installer jnlp auto-update

我有一个工作的JNLP应用程序,我需要分发给各种非技术最终用户.

如果用户的计算机安装了最新的JVM,一切都很好.他们只需双击我发送的JNLP文件,Java Web Start完成剩下的工作.

现在我想分发一些有或没有JVM的东西,例如一个.exe自动下载兼容JVM的文件(如果不存在),然后调用javaws.exe下载.jar文件并启动应用程序.

Launch4J是我找到的最接近的匹配,但它无法启动程序javaws.exe.唯一的选择是javajavaw

我想要的产品可以:

  • 生成.exe不需要预先安装JVM 的自包含文件
  • .jnlp如果需要,解析文件并确定要下载的正确JVM(我知道Java Web Start可以在必要时下载JVM,但我想避免必须下载两个,第一个用于引导Java Web Start,第二个用于运行应用程序,可能需要特定但不同的JVM.)
  • 自动下载并安装JVM,而不是简单地将用户定向到Java下载页面或打开新的安装向导.
  • 必要时提示输入管理员密码(有关安装JVM的权限.我不认为这是内置于Sun JVM安装程序中的.)
  • 只显示一个安全对话框(我只想提示用户一次,确认他们信任生成的.exe,但我不希望第二次提示确认他们信任.jar来自同一来源并使用相同证书签名的文件.)我假设这需要自动下载程序在启动JWS之前安装证书.)
  • (不是必需的).jar与JVM同时在后台下载应用程序资源(例如文件).这将要求在安装JVM之前运行缓存,因此缓存必须以本机代码实现,DownloadService然后使用JNI 与缓存接口.

这样的产品是否存在?我怀疑它没有,但它值得一试.


更新我发现这篇文章有一些相关问题的解决方案,虽然它是专为离线安装而设计的,我主要关心的是在线安装.

Tho*_*mas 1

我遇到了同样的问题。我最终得到了一个 BAT、一个 Shell 以及最终的 Mac 版 DMG。

我发现有关使用 Nullsoft 安装程序为 Windows 自动安装 JRE 的评论:

http://nsis.sourceforge.net/Java_Launcher_with_automatic_JRE_installation

我认为在 JNLP 之外,您会发现很难实现所有平台的自动化。然而,在我的项目中,两年来,我还没有看到用户必须自己获取 java 的抱怨。我相信大多数机器已经具备了。Windows 用户抱怨没有快捷方式,但使用 vbs 很容易做到。

同样在 Mac DMG AppBundle 上,它们是指定 JRE 的方法。Mac 将拥有最新版本,除非是基于 PowerPC 的旧机器。在这种情况下就没有Java6了。

如果您最终拥有多个启动器,我会推荐自动更新策略。