【问题标题】:Java self updating Application [duplicate]Java自我更新应用程序[重复]
【发布时间】:2016-02-26 22:38:27
【问题描述】:

真正需要的是一个 java 应用程序,它可以检查来自 Internet 的 XML 或 TXT 文件的新更新,该文件显示已更新的文件,如下所示:

V.1.0.5
class1.java
img/img1.jpg

V.1.0.6
class1.java
class3.java
class4.java

应用程序。应该检查从他的当前版本更新到最新版本并列出更新的文件,在这种情况下应该是:

class1.java
img/img1.jpg
class3.java
class4.java

应用程序应从以下链接下载此文件:http://webadress.com/appfiles/XXXXXXX 其中 XXXXXXX 是文件名。

我面临的主要问题是应用程序如何在同一个应用程序 JAR 文件中下载和替换这些文件。

我考虑过一个引导程序(启动主应用程序并检查更新的第二个应用程序。但不能真正让它工作,因为它应该提取主应用程序 jar 替换并下载新的更新文件然后重新- 将文件归档到一个 jar 文件中并启动它。

我真正需要的是一个应用程序,它可以通过文件库自行更新文件,而不是替换整个 jar 文件。因为带宽确实是个大问题。

非常感谢您提前提供帮助:)

【问题讨论】:

  • 您可以将新文件放入新 jar 以替换旧类。 Java 将按照它们在类路径变量中出现的顺序从 jar 中获取类。
  • Java 已经具备执行此操作的功能,并且它是每个 Java 安装的一部分:Java Web Start。 (为什么会有ant 标签?)
  • 我建议退后一步,看看你用来构建和部署的系统。让您的部署人员发现新版本并自动重新部署应用程序,而不是期望应用程序自行升级。不能期望应用程序发现对源代码的更改,在本地下载和编译这些内容。

标签: java auto-update


【解决方案1】:

您需要在两个独立的 JVM 中使用两个独立的程序:您的程序和更新程序。更新程序(可能应用户请求)检查应下载的内容,下载文件,然后警告用户。

用户然后保存他的工作,关闭应用程序并告诉更新程序修补应用程序二进制文件,例如通过替换 JAR、更新数据库和/或配置文件、符号链接等等。

我不知道有任何框架可以简化这样一个系统的编写——因此很可能您必须自己编写每段代码。由于这不是一件容易的事,您应该考虑简单地编写一个向导(有框架)来完全替换二进制文件并适用于首次安装和升级的保守选择。此外,考虑到有时您需要更新程序自行升级!

【讨论】:

    最近更新 更多