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

前段时间做了一个工具发布给公司的各部门使用后反馈了不少BUG,每次修改后均需要发邮件通知各用户替换最新版本,很不方便,因此后来就写了一个自动升级的功能,这样每次发布新的版本时只需要将其部署到自动升级服务器上,工具使用用户运行工具时就会连接到自动升级服务器,检查是否有版本更新,如果有则完成更新后再运行最新版本,否则就运行当前工具版本。

为了使这个自动升级模块具有通用性,我将其做成可以单独运行的程序,而并非集成到工具中,这样则可以为各类软件提供自动升级的功能。自动升级模块采用SOCKET方式实现升级客户端与服务端的交互,通过版本控制文件autoupdate.xml来控制版本的更新,完成自动更新后会将历史清单hisTory.htm也发送给客户端,并自动打开该文件,使用户可以对本次升级的具体内容一目了然。

详细实现:

autoupdate.xml具体内容:

1<?xml version="1.0" encoding="GBK"?> 2<Info> 3  <Version>1.0.3</Version> 4  <UpdateServer> 5    <Ip>122.2.14.212</Ip> 6    <Port>2110</Port> 7  </UpdateServer> 8  <Files> 9    <File>10      <Name>mftest.jar</Name>11      <Path>./bin</Path>12      <SubVer>1.0.0.3</SubVer>13    </File>14    <File>15      <Name>run.bat</Name>16      <Path>.</Path>17      <SubVer>1.0.0.3</SubVer>18    </File>19    <File>20      <Name>eglreco.fix</Name>21      <Path>./config/resource</Path>22      <SubVer>1.0.0.0</SubVer>23    </File>24    <File>25      <Name>eglrec.fix</Name>26      <Path>./config/resource</Path>27      <SubVer>1.0.0.0</SubVer>28    </File>29    <File>30      <Name>dom4j-1.6.1.jar</Name>31      <Path>./lib</Path>32      <SubVer>1.0.0.0</SubVer>33    </File>34    <File>35      <Name>jaxen-1.1-beta-4.jar</Name>36      <Path>./lib</Path>37      <SubVer>1.0.0.0</SubVer>38    </File>39    <File>40      <Name>jxl.jar</Name>41      <Path>./lib</Path>42      <SubVer>1.0.0.0</SubVer>43    </File>44  </Files>45</Info>

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

hisTory.htm具体内容:

1234XXX软件更新历史567  BODY,TABLE {}{8FONT-SIZE: 12px;9COLOR: #666666;10FONT-FAMILY: 宋体;11background-color: #ffffff;12line-height: 160%;}13  1415161718 19  版本20  更新内容21  日期22 23 24  1.0.325  

1.实现自动升级功能26       2.增加版本号显示27       3.修正.28     

29   30  2008-12-2531 32 33  1.0.234  

1.修正了等字符而无法正确生成的错误35       2.修正了无法生成的错误36     

37   38  2008-12-2039 4041  1.0.142  

1.增加通过43       2.修正因为的错误44     

45   46  2008-12-1547 4849  1.0.050  

1.实现通过.功能51     2.实现通过.功能52     

53   54  2008-12-1155 565758

工作原理:

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

与其在那里苦苦挣扎,碍于面子硬撑,倒不如微笑着面对,

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

相关文章:

你感兴趣的文章:

标签云: