<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    rochoc

    關于java、cobol、zos

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      6 Posts :: 1 Stories :: 21 Comments :: 0 Trackbacks

    摘要:前段時間做了一個工具發布給公司的各部門使用后反饋了不少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具體內容:
     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 {
     8FONT-SIZE: 12px;
     9COLOR: #666666;
    10FONT-FAMILY:  宋體;
    11background-color: #ffffff; 
    12line-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,將更新歷史信息顯示給用戶查看。
    posted on 2009-01-02 23:40 rochoc 閱讀(243) 評論(0)  編輯  收藏 所屬分類: JAVA

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV女人18毛片水真多| 亚洲卡一卡二卡乱码新区| 免费看一级一级人妻片| 国产精品国产午夜免费福利看| 亚洲一区免费视频| 国产香蕉九九久久精品免费| 亚洲人成激情在线播放| 最近高清国语中文在线观看免费| 亚洲中文字幕一二三四区苍井空| 免费电视剧在线观看| 亚洲色中文字幕在线播放| 日韩黄色免费观看| 美女免费视频一区二区三区| 亚洲免费无码在线| 男人天堂免费视频| 亚洲高清日韩精品第一区| 精品福利一区二区三区免费视频| 久久精品亚洲AV久久久无码| 日韩欧美一区二区三区免费观看| 亚洲AV无码国产精品永久一区| 免费在线黄色网址| 国产在线观看无码免费视频| 日韩亚洲Av人人夜夜澡人人爽| 亚洲一级免费毛片| 亚洲av成人一区二区三区观看在线| 亚洲?V无码乱码国产精品| 搡女人免费免费视频观看| 亚洲特级aaaaaa毛片| 在线免费一区二区| 一级毛片免费视频网站| 亚洲无线电影官网| 免费黄网在线观看| 国产成人精品免费大全| 亚洲精品美女在线观看| 国产乱子影视频上线免费观看| 中文字幕av免费专区| 亚洲av日韩av综合| 久久久久亚洲AV综合波多野结衣| 无码AV片在线观看免费| 亚洲成a∨人片在无码2023| 亚洲乱码国产一区三区|