zoukankan      html  css  js  c++  java
  • 自动升级工具实现小结

    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

  • 相关阅读:
    hdu 3790 最短路径问题
    hdu 2112 HDU Today
    最短路问题 以hdu1874为例
    hdu 1690 Bus System Floyd
    hdu 2066 一个人的旅行
    hdu 2680 Choose the best route
    hdu 1596 find the safest road
    hdu 1869 六度分离
    hdu 3339 In Action
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/johden2/p/5788474.html
Copyright © 2011-2022 走看看