我开发了一个桌面Swing应用程序,我正在考虑提供自动更新功能的最佳方法。 我知道JavaWebStart提供了这个,但我认为它不适合我的需要,因为我需要读取本地文件,所以我需要签署jar。此外,JWS需要额外的工作才能在服务器中部署,而现在我只需要上传.jar。
我一直在考虑这种方法:
第一个JAR(永远不需要更新)加载启动画面,检查config.xml中的当前版本并将其与服务器config.xml进行比较。
如果服务器版本较新,请询问用户是否要更新。在这种情况下,下载新的“main.jar”,新的“config.xml”和新的splash / icon,检查MD5SUM,并用新的文件替换旧文件。
启动“main.jar”。
我不知道如果我正在尝试重新发明轮子,或者如果有一个比我上面提到的模式更好的模式。
答案 0 :(得分:5)
我们做了类似的事情。我们刚刚通过https获取并下载了jar。要知道您是否需要新的,我们只需检查流上的大小。理论上可能不起作用,但实际上它确实有效。通过获取jar所在的目录列表,解析它并下载每个jar,我们甚至变得更加漂亮,因此jar的名称也没有硬编码。但是有一些丑陋的观点。
首先是启动一个新的jvm进程来启动新jar并不是那么简单。
其次,如果您的更新在中间失败,您必须确保不会破坏您的jar。
最后,没有办法用这个过程更新bootstraping jar。