`
wxq594808632
  • 浏览: 262470 次
  • 性别: 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,将更新历史信息显示给用户查看。

分享到:
评论

相关推荐

    CS结构自动升级模块(vb.net)

    CS结构自动升级模块是软件开发中的一个重要组成部分,尤其是在桌面应用(Client-Server,简称CS结构)中。VB.NET是一种流行的编程语言,常用于构建这样的应用程序。这个模块的主要目的是确保用户始终运行的是最新...

    面向CS模式下的客户端软件自动升级的实现.rar

    以上是对基于CS模式客户端软件自动升级实现的全面解析,涵盖了从检测更新到安全验证,再到实际升级和用户体验的各个环节。通过理解并应用这些知识点,开发者可以构建出高效、可靠的自动升级系统,为用户提供无缝的...

    用C_实现CS模式下软件自动在线升级

    【C#实现CS模式下软件自动在线升级】 在C/S(Client/Server)架构的软件中,维护性和升级便利性一直是开发者面临的重要挑战。传统的手动升级方式效率低下,且随着软件规模的扩大,升级成本逐渐增加。为了解决这一...

    用C#实现C/S模式下软件自动在线升级

    在C/S(客户端/服务器)模式下,软件自动在线升级是一项关键功能,它允许应用程序能够自动检查并安装最新的更新,从而提高用户体验并确保系统的安全性。本篇将详细讲解如何使用C#来实现这一功能,同时利用XML作为...

    用C# 实现CS模式下软件自动在线升级.doc

    【C#实现CS模式下软件自动在线升级】 在C/S(Client/Server)模式的应用程序中,由于客户端软件需要在用户设备上安装,因此维护和升级通常是一项挑战。手动升级不仅耗时,而且可能导致用户数据丢失或软件版本不一致...

    cs系统在线升级

    【cs系统在线升级】是指在Client/Server(C/S)架构的软件中实现自动在线更新的能力。C/S模式的软件在维护、部署和升级方面存在挑战,导致一些企业倾向于选择Browser/Server(B/S)结构。然而,对于那些必须采用C/S模式...

    JAVA CS SWT RCP 在线升级 自动更新 源码

    在Java CS SWT RCP中实现在线升级和自动更新,通常涉及以下几个关键知识点: 1. **SWT**:SWT是Java中的一个图形用户界面(GUI)库,它是Java AWT和Swing的替代品,提供了与操作系统更紧密的集成,提供了更丰富的...

    ASP.NET基于CS结构的企业人事管理系统的设计与实现_project.rar

    ASP.NET是一种由微软开发的用于构建Web应用程序的框架,它主要应用于企业级应用系统的开发,如本项目"ASP.NET基于CS结构的企业人事管理系统的设计与实现"所示。在本文中,我们将详细探讨该系统的设计原理、实现方法...

    winfrom等Cs结构,客户端在线更新程序

    客户端在线更新程序是现代软件工程中的一个重要组件,它允许应用程序自动检查并下载新版本,以确保用户始终运行的是最新、最稳定、功能最全的软件。这种机制对于提供持续服务和修复错误至关重要。以下是关于WinForms...

    ASP.NET基于CS结构的企业人事管理系统的设计与实现(源代码+论文).zip

    总的来说,ASP.NET基于CS结构的企业人事管理系统设计与实现是一个涵盖了多个IT领域的综合项目,涉及软件工程方法、数据库设计、Web开发技术、用户体验优化以及安全性等多个方面。通过这个项目,开发者不仅能提升技术...

    电信设备-一种基于CS结构的织物疵点检测信息管理系统.zip

    总结,这种基于CS结构的织物疵点检测信息管理系统利用先进的信息技术,实现了纺织生产中的自动化疵点检测和信息管理,对提升产品质量、优化生产流程具有重要意义。同时,系统的设计和实施充分考虑了行业特性、用户...

    c# winfrom自动升级,完整源代码例子 fw2.0

    在.NET框架下,C#开发的WinForm应用程序可以利用各种技术实现自动升级功能,以便用户无需手动下载安装新版本。本示例“c# winfrom自动升级,完整源代码例子 fw2.0”提供了一个简单易懂的方法,适用于C# WinForm应用...

    基于CS结构的图书销售系统 使用VS2008+ACCESS开发 功能强大 包括库存、销售统计和客户关系管理功能

    总结,基于CS结构的图书销售系统通过VS2008和ACCESS的结合,实现了图书行业的高效管理。系统的每个模块都紧密围绕着图书销售的核心业务,旨在通过信息化手段提升整体运营效率,同时也为未来的扩展和升级留有空间。...

    omron-cs1d

    该控制器通过采用热备冗余(Hot-Standby)技术实现双CPU模块的无缝切换,在一个CPU出现异常时能够立即切换到另一个正常工作的CPU上,从而确保系统持续稳定运行,几乎不受异常情况的影响。 #### 二、双CPU系统的特点...

    C#aspnet自动更新升级工具源码

    本源码是使用C#语言和Winform框架编写的,其目标是实现一个与QQ升级类似的用户界面和功能。以下是关于这个工具的详细知识: 1. **C# Winform编程**: C# 是一种面向对象的编程语言,由微软开发,广泛应用于Windows...

    基于cs结构的仓库智能管理系统毕业论文.doc

    《基于CS结构的仓库智能管理系统》是一篇关于利用面向对象技术设计和开发仓库管理软件的毕业论文。本文主要探讨了如何运用C/S(客户端/服务器)架构构建一个智能化的仓库管理系统,涵盖了系统从构思到实际应用的全...

    横河cs1000 DCS全部随机资料3.rar

    DCS系统是一种集成了控制、监控、通讯和数据采集功能的集成化系统,能实现工厂自动化中的高级控制策略。 这个名为“横河cs1000 DCS全部随机资料3.rar”的压缩包可能包含以下关键知识点: 1. **横河CS1000系统概述*...

    C/S结构的在线考试系统

    【C/S结构的在线考试系统】是一种传统的客户端-服务器(Client/Server,简称C/S)架构的软件应用,尤其在教育信息化领域中被广泛应用。在这个系统中,客户端(通常是用户计算机上的应用程序)与服务器端(负责数据...

    基于CS结构的实验室管理系统方案.doc

    本文档主要探讨了一种基于客户端/服务器(Client/Server,简称C/S)架构的实验室管理系统的设计与实现。 一、系统开发综述 管理信息系统(Management Information System,MIS)起源于20世纪50年代,随着计算机...

Global site tag (gtag.js) - Google Analytics