我开发了一个桌面Swing应用程序,我正在考虑提供自动更新功能的最佳方法.我知道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.