基于Microsoft Updater Application Block(MUAB)实现自动组件更新和无缝安装
2009-01-16 14:33
1021 查看
Smart Client另外一个非常重要的特性,即如何保持版本自动更新。微软也提供了相应的Application Block,即Microsoft Update
Application Block,下面,结合我们的代码,看一下如何在应用当中编写版本自动更新的功能:
服务器端配置。
a. 在Web Server建立一个Web 虚拟路径。
b. 分开存放各个版本的组件到该虚拟路径下。
c. 在Web虚拟路径根路径下,放入一个Manifest.xml文件。
客户端配置。
a. 建立一个应用路径。
b. 拷贝AppStart.exe和其应用程序配置文件到该路径。
c. 修改应用程序的配置程序的MUAB配置区域的信息称为响应的服务器和客户端配置。
自动更新及无缝安装的程序实现。
获得MUAB。
this.gengXinKongZhi = new ApplicationUpdateManager();
注册应用程序组件更新事件。
a. gengXinKongZhi.DownloadStarted +=new UpdaterActionEventHandler(ChengXuXiaZaiKaiShi );
开始下载事件的注册到需求查询控制类的ChengXuXiaZaiKaiShi()过程
b. gengXinKongZhi.FilesValidated +=new UpdaterActionEventHandler(ChengXuWenJianKeYiYunXing );
下载文件校验成功事件的注册需求查询控制类clsXuQiuChaXunKongZhi的()ChengXuWenJianKeYiYunXing()过程
当组件下载并校验成功后调用运行新程序过程。首先调用XuQiuChaXunForm的YunXinChengXu()过程提示用户是否运行新程序,如果用
户同意则在调用 需求查询控制类clsXuQiuChaXunKongZhi的YunXingXinChengXu()过程。处理过程是县获得更新程序所在目录然后启
动一个新的进程运行新版本程序,最后销毁当前运行程序。
c. gengXinKongZhi.UpdateAvailable +=new UpdaterActionEventHandler(ChengXuZuJianKeYiXiaZai );
检测到新版本的事件注册需求查询控制类clsXuQiuChaXunKongZhi的ChengXuZuJianKeYiXiaZai ()过程
ChengXuZuJianKeYiXiaZai()处理过程首先判断网络是否连接,如离线退出。在上线的情况下先提示用户是否现在新版本程序,同意
则下载,否则不下载同时停止组件更新。
d. gengXinKongZhi.DownloadCompleted +=new UpdaterActionEventHandler(ChengXuXiaZaiWanCheng);
下载完成后事件注册在需求查询控制类clsXuQiuChaXunKongZhi的ChengXuXiaZaiWanCheng ()过程
ChengXuXiaZaiWanCheng()通过委托事件调用主界面的XiaZaiJieShu()过程,功能实现提示用户下载完成。
gengXinKongZhi.FilesValidationFailed += new UpdaterActionEventHandler(gengXinKongZhi_FilesValidationFailed);
下载文件校验失败事件注册在需求查询控制类clsXuQiuChaXunKongZhi的gengXinKongZhi_FilesValidationFailed ()过程。
提示用户下载失败。
启动组件更新。
this.gengXinXC = new Thread(new ThreadStart(this.gengXinKongZhi.StartUpdater) );
this.gengXinXC.Name="应用程序更新线程";
gengXinXC.Start();
停止组件更新。
停止组件更新TingZhiZuJianGengXin ()过程封装在需求控制类clsXuQiuChaXunKongZhi类中。该过程处理过程:
a. 停止组件更新服务,销毁MUAB
this.gengXinKongZhi.StopUpdater();
b.销毁组件更新线程。
开发总结
基于Microsoft Application Blocks开发Smart Client应用过程中,大大降低应用实现的技术风险,也节省了我们的开发周期。总结
起来,我们认为基于Application Blocks的开发具有以下这样一些优点。
1. Application Blocks提供了一种全面,系统而且可行的Smart Client应用开发解决方案。
2. Application Blocks的调用非常简单,甚至MUAB的使用主要是一种配置过程。
3. Application Blocks定义了大量接口,为实现可能的扩展提供了很大的空间。
4. Application Blocks是以开源方式提供,这种方式使我们收益匪浅。
5. Application Blocks和.net Framework紧密结合。
使用Microsoft Application Blocks开发应用的确是一种愉快的过程。
Application Block,下面,结合我们的代码,看一下如何在应用当中编写版本自动更新的功能:
服务器端配置。
a. 在Web Server建立一个Web 虚拟路径。
b. 分开存放各个版本的组件到该虚拟路径下。
c. 在Web虚拟路径根路径下,放入一个Manifest.xml文件。
客户端配置。
a. 建立一个应用路径。
b. 拷贝AppStart.exe和其应用程序配置文件到该路径。
c. 修改应用程序的配置程序的MUAB配置区域的信息称为响应的服务器和客户端配置。
自动更新及无缝安装的程序实现。
获得MUAB。
this.gengXinKongZhi = new ApplicationUpdateManager();
注册应用程序组件更新事件。
a. gengXinKongZhi.DownloadStarted +=new UpdaterActionEventHandler(ChengXuXiaZaiKaiShi );
开始下载事件的注册到需求查询控制类的ChengXuXiaZaiKaiShi()过程
b. gengXinKongZhi.FilesValidated +=new UpdaterActionEventHandler(ChengXuWenJianKeYiYunXing );
下载文件校验成功事件的注册需求查询控制类clsXuQiuChaXunKongZhi的()ChengXuWenJianKeYiYunXing()过程
当组件下载并校验成功后调用运行新程序过程。首先调用XuQiuChaXunForm的YunXinChengXu()过程提示用户是否运行新程序,如果用
户同意则在调用 需求查询控制类clsXuQiuChaXunKongZhi的YunXingXinChengXu()过程。处理过程是县获得更新程序所在目录然后启
动一个新的进程运行新版本程序,最后销毁当前运行程序。
c. gengXinKongZhi.UpdateAvailable +=new UpdaterActionEventHandler(ChengXuZuJianKeYiXiaZai );
检测到新版本的事件注册需求查询控制类clsXuQiuChaXunKongZhi的ChengXuZuJianKeYiXiaZai ()过程
ChengXuZuJianKeYiXiaZai()处理过程首先判断网络是否连接,如离线退出。在上线的情况下先提示用户是否现在新版本程序,同意
则下载,否则不下载同时停止组件更新。
d. gengXinKongZhi.DownloadCompleted +=new UpdaterActionEventHandler(ChengXuXiaZaiWanCheng);
下载完成后事件注册在需求查询控制类clsXuQiuChaXunKongZhi的ChengXuXiaZaiWanCheng ()过程
ChengXuXiaZaiWanCheng()通过委托事件调用主界面的XiaZaiJieShu()过程,功能实现提示用户下载完成。
gengXinKongZhi.FilesValidationFailed += new UpdaterActionEventHandler(gengXinKongZhi_FilesValidationFailed);
下载文件校验失败事件注册在需求查询控制类clsXuQiuChaXunKongZhi的gengXinKongZhi_FilesValidationFailed ()过程。
提示用户下载失败。
启动组件更新。
this.gengXinXC = new Thread(new ThreadStart(this.gengXinKongZhi.StartUpdater) );
this.gengXinXC.Name="应用程序更新线程";
gengXinXC.Start();
停止组件更新。
停止组件更新TingZhiZuJianGengXin ()过程封装在需求控制类clsXuQiuChaXunKongZhi类中。该过程处理过程:
a. 停止组件更新服务,销毁MUAB
this.gengXinKongZhi.StopUpdater();
b.销毁组件更新线程。
开发总结
基于Microsoft Application Blocks开发Smart Client应用过程中,大大降低应用实现的技术风险,也节省了我们的开发周期。总结
起来,我们认为基于Application Blocks的开发具有以下这样一些优点。
1. Application Blocks提供了一种全面,系统而且可行的Smart Client应用开发解决方案。
2. Application Blocks的调用非常简单,甚至MUAB的使用主要是一种配置过程。
3. Application Blocks定义了大量接口,为实现可能的扩展提供了很大的空间。
4. Application Blocks是以开源方式提供,这种方式使我们收益匪浅。
5. Application Blocks和.net Framework紧密结合。
使用Microsoft Application Blocks开发应用的确是一种愉快的过程。
相关文章推荐
- 使用Updater Application Block实现自动更新特性
- 使用Updater Application Block实现自动更新例子
- Updater Application Block自动更新实施方案[源代码]
- Updater Application Block自动更新实施方案[源代码]
- 基于visual c++之windows核心编程代码分析(60)实现系统盘定制与软件自动安装
- Microsoft Updater Application Block 设计篇
- Microsoft Updater Application Block KeyValidator类设计
- 利用PHP安装windows自动运行的服务,PHP程序可以实现长时间、自动运行、定时更新功能,直接可以用在项目中的类源代码
- 安卓开发中,如何在代码中实现第三方推送更新,下载好更新后,自动卸载旧版本再安装,而不是直接覆盖安装
- Microsoft Updater Application Block 1.1 设计篇 [翻译]
- Microsoft Updater Application Block 1.3.1 下载器设计 [翻译]
- Microsoft Updater Application Block 1.3.3 BITSDownloader类设计 [翻译]
- Android应用自动更新功能的实现!!!软件更新,自动下载,安装
- Microsoft Updater Application Block 1.5.3 服务器端manifest文件设计 [翻译]
- Microsoft Updater Application Block 1.3.1 下载器设计 [翻译]
- 用Application Updater Block生成一个自我更新的WinForms 应用(amart client)
- android通过service实现更新并显示下载进度条,最后自动安装实例
- linux下SVN配置实现项目目录自动更新以及源码安装的操作方法
- 在VS2005(C#winform)中应用Updater Application Block(UAB)进行在线更新
- 基于visual c++之windows核心编程代码分析(60)实现系统盘定制与软件自动安装