日期:2014-05-20  浏览次数:20558 次

Java 软件自动升级 (最优答案100分,按劳分配,回帖有分,不够再加。)
软件结构如下:

一个客户端软件。
1 包含 入口的jar文件
2. 一些必要的lib 包
3. 一些配置文件。

需求:
1.能自动更新的最新版本。包括jar, 配置文件等.
2.能回退到以前的版本。
3.更精准的控制,具到某个用户用那个版本。
4.必须考虑更新的准确性(如网络问题,造成更新错误). 还是性能问题,等等。



请大家提供下现有可供参考的开源框架。 或提供自己的思路均可。



------解决方案--------------------
学习来的
------解决方案--------------------
客户端远程连接服务器 验证版本...
然后取要下载的内容 
然后放到合适的目录进行升级........

以上好像是废话
------解决方案--------------------
自动升级模块做以下的事情:
   1.下载最新包放入到update文件夹中
   2.下载完毕后通知主线程,主线程探知有更新,将提示用户自动更新完毕。请用户重启程序,然后自动把update目录中jar包和相关lib覆盖现有版本(只要切断自己应用中的相关业务,你的jar包和lib是可以被覆盖的,若不能覆盖,请写个批处理文件,进行更新)
  3.配置文件同上处理
回滚版本模块做如下事情:
   1.通知服务器用户想回滚的具体版本,服务器上应该保存用户每次更新版本的细节信息
   2.服务器响应有此版本,则开始做和升级模块一样的事情。
更新准确性问题:
  所有文件更新前,去更改自己包中某一个配置文件(它永远不更新,或者很少更新),里面有一个值表明是否正在更新,更新完毕后将此值更新会原值。每次启动时自动检查此值,若发现值不正常,则通知用户继续更新。

------解决方案--------------------
Java Web Start(以下简称JWS)是SUN提供的一种通过Web来部署和发布Java 程序的新技术,它既可以用来发布Application,也可以用来发布Applet,它获去年全球Java技术最佳创意奖。它仅在第一次运行时下载程序,以后的事情,就全全交给JWS,包括版本的自动更新和维护。这是我们曾经梦寐以求的事情,程序运行在客户端(本地运行,当然有足够的速度),但不用去安装配置客户端,也不用去考虑版本升级后对客户端的维护,这就是JWS提供给我们的好处之一。OK,下面我们就来看看如何玩转JWS,本文仅用发布 Application来做说明。
http://www.ibm.com/developerworks/cn/java/l-webstart/index.html
------解决方案--------------------
学习学习~~~
------解决方案--------------------
前来学习
------解决方案--------------------
关注学习
------解决方案--------------------
一个初学者,学习学习!!
------解决方案--------------------
目前站的还没那么高,帮你顶一下``
------解决方案--------------------
关注学习一下
------解决方案--------------------
我认为啊,通过比较文件的最后修改时间,就可以更新!在更新的同时,写一个文件,里面就是以前的版本的文件的最后修改时间等等!然后就可以回到以前了!
------解决方案--------------------
引用:
谢谢楼上各位,提供了很好的思想、建议。

Java Web Start确实是考虑过,但是它是否能支持这两点呢?
   2.能回退到以前的版本。
   3.更精准的控制,具到某个用户用那个版本。

就我了解,不支持
------解决方案--------------------
这个高深了,mark了
------解决方案--------------------
现成的框架没听说过,即便有也不一定满足你自己项目的需求,说说大体思路:

1. 首先确保现在的项目结构清晰,一般桌面应用把构成软件的文件及资源分成三大类,类库(各种jar包或class文件)、资源(图标图片html文档音频文件视频文件等等,也可以打包成相应的jar包)、配置(包括用户的配置文件程序本身的等等)。

2. 更新程序自称体系,和你的应用完全分离开,便于移植到之后的项目里,和主程序间的通信可通过管道或本机开的端口或干脆通过启动更新程序时的命令行参数进行。

3. JAR文件命名时带版本号便于今后管理,是否有更新或更新下载是否无误通过JAR的MD5或SHA1校验(比较保险),更新的JAR经校验无误后直接和老版本JAR放到相同目录下(JAR文件名称带版本号所有不会冲突),使用哪些JAR启动应用程序可以通过更新管理器在更新完成时生成的版本清单配置。清单中可以把JAR按不同的程序版本编组分类,在应用启动时可以读取此清单,默认使用最新的JAR组做classpath启动应用。如果想返回之前的版本也无需回滚安装,只需使用清单中之前版本的JAR组启动应用即可。不同用户可以单独保存自己的清单文件和使用哪个版本启动应用等配置信息到自己的用户目录下(可以通过环境变量获取)。

4. 更新站点等信息和查找更新的策略等也可通过配置文件保存,可以参考一下 Eclipse 的更新程序,Eclipse 的程序更新系统是我见过的最好的了。

------解决方案--------------------