2

我有一个 Java 桌面应用程序,现在我们将它作为 jar 分发到主应用程序的安装程序中(目前 Java 应用程序只是一个导入器/导出器)。但是由于 jar 比主应用程序更新得更频繁,我们正在考虑让它通过 Java Web Start 运行,因此它在启动时会独立更新。

我的问题是如何在安装程序中分发它,所以如果用户没有互联网,它会使用安装程序中的 jar 包(并复制到主应用程序文件夹中)但是当他启动并有互联网时,Java Web Start 会更新它?

编辑:我考虑制作两个 JNLP 文件,一个用于本地启动,一个用于在线启动,以便更新,但随后他们需要共享缓存的 jar,因此不会安装两次,我不知道这是否是可能的。

编辑,更多解释:

也许我没有很好地解释它。我有一个本机应用程序,并通过下载和 CD 作为 MSI 分发。通过这个应用程序,我们分发了主应用程序用来将数据交换为其他格式的 Java 应用程序(一个 jar)。MSI 安装本机应用程序并复制 jar(不是真正安装)。现在,如果用户有互联网并且发布了新的更新,则会下载并安装完整的 MSI(更新安装)。好?

好吧,我们喜欢使用 Java Web Start 以更时尚的方式只更新 jar,因此当 jar 独立于主应用程序运行时,它会更新。这有一个问题,如果我们只将它部署为 Java Web Start,如果用户将应用程序安装在没有互联网的计算机上(例如将 MSI 放在笔式驱动器或 cd 中),他将无法使用它,因为因为他没有互联网,所以他无法下载 jar。

现在是我的问题来了,我可以在 MSI 中部署 jar,但通过 Java Web Start 执行,所以如果用户有互联网,它会得到更新,但如果他没有互联网,它仍然可以使用 MSI 中的捆绑 jar ?

4

1 回答 1

2

..我可以在 MSI 中部署 jar,但通过 Java Web Start 执行,所以如果用户有互联网,它会更新,但如果他没有互联网,它仍然可以在 MSI 中使用捆绑 jar?

好的,我在这里制定一个计划,这可能是可行的。

让我们假设 MSI 能够做以下事情。

  • 如果缺少可用的版本或版本太低,请安装 JRE。JRE 需要包含在 MSI 中(以避免需要网络)。
  • 将 JWS 启动文件和 Jar(s)(以及本机..)作为临时文件解压缩到本地文件系统。
  • 使用“IMPORT-OPTIONS”调用javaws 工具,将代码库设置为本地文件系统中它们被解压的位置。

此时,应安装桌面图标和快捷方式,并准备启动程序。在 JNLP 中指定一些额外的选项非常重要——特别offline-allowed是为了确保应用程序。如果互联网不可用,仍然可以启动。

警告: 我对 MSI 没有任何经验,我使用导入选项的经验仅限于从构建文件中调用它们(在开发期间)。

于 2012-11-07T04:20:13.220 回答