软件结构如下:一个客户端软件。
1 包含 入口的jar文件
2. 一些必要的lib 包
3. 一些配置文件。需求:
1.能自动更新的最新版本。包括jar, 配置文件等.
2.能回退到以前的版本。
3.更精准的控制,具到某个用户用那个版本。
4.必须考虑更新的准确性(如网络问题,造成更新错误). 还是性能问题,等等。请大家提供下现有可供参考的开源框架。 或提供自己的思路均可。
1 包含 入口的jar文件
2. 一些必要的lib 包
3. 一些配置文件。需求:
1.能自动更新的最新版本。包括jar, 配置文件等.
2.能回退到以前的版本。
3.更精准的控制,具到某个用户用那个版本。
4.必须考虑更新的准确性(如网络问题,造成更新错误). 还是性能问题,等等。请大家提供下现有可供参考的开源框架。 或提供自己的思路均可。
1.下载最新包放入到update文件夹中
2.下载完毕后通知主线程,主线程探知有更新,将提示用户自动更新完毕。请用户重启程序,然后自动把update目录中jar包和相关lib覆盖现有版本(只要切断自己应用中的相关业务,你的jar包和lib是可以被覆盖的,若不能覆盖,请写个批处理文件,进行更新)
3.配置文件同上处理
回滚版本模块做如下事情:
1.通知服务器用户想回滚的具体版本,服务器上应该保存用户每次更新版本的细节信息
2.服务器响应有此版本,则开始做和升级模块一样的事情。
更新准确性问题:
所有文件更新前,去更改自己包中某一个配置文件(它永远不更新,或者很少更新),里面有一个值表明是否正在更新,更新完毕后将此值更新会原值。每次启动时自动检查此值,若发现值不正常,则通知用户继续更新。
http://www.ibm.com/developerworks/cn/java/l-webstart/index.html
2.能回退到以前的版本。
3.更精准的控制,具到某个用户用那个版本。
3.更精准的控制,具到某个用户用那个版本
原因如下:
a.由于 resource中的jar是可以跟版本号的
b.jnlp文件是可以动态生成的,比如我用个sevelet去生成,似乎可以。但既便如此,仍有问题:那些配置文件我没有办法给版本号啊.
其实我不一定要某个框架完全实现我的全部功能,部分实现也可,只要是开源的,我可以在它的基础上改,也可以省写功夫。
2.下载完毕后通知主线程,主线程探知有更新,将提示用户自动更新完毕。请用户重启程序,然后自动把update目录中jar包和相关lib覆盖现有版本(只要切断自己应用中的相关业务,你的jar包和lib是可以被覆盖的,若不能覆盖,请写个批处理文件,进行更新)
3.配置文件同上处理
回滚版本模块做如下事情:
1.通知服务器用户想回滚的具体版本,服务器上应该保存用户每次更新版本的细节信息
2.服务器响应有此版本,则开始做和升级模块一样的事情。
更新准确性问题:
所有文件更新前,去更改自己包中某一个配置文件(它永远不更新,或者很少更新),里面有一个值表明是否正在更新,更新完毕后将此值更新会原值。每次启动时自动检查此值,若发现值不正常,则通知用户继续更新。
JWS,技术比较新的技术,期待学习下
不过web start只支持更新到最新的,不支持回滚的。
如果不同,取最新版本中变化的部分。重启java(用程序调用 msdos或者shell)
使用java方式来操作更新与还原版本,(svnkit可以在非商业软件中免费使用)
parent pom自我更新
最后一个不太清楚