`

CAutoupdater通用自动升级组件源码

阅读更多

CAutoupdater通用自动升级组件

 

1CAutoupdater通用自动升级组件介绍

1.1、组件介绍

C/S构的特点是能充分发挥客户端的处理能力,很多工作可以由客户端处理后再提交给服务器,对应的优点就是客户端响应速度快模式客户端以其强大的功能,丰富的表现力受到相当大部分用户的青睐,但是客户端布署,维护升级的成本却是非常的高的。

C/S客户端需要安装专用的客户端软件及运行环境。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。

CAutoupdater组件就是为了解决C/S在维护升级方面的问题而存在的,本组件可以快速建立升级部署应用,完全控制整个升级部署过程,全功能的、快速、易于使用,设立发布你的客户端应用。

本组件以最简单的模式提供给客户端在线布署和自动升级功能,彻底解决升级部署方面的后顾之忧。组件中提供的的接口以最简单的方式来对升级过程提供完全控制。CAutoupdater组件为你的软件集成稳定/高效的自动升级功能,是本升级组件的宗旨。

CAutoupdater组件四步完成升级工作:检查新版本、下载到临时目录、检查本地文件、拷贝到工作目录。

无需特被的服务器,传统的Web服务即可,如IIS等。服务器部署最新版的软件文件(文件列表保存在一个XML文件中),CAutoupdater组件对比分析服务器和客户端的XML对比配置文件,不同就更新。

CAutoupdater组件采用C#语言编写,可应用于目前大多流行语言开发的软件之中,不依赖任何类库,稳定,高效。

2.2CAutoupdater组件升级原理及过程。

2.2.1CAutoupdater组件工作原理。

2.1.1.1不必关心当前使用的版本

 

2.1.1.2对比分析服务端与客户端使用的软件版本

2.2.2、服务端部署。

要使用CAutoupdater组件必须部署服务端,服务端的部署很简单,在这儿我们选择传统的IIS进行部署。假设我们升级的相关文件放在服务端的DCAutoupdater文件夹下,打开IIS,新建一个网站,将其物理路径指向:D:\CAutoupdater,具体IIS的配置可参考相关文章,在这儿不再介绍。在这儿重点介绍服务端AutoupdateService.xml文件。

2.2.1AutoupdateService.xml文件

通过AutoupdateService.xml文件可以看到,目前我们新增了一个待更新的文件RDIFramework.NET.exe,其版本号通过lastver配置项提供,文件大小通过size配置项提供,还有一个配置项needRestart,是否需要重启应用程序,意思是说,更新本文件后,主程序是否需要重新启动。url配置项就是待更新文件实际的服务端地址,客户端通过这个地址来下载这个文件。

客户端是如何判断当前是否需要更新呢?这儿主要是通过lastver(最新的版本号)与size(文件大小)来判断,两者只要取其一即可,在CAutoupdater组件中是两者同时取,只要客户端对应文件与服务端对应文件的最新版本号或文件大小不一样,则更新。下面我们来看一下如何自动生成服务端的配置文件(AutoupdateService.xml),如下图所示:

2.2.2.1CAutoupdater服务端配置

在图2.2.2.1中,配置文件的名称默认不允许修改,服务端地址就是我们配置IIS时的URL地址,在我的这个实例中是:http://localhost:8010/,服务端目录就是IIS对应URL地址所在的物理地址,在我的实例中是:D:\CAutoupdater,在界面下方的文件列表中,我们可以添加需要更新的文件,对于选择错误的文件,也可以对其选中后移除,可以看到文件列表的第一列为“重启?”,如果选中,则表示客户端升级后,需要重启客户端主程序,以完成更新,这需要根据实际的项目要求做相应的设置,没有定论。单击“生成”按钮,即可自动生成服务端的配置文件AutoupdateService.xml,同时把文件列表中的文件拷贝到指定的“服务端目录”中去。这样,就完成了服务端的配置。

同时需要说明的时,同时要修改CAutoUpdater项目文件中的“Autoupdater.config”文件,此文件实例设置如下:

<?xml version="1.0" encoding="utf-8"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Enabled>true</Enabled>
 <ServerUrl>http://localhost:8010/AutoupdateService.xml</ServerUrl>
</Config>

其中的:http://localhost:8010/AutoupdateService.xml就是升级服务器上升级配置文件的URL地址。在客户端中也要包含这个文件,以让客户可以通过这个文件中配置的升级服务器的地址,找到待升级的文件。

2.3、客户端部署。

客户端的配置非常简单,只需引用“AutoUpdater.dll”文件,然后在需要的位置(一般是在程序启动时检查更新,也可让用户手动检查更新),我一般都是在程序启动时(在Program.cs文件的Main函数中)检查待更新的文件,参考代码为:

          #region check and download new version program
            bool bHasError = false;
            IAutoUpdater autoUpdater = new AutoUpdater();
            try
            {
                 autoUpdater.Update();
            }
            catch (WebException ex)
            {
                LogHelper.WriteException(ex);
                MessageBoxHelper.ShowErrorMsg("连接自动升级服务器出错,请检查网络连接或联系软件提供商。");
                bHasError = true;
            }
            catch (XmlException ex)
            {
                LogHelper.WriteException(ex);
                bHasError = true;
                MessageBoxHelper.ShowErrorMsg("AutoUpdate Error:Download the upgrade file error");
            }
            catch (NotSupportedException ex)
            {
                LogHelper.WriteException(ex);
                bHasError = true;
                MessageBoxHelper.ShowErrorMsg("AutoUpdate Error:Upgrade address configuration error");
            }
            catch (ArgumentException ex)
            {
                LogHelper.WriteException(ex);
                bHasError = true;
                MessageBoxHelper.ShowErrorMsg("AutoUpdate Error:Download the upgrade file error");
            }
            catch (Exception ex)
            {
                LogHelper.WriteException(ex);
                bHasError = true;
                MessageBoxHelper.ShowErrorMsg("AutoUpdate Error:An error occurred during the upgrade process");
            }
            finally
            {
                if (bHasError == true)
                {
                    try
                    {
                        autoUpdater.RollBack();
                    }
                    catch (Exception ex)
                    {
                        LogHelper.WriteException(ex);                     
                    }
                }
            }
            #endregion

客户端启动时,检查若有升级,就会弹出下面的窗口。

 

作者: EricHu
出处: http://blog.csdn.net/chinahuyong
微博: 腾讯
Email: umplatform@126.com或 406590790@qq.com
QQ 交流:406590790 
平台博客: 【CSDN】http://blog.csdn.net/chinahuyong
         【CNBLOGS】http://www.cnblogs.com/huyong
关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,精通DotNet,DB(SqlServer、Oracle等)技术。熟悉Java、Delhpi及Linux操作系统,有扎实的网络知识。在面向对象、面向服务以及数据库领域有一定的造诣。现从事DB管理与开发、WinForm、WCF、WebService、网页数据抓取以及ASP.NET等项目管理、开发、架构等工作。
如有问题或建议,请多多赐教!
本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。

分享到:
评论

相关推荐

    AutoUpdater(新版自动升级组件)源码 v2.0

    AutoUpdater是一款用于应用程序自动升级的组件,其新版v2.0提供了更为完善的更新...通过阅读和学习这些源码,开发者可以深入理解自动升级组件的工作原理,并将其应用于自己的项目中,提高软件的更新效率和用户体验。

    c#WinForm程序自动升级组件

    本文将深入探讨如何使用"C# WinForm程序自动升级组件"来实现这一功能。 首先,我们要理解自动升级组件的基本原理。自动升级通常包括检查新版本、下载更新、安装更新以及重新启动应用程序这几个步骤。C# WinForm自动...

    C# WinForm软件通用自动更新源码.rar

    对于C/S架构来说,软件更新是一个很常用的功能,下面介绍一种非常实用的软件自动升级方案 2)在bin\Debug\下新建一个AutoUpdateDir文件夹,然后再在AutoUpdateDir下新建一个AutoUpdateFiles文件夹。 3)在...

    C# winform自动升级组件

    本文将深入探讨“C# WinForm自动升级组件”的相关知识点。 自动升级组件是应用程序生命周期管理中的一个重要部分,它允许应用程序在运行时检查并安装最新的更新,确保用户始终使用的是软件的最新版本。这对于维护...

    Delphi版自动升级程序及源码

    Delphi X10.1开发的自动升级程序,支持HTTP、FTP协议、支持断点续传、压缩包自动解压、MD5文件校验、支持版本号对比更新、支持程序自我升级、支持手动及强制更新操作。软件运行稳定、界面美观、使用方便。(也可以不...

    uview组件源码,含样式

    uview组件源码,含样式

    delphi自动升级源码

    Delphi 自动升级源码就是用于实现这一功能的代码,它允许程序在运行时检查并下载最新的程序版本,然后自动完成安装过程。 自动升级系统通常包含以下几个关键部分: 1. **服务器端**:这是存储最新版本软件和更新...

    VB源码自动升级程序

    VB源码自动升级程序是一种用于更新应用程序的自动化工具,它主要设计用于VB(Visual Basic)开发的应用程序。VB是微软公司推出的一种可视化编程语言,它以其直观易用的界面和强大的编程能力深受开发者喜爱。然而,...

    Delphi文件版本比较自动升级源码

    "Delphi文件版本比较自动升级源码"是针对这种情况设计的一套解决方案,它允许开发者轻松地集成到自己的Delphi应用程序中,实现自动化、智能化的版本更新检查和下载安装。 Delphi是一款强大的Windows应用程序开发...

    易语言源码程序自动升级易语言源码例程.rar

    易语言源码程序自动升级易语言源码例程.rar 易语言源码程序自动升级易语言源码例程.rar 易语言源码程序自动升级易语言源码例程.rar 易语言源码程序自动升级易语言源码例程.rar 易语言源码程序自动升级易语言源码...

    Qt美化界面、美化组件、自定义组件源码

    "Qt美化界面、美化组件、自定义组件源码"这个主题涵盖了提升Qt应用视觉效果和功能定制的核心知识点。Qt库提供了丰富的功能,允许开发者创建出优雅且高效的应用程序,而不仅仅是基本的用户界面。 首先,Qt美化界面...

    基于TypeScript和C语言的通用闹钟组件设计源码

    该项目是基于TypeScript和C语言的通用闹钟组件设计源码,共包含262个文件,其中包括89个Makefile文件、67个CMake配置文件、41个JSON配置文件、29个TypeScript源文件、5个TXT文本文件、4个C语言源文件、4个XML配置...

    自动升级源码_delphi_千年客户端自动升级源码_千年_千年源码_源码.zip

    标题中的“自动升级源码_delphi_千年客户端自动升级源码_千年_千年源码_源码.zip”表明这是一个基于Delphi编程语言编写的客户端自动升级系统的源代码。Delphi是一种面向对象的 Pascal 编程语言,常用于开发桌面应用...

    微信小程序日历组件源码+使用说明.zip

    微信小程序日历组件源码+使用说明.zip微信小程序日历组件源码+使用说明.zip微信小程序日历组件源码+使用说明.zip微信小程序日历组件源码+使用说明.zip微信小程序日历组件源码+使用说明.zip微信小程序日历组件源码+...

    PB自动升级源码,数据库+http取文件升级

    在这个自动升级方案中,PB被用来编写客户端的升级组件,该组件能够与数据库交互,读取升级的相关信息。 1. **数据库取参数**:升级过程中,系统会从预先配置好的数据库中获取必要的升级信息,如新版本号、升级包URL...

    微信小程序 用户反馈组件 (源码)

    微信小程序 用户反馈组件 (源码)微信小程序 用户反馈组件 (源码)微信小程序 用户反馈组件 (源码)微信小程序 用户反馈组件 (源码)微信小程序 用户反馈组件 (源码)微信小程序 用户反馈组件 (源码)微信小程序 用户反馈...

    通用自动更新程序(源码)

    本项目名为"通用自动更新程序(源码)",主要使用C#编程语言,并结合WinForm界面设计,为用户提供了一种简单易用的方式来实现程序的自动更新。 首先,C#是一种面向对象的编程语言,由微软公司开发,广泛应用于...

    通用简易数据访问组件源码 GeneralEasyData.rar

    通用简易数据访问组件源码 源码描述: 一、源码特点 通用简易数据访问组件 Gem.Data,非ORM,无需配置,直接编写SQL语句操作数据。支持多种数据库 Access、MySql、SqlServer 等。 二、注意事项 开发环境为Visual ...

    基于vue的PC组件库和svg的图表组件源码+项目说明.zip

    基于vue的PC组件库和svg的图表组件源码+项目说明.zip基于vue的PC组件库和svg的图表组件源码+项目说明.zip基于vue的PC组件库和svg的图表组件源码+项目说明.zip基于vue的PC组件库和svg的图表组件源码+项目说明.zip基于...

Global site tag (gtag.js) - Google Analytics