`

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提供了更为完善的更新...通过阅读和学习这些源码,开发者可以深入理解自动升级组件的工作原理,并将其应用于自己的项目中,提高软件的更新效率和用户体验。

    delphi 自动升级程序源码

    在给定的"delphi 自动升级程序源码"中,我们可以了解到如何利用Delphi构建一个能够自动检查并执行软件更新的应用。这个源码利用了`UrlDownloadToFile` API,这是一个Windows API函数,主要用于从指定URL下载文件到...

    Qt写的自动升级程序源码

    【Qt自动升级程序详解】 Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的API和工具,使得开发者可以构建美观且功能强大的应用程序。在软件开发中,自动升级功能是必不可少的一部分,它能够帮助...

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

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

    uview组件源码,含样式

    uview组件源码,含样式

    VB源码自动升级程序

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

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

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

    OAuth2通用组件升级源码

    这个"OAuth2通用组件升级源码"很显然涉及到OAuth2的实现与更新。在这个项目中,我们可以看到一系列的文件,这些文件共同构成了一个OAuth2的认证示例。 首先,我们看到`OAuth2Demo\Login.aspx`,这是一个ASP.NET网页...

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

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

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

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

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

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

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

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

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

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

    Bootstrap风格的组件源码.zip

    Bootstrap风格的组件源码是一个模板/引导/样板文件的应用程序,包括大量的优秀的开放源码工具和框架。不过据其他朋友反映这个和 Twitter的Bootstrap半毛钱关系也没有,只是长得比较像。这套源码的优点就是自定义的...

    AxureUX WEB端交互原型通用组件模板库 v3

    AxureUX WEB端交互原型通用组件模板库 v3 (组件列表) AxureUX WEB端交互原型通用组件模板库 v3 (组件列表) AxureUX WEB端交互原型通用组件模板库 v3 (组件列表) AxureUX WEB端交互原型通用组件模板库 v3 (组件列表) ...

    易语言源码易语言透明组件源码.rar

    易语言源码易语言透明组件源码.rar 易语言源码易语言透明组件源码.rar 易语言源码易语言透明组件源码.rar 易语言源码易语言透明组件源码.rar 易语言源码易语言透明组件源码.rar 易语言源码易语言透明组件源码....

    易语言源码易语言画板办公组件源码.rar

    易语言源码易语言画板办公组件源码.rar 易语言源码易语言画板办公组件源码.rar 易语言源码易语言画板办公组件源码.rar 易语言源码易语言画板办公组件源码.rar 易语言源码易语言画板办公组件源码.rar 易语言源码...

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

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

    易语言源码易语言API创建组件源码.rar

    易语言源码易语言API创建组件源码.rar 易语言源码易语言API创建组件源码.rar 易语言源码易语言API创建组件源码.rar 易语言源码易语言API创建组件源码.rar 易语言源码易语言API创建组件源码.rar 易语言源码...

    易语言组件移动自动排列源码

    "易语言组件移动自动排列源码"是一个针对易语言(EasyLanguage)开发环境的特定功能,它允许程序员自动调整和排列GUI组件,如按钮、文本框、列表视图等,以适应界面的变化或保持美观的对齐方式。易语言是由中国...

Global site tag (gtag.js) - Google Analytics