10

我开发了一个桌面 Swing 应用程序,我正在考虑提供自动更新功能的最佳方式。我知道 JavaWebStart 提供了这个,但我认为它不适合我的需要,因为我需要读取本地文件,所以我需要对 jar 进行签名。此外,JWS 需要额外的工作来部署在服务器中,而现在我只需要上传 .jar。

我一直在考虑这种方法:

  • 第一个 JAR(永远不需要更新)加载启动画面,检查 config.xml 中的当前版本并将其与服务器 config.xml 进行比较。

  • 如果服务器版本较新,询问用户是否要更新。在这种情况下,下载新的“main.jar”、新的“config.xml”和新的启动/图标,检查 MD5SUM,并用新文件替换旧文件。

  • 启动“main.jar”。

我不知道我是想重新发明轮子还是有比我上面提到的更好的模式。

4

1 回答 1

5

我们做了类似的事情。我们刚刚通过 https 得到它并下载了 jar。要知道您是否需要一个新的,我们只需检查流上的大小。从理论上讲,这可能行不通,但在实践中确实行得通。我们通过获取 jars 所在的目录列表、解析它并下载每个 jars 来变得更加有趣,因此 jar 的名称也没有硬编码。不过,有几个难看的地方。

首先是启动一个新的 jvm 进程来启动新的 jar 并不是那么简单。

其次,如果您的更新在中间失败,您必须确保不会损坏您的 jar。

最后,无法使用此过程更新引导 jar。

于 2009-09-10T03:35:02.690 回答