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

  • 相关阅读:
    The Django Book学习笔记 04 模板
    The Django Book学习笔记
    Python标准库 datetime
    Python %s和%r的区别
    Python转载
    Python while 1 和 while True 速度比较
    Git 时光穿梭鸡 删除文件 以及批量删除文件
    git reset soft,hard,mixed之区别深解
    Git 时光穿梭鸡 撤销修改
    Git 时光穿梭鸡 管理修改
  • 原文地址:https://www.cnblogs.com/johden2/p/5788474.html
Copyright © 2011-2022 走看看