`
wxq594808632
  • 浏览: 260389 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CS结构软件自动升级实现(一)

阅读更多

原文:http://www.blogjava.net/rochoc/archive/2009/01/04/249794.html

 

前段时间做了一个工具发布给公司的各部门使用后反馈了不少BUG,每次修改后均需要发邮件通知各用户替换最新版本,很不方便,因此后来就写了一个自动升级的功能,这样每次发布新的版本时只需要将其部署到自动升级服务器上,工具使用用户运行工具时就会连接到自动升级服务器,检查是否有版本更新,如果有则完成更新后再运行最新版本,否则就运行当前工具版本。
     为了使这个自动升级模块具有通用性,我将其做成可以单独运行的程序,而并非集成到工具中,这样则可以为各类软件提供自动升级的功能。自动升级模块采用SOCKET方式实现升级客户端与服务端的交互,通过版本控制文件autoupdate.xml来控制版本的更新,完成自动更新后会将历史清单history.htm也发送给客户端,并自动打开该文件,使用户可以对本次升级的具体内容一目了然。

详细实现:
autoupdate.xml具体内容:

 

 <?xml version="1.0" encoding="GBK"?>
 <Info>
   <Version>1.0.3</Version>
   <UpdateServer>
     <Ip>122.2.14.212</Ip>
     <Port>2110</Port>
   </UpdateServer>
   <Files>     
     <File> 
      <Name>mftest.jar</Name>  
      <Path>.\bin</Path>
      <SubVer>1.0.0.3</SubVer> 
    </File>
    <File> 
      <Name>run.bat</Name>  
      <Path>.</Path>
      <SubVer>1.0.0.3</SubVer> 
    </File>
    <File> 
      <Name>eglreco.fix</Name>  
      <Path>.\config\resource</Path>
      <SubVer>1.0.0.0</SubVer> 
    </File> 
    <File> 
      <Name>eglrec.fix</Name>  
      <Path>.\config\resource</Path>
      <SubVer>1.0.0.0</SubVer> 
    </File>
    <File> 
      <Name>dom4j-1.6.1.jar</Name>  
      <Path>.\lib</Path>
      <SubVer>1.0.0.0</SubVer> 
    </File>
    <File> 
      <Name>jaxen-1.1-beta-4.jar</Name>  
      <Path>.\lib</Path>
      <SubVer>1.0.0.0</SubVer> 
    </File>
    <File> 
      <Name>jxl.jar</Name>  
      <Path>.\lib</Path>
      <SubVer>1.0.0.0</SubVer> 
    </File>    
  </Files> 
</Info>

 其中UpdateServer用户描述服务端的IP和端口;Version为软件的大版本号,Files为软件涉及到的文件,其中的SubVer为具体文件的版本号,其他就顾名思义了。

 

 

history.htm具体内容:

 

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <title>XXX软件更新历史</title>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 <style type="text/css">
     BODY,TABLE {}{
      FONT-SIZE: 12px;
      COLOR: #666666;
      FONT-FAMILY:  宋体;
      background-color: #ffffff; 
      line-height: 160%;}
    </style>
</head>

<body>
<table width="600" border="1" align="center" cellpadding="2" cellspacing="0">
  <tr bgcolor="#ECECEC"> 
    <td align="center" width=50>版本</td>
    <td align="center" width=470>更新内容</td>
    <td align="center" width=80>日期</td>
  </tr>
  <tr> 
    <td  align="center" >1.0.3</td>
    <td ><p>1.实现自动升级功能<br>
              2.增加版本号显示<br>              
              3.修正.<br>
          </p>
      </td>
    <td align="center" >2008-12-25</td>
  </tr>
  <tr> 
    <td  align="center" >1.0.2</td>
    <td ><p>1.修正了等字符而无法正确生成的错误<br>
              2.修正了无法生成的错误<br>
          </p>
      </td>
    <td align="center" >2008-12-20</td>
  </tr>
<tr> 
    <td  align="center" >1.0.1</td>
    <td ><p>1.增加通过<br>
              2.修正因为的错误<br>
          </p>
      </td>
    <td align="center" >2008-12-15</td>
  </tr>
<tr> 
    <td  align="center" >1.0.0</td>
    <td ><p>1.实现通过.功能<br>
         2.实现通过.功能<br>
          </p>
      </td>
    <td align="center" >2008-12-11</td>
  </tr>
</table>
</body>
</html>

 

 

工作原理:
自动升级客户端首先会将本地的autoupdate.xml内容发送给服务端,服务端收到客户端的版本信息后与服务端本地的版本信息(autoupdate.xml)进行比较,首先比较Version,如果一致则通知客户端无需更新,如果不一致则检查Files中各文件的SubVer,服务端将SubVer不一致的文件发送给客户端,对于服务端有而客户端没有的文件也需要发送给客户端,处理完所有File后,服务端将本地的history.htm与传送给客户端,并通知客户端更新完毕;客户端收到更新完毕后的应答后自动打开history.htm,将更新历史信息显示给用户查看。

分享到:
评论

相关推荐

    MopacPro 量子化学 计算软件

    MOPAC模块:单点、几何优化、振动频率和COSMO实现并行,周期边界条件。 操作平台:Unix/Linux/Windows Mopac 2002 (通用半经验量子力学程序) 【URL】 http://www.cachesoftware.com/mopac/index.shtml ...

    asp.net知识库

    HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的...

    红蜘蛛网络教室.rar

    红蜘蛛软件主要在局域网络上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能...

    红蜘蛛多媒体网络教室v7.0版(build 1189)

    红蜘蛛软件主要在局域网络上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能...

    红蜘蛛多媒体网络教室v7.2版 build 1208

    红蜘蛛软件主要在局域网络上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能...

    超级有影响力霸气的Java面试题大全文档

     对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。  Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless ...

    C#微软培训资料

    15.4 接口的实现 .182 15.5 抽象类与接口 .195 15.6 小 结 .196 第十六章 组织应用程序 .198 16.1 基 本 概 念 .198 16.2 使用名字空间 .200 16.3 使用指示符 .203 16.4 程 序 示 例 .206 16.5 小 ...

    java 面试题 总结

    对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...

    红蜘蛛多媒体网络教室安装包和破解补丁

    红蜘蛛软件主要在局域网络上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能...

    深度学习(asp)网址导航系统 3.1.2(最新更新完美版)

    如果此软件你觉得不合你用,大可以不用,地球少了谁都一样转,我愿做一粒石子! --------------------------------------------------------------- 程序开发: 吕海鹏 与前一版本差异: 功能相似度:99%  界面...

    入门学习Linux常用必会60个命令实例详解doc/txt

    install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。 2.格式 (1)install [选项]... 来源 目的地 (2)install [选项]... 来源... 目录 (3)install -d [选项]... 目录... 在前两种格式中,会...

    1345个易语言模块

    Arhz_自动更新.ec Base64编解码.ec BASE64编解码模块.ec Bios.ec Bios 信息.ec BMP加密数据.ec BMP滤镜模块.ec BOX.EC BPL专用更新模块.ec BPL综合模 块.ec BPL高级模块.ec ButtonEx.ec bzfec.ec cards.ec change.ec...

    易语言模块914个

    cs.ec DES加密模块 1.0.ec DIY热键框模块.ec DLL注入模块.ec DOS命令模块.ec EC.EC EdbServer1.0客户端.ec EDB、高级表格、XLS互换.ec edb到html-1.0.ec EDB数据库客户端模块 1.0.ec edb数据库转Excel...

    网吧维护技术资料 合集

    7482 网吧维护\资料\xp实用技巧\升级到Windows XP应该考虑的6个方面.txt 2586 网吧维护\资料\xp实用技巧\双剑合璧 在Win XP下刻录音乐CD.txt 455 网吧维护\资料\xp实用技巧\取消WinXP专业版中的保留的带宽.txt 6217 ...

    1350多个精品易语言模块

    Arhz_自动更新.ec Base64编解码.ec BASE64编解码模块.ec Bios.ec Bios 信息.ec BMP加密数据.ec BMP滤镜模块.ec BOX.EC BPL专用更新模块.ec BPL综合模 块.ec BPL高级模块.ec ButtonEx.ec bzfec.ec cards.ec change.ec...

    海康视频卡动态库

    /// 此DSP上第一个编码通道在所有编码通道中的索引 /// uint firstEncodeChannelIndex; /// /// 此DSP所包含的解码通道个数 /// uint decodeChannelCount; /// /// 此DSP上第一个解码通道在所有解码...

    1000个【易语言模块大全汇总批量下载】

    2004-08-11 00:34 1667 598 易语言模块大全\cs.ec 2005-10-21 15:30 4047 1417 易语言模块大全\DES加密模块 1.0.ec 2005-08-06 14:55 12387 3460 易语言模块大全\DIY热键框模块.ec 2005-10-21 15:30 10219 3288 ...

    E语言1000模块

    2004-08-11 00:34 1667 598 易语言模块大全\cs.ec 2005-10-21 15:30 4047 1417 易语言模块大全\DES加密模块 1.0.ec 2005-08-06 14:55 12387 3460 易语言模块大全\DIY热键框模块.ec 2005-10-21 15:30 10219 3288 ...

Global site tag (gtag.js) - Google Analytics