1. 功能介绍
网上有很多客户端自动升级工具,本例也结合了网上的升级工具方法。自动升级方式总结起来就那几种方式,通过版本号比对、更新日期比对 或其他随机码比对方式,比较客户端版本信息与服务器端版本信息是否一致,如果不一致,则下载服务器端更新包自动覆盖本地文件,下载文件的方式可以采用FTP,也可以采用Http等方式。
该工具实现了下面几个功能:
(1) 上传打包文件(Zip包)到服务器站点,生成最新的更新包文件
(2) 客户端运行软件,检测本地软件版本信息(更新日期)是否与服务器上的版本信息是否一致,如果不一致,从服务器上下载最新的更新包到本地
(3) 解压本地下载的最新更新包,并覆盖本地文件,实现文件的更新
(4) 更新完成,返回继续运行原程序
该工具的存在的一些不足: 打包文件建议将本地所有项目文件都打包,不要只打变更文件,否则有可能中间有几个更新包客户端未更新时,直接下载最新的更新包更新时,可能会由于缺少一些中间更新包的文件导致程序无法运行。
有兴趣的可以调整下实现中间更新包如果没有更新,依次下载未更新的包更新,直到最后一个更新包更新完成就可以了
其他说明: 如果要实现单个文件的升级管理,这与管理到升级包的原理是一样的,配置文件中记录每个文件的更新时间就可以了,然后与本地版本文件中的文件进行一一对比,逐个下载更新即可。
2. 项目结构及原理
2.1 项目结构
项目结构分为5个方案文件:
FG.MES.AutoUpdateNew : 自动更新的执行文件,实现版本信息检测,本从服务器站点下载版本,实现版本更新。
FG.MES.AutoUpdateUtil: 工具类,如解析XML,文件操作,解压文件等
FG.MES.UploadApp:上传更新包到服务器站点
FG.MES.UploadWeb: 配置的服务器站点,客户端自动更新文件通过访问该服务器站点下载更新包到本地
TestUpdateApp: 测试项目,测试自动更新效果
2.2 原理说明
3. 操作流程
3.1 配置上传的服务器Web站点(FG.MES.UploadWeb)
这里配置为http://127.0.0.1:9000,注意增加站点的文件读写权限
3.2 修改升级程序的站点地址为服务器Web地址
3.3 打包并上传到服务器
(1) 将项目文件打包为.Zip压缩包(此例中为TestUpdateApp中bin目录下的所有文件),本处只包含2个文件,打包为
(2) 修改上传项目中的系统配置文件,配置服务器站点,增加新项目节点(支持多项目升级)
(3) 通过上传工具” FG.MES.UploadApp”上传更新包
(4) 提示上传成功后,会在Web站点下多出一个目录,里面存放的是最新的更新包,以及项目的服务器版本文件(版本文件里存放的是当前最新的版本,更新包信息)
服务器版本文件SysVersion.xml(该文件为自动生成),内如如下
3.4 运行客户端程序检测升级
(1) 客户端程序应该包含升级文件,文件结构如
(2) 运行“TestUpdateApp.exe”,系统自动检测是否有版本变更
(3) 如果有版本变更,则下载升级,升级完成时,提示【升级成功】
说明: 这一步会生成"客户端版本文件",下次再升级就可以校验本地版本与服务器端版本是否一致,如果一致就不升级
(4) 退出再重新启动客户端程序后,系统检测到已经为最新版本(本地版本与服务器版本一致),就会跳过更新操作环节,直接运行程序
4. 工具的源代码
5. 参考资料
http://blog.csdn.net/zhuweisky/article/details/38756617
http://www.cnblogs.com/wangiqngpei557/archive/2011/05/13/2045434.html