公司主要项目为CS端,经常遇到客户需求变更及bug处理,在没有引用自动更新之前每次更新程序,必须手动对每个客户端进行更新,这样导致技术支持工作量特别大,也给客户不好的印象,因此我需要一个自动更新程序!

       我们实现自动更新大概有这2种实现方式:

       一、通过TCP网络通讯的方式,客户端程序监听,当服务端有更新文件的时候,自动比对本地版本,如果服务器版本大于本地版本就可以更新,这种实时性好,不需要等到客户第二次重启的时候才发现有版本更新

       二、在服务端部署文件更新服务器,通过Web访问。同样是当服务端有更新文件的时候,平台第二次打开自动比对本地版本,如果服务器版本大于本地版本就可以更新,这种需要客户在第二次运行平台的时候才有效(可能有同学说可以在客户端实时下载读取服务端文件进行对比,但一般不这样做)

       我们下面主要讲第二种实现方式:

       自动更新实现原理:运行客户端先启动自动更新程序,程序会先通过升级文件所在服务器端的网址下载服务器上面的UpdateList.xml到本来临时文件夹,再与本地UpdateList.xml内容进行版本比较,当服务器版本上有文件大于本地版本的时候,就把对应文件下载下来进行覆盖更新工作(如果是压缩文件新进行解压);自动更新完成后启动客户端程序关闭自动更新程序;

        自动更新实现准备工作: 1.发布一个web自动更新文件站点,里面包括需要更新的文件及UpdateList.xml(描述更新文件列表、版本、时间、更新文件服务器所在地址等);

      

                                                  

<?xml version="1.0" encoding="utf-8" ?>
<AutoUpdate>
  <!--升级文件所在服务器端的网址-->
  <URLAddress URL="http://127.0.0.1/SecWS/update"/>
  <Application>
    <!--主程序入口-->
    <EntryPoint ApplicationID="SFBR_ABDoorMangerSystem.exe"/>
    <Location ip="127.0.0.1"/>
    <Version Num="1.0.0.0"/>
  </Application>
  <UpdateInfo>
    <!--升级文件的更新日期-->
    <UpdateTime Date= "2017-01-22 12:00"/>
    <!--升级文件的版本号(每次更新必须升级版本)-->
    <Version Num= "9.0.0.0"/>
  </UpdateInfo>
  <UpdateFileList>
    <!--升级文件列表-->
    <UpdateFile Ver="1.0.0.0" FileName= "updateAB.rar" ContentLength="21k"/>
  </UpdateFileList>
</AutoUpdate>
View Code

相关文章: