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

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

2012-10-16 13:04:24 ycb1689 阅读数 1055 文章标签: file工具htmlencoding服务器border 更多

分类专栏: Swing

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/ycb1689/article/details/8076637

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

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

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具体内容:

 

Html代码

 
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

  2. <html>

  3. <head>

  4. <title>XXX软件更新历史</title>

  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

  6. <style type="text/css">

  7. BODY,TABLE {}{

  8. FONT-SIZE: 12px;

  9. COLOR: #666666;

  10. FONT-FAMILY: 宋体;

  11. background-color: #ffffff;

  12. line-height: 160%;}

  13. </style>

  14. </head>

  15.  
  16. <body>

  17. <table width="600" border="1" align="center" cellpadding="2" cellspacing="0">

  18. <tr bgcolor="#ECECEC">

  19. <td align="center" width=50>版本</td>

  20. <td align="center" width=470>更新内容</td>

  21. <td align="center" width=80>日期</td>

  22. </tr>

  23. <tr>

  24. <td align="center" >1.0.3</td>

  25. <td ><p>1.实现自动升级功能<br>

  26. 2.增加版本号显示<br>

  27. 3.修正.<br>

  28. </p>

  29. </td>

  30. <td align="center" >2008-12-25</td>

  31. </tr>

  32. <tr>

  33. <td align="center" >1.0.2</td>

  34. <td ><p>1.修正了等字符而无法正确生成的错误<br>

  35. 2.修正了无法生成的错误<br>

  36. </p>

  37. </td>

  38. <td align="center" >2008-12-20</td>

  39. </tr>

  40. <tr>

  41. <td align="center" >1.0.1</td>

  42. <td ><p>1.增加通过<br>

  43. 2.修正因为的错误<br>

  44. </p>

  45. </td>

  46. <td align="center" >2008-12-15</td>

  47. </tr>

  48. <tr>

  49. <td align="center" >1.0.0</td>

  50. <td ><p>1.实现通过.功能<br>

  51. 2.实现通过.功能<br>

  52. </p>

  53. </td>

  54. <td align="center" >2008-12-11</td>

  55. </tr>

  56. </table>

  57. </body>

  58. </html>

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值