Java Swing桌面应用程序中的自动更新function

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

我一直在考虑这种方法:

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

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

  • 启动“main.jar”。

我不知道如果我正在尝试重新发明轮子,或者如果有一个比我上面提到的更好的模式。

我们做了类似的事情。 我们刚刚通过https获取并下载了jar。 要知道您是否需要新的,我们只需检查流上的大小。 理论上可能不起作用,但实际上它确实有效。 通过获取jar所在的目录列表,解析它并下载每个jar,我们甚至变得更加漂亮,因此jar的名称也没有硬编码。 但是有一些丑陋的观点。

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

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

最后,没有办法用这个过程更新bootstraping jar。