码迷,mamicode.com
首页 > 其他好文 > 详细

自动升级工具实现小结

时间:2016-08-19 19:01:57      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

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.  工具的源代码

AutoUpdateSolution

 

5.  参考资料

http://blog.csdn.net/zhuweisky/article/details/38756617

http://www.cnblogs.com/wangiqngpei557/archive/2011/05/13/2045434.html

 

自动升级工具实现小结

标签:

原文地址:http://www.cnblogs.com/johden2/p/5788474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!