天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

自動更新組件分享

  一. 摘要

  前兩天在博客上發(fā)布了一篇英文的自動更新組件文章Release a AutoUpdater tool,那么在這篇文章中,我們也對其功能進(jìn)行一些簡單說明,這個組件非常簡單,所以大家可以下載進(jìn)行一些改進(jìn)。眾所周知,對于一般的軟件開發(fā),在開始的時候都會有一個技術(shù)選型的階段,最大的選型就是首先要確定是選擇Client/Server模式還是Browser/Server模式。綜合而論:兩者各有優(yōu)劣,在很多方面都不能被對方互相取代,如在適用InterNET、維護(hù)工作量等方面,B/S比C/S要強(qiáng)很多;但在運(yùn)行速度、數(shù)據(jù)安全、人機(jī)交互等方面,B/S就遠(yuǎn)不如C/S那么強(qiáng)大。所以綜上所述,凡是C/S的強(qiáng)項,便是B/S的弱項,反之亦然。由于今天討論的是自動更新組件,所以接下來我們就往這方面細(xì)講,既然C/S模式在運(yùn)行速度、數(shù)據(jù)安全、人機(jī)交互有這么多的優(yōu)點(diǎn),尤其是客戶端技術(shù)日益發(fā)展的今天,如何解決客戶端的部署與自動升級問題便是一個非常重要的問題。

  二. 本文提綱

· 1.摘要

· 2.本文提綱

· 3.為什么不使用ClickOnce

· 4.簡要介紹

· 5.項目中如何使用

· 6.具體效果

· 7.維護(hù)與下載

· 8.總結(jié)

  三. 為什么不使用ClickOnce

  在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節(jié)里我們來談一下為什么不使用微軟給我們提供的自動更新組件ClickOnce,大家都知道ClickOnce給我們提供了很多功能:簡單說來,ClickOnce 應(yīng)用程序就是任何使用 ClickOnce 技術(shù)發(fā)布的 Windows 窗體或控制臺應(yīng)用程序??梢圆捎萌N不同的方法發(fā)布 ClickOnce 應(yīng)用程序:從網(wǎng)頁發(fā)布、從網(wǎng)絡(luò)文件共享發(fā)布或是從媒體(如 CD-ROM)發(fā)布。ClickOnce 應(yīng)用程序既可以安裝在最終用戶的計算機(jī)上并在本地運(yùn)行(即使當(dāng)計算機(jī)脫機(jī)時也可以運(yùn)行),也可以僅以聯(lián)機(jī)模式運(yùn)行,而不在最終用戶的計算機(jī)上永久安裝任何內(nèi)容。ClickOnce 應(yīng)用程序可以自行更新;這些應(yīng)用程序可以在較新版本變?yōu)榭捎脮r檢查較新版本,并自動替換所有更新的文件。開發(fā)人員可以指定更新行為;網(wǎng)絡(luò)管理員也可以控制更新策略,如將更新標(biāo)記為強(qiáng)制性的。最終用戶或管理員還可以對更新進(jìn)行回滾,使應(yīng)用程序恢復(fù)到早期的版本。

  從上面大家可以看出ClickOnce 無疑是微軟對Client/Server模式部署的最佳解決方案,但正是因?yàn)樗墓δ芴貏e強(qiáng)大而且又要使用相當(dāng)簡單,所以在產(chǎn)品的封裝上就特別嚴(yán)實(shí),基本上就暴露了一些簡單的操作接口,這樣就無形把一些定制化的操作拒之于門外,比如:

1,用戶不能自己指定安裝路徑。

2,對自動更新流程不能做定制化的操作。

3,對自動更新的UI不能定制化的設(shè)計。

  正因?yàn)檫@幾個原因,所以很多企業(yè)都會做一些定制化的組件來實(shí)現(xiàn)自動更新的功能,基于此,我們這里也實(shí)現(xiàn)了一個非常簡單的自動更新組件.

  四. 簡要介紹

  其實(shí)自動更新的原理很簡單,分析起來無非就是簡單的幾步操作,當(dāng)然實(shí)現(xiàn)方式也是大同小異,這里我們就選一種較簡單的方式:

  1.啟動主程序,主程序里面調(diào)用升級程序,升級程序連接到IIS或者FTP。

  2.升級程序獲取服務(wù)器端XML配置文件中新版本程序的更新日期或版本號或文件大小。

  3.升級程序獲取原有客戶端應(yīng)用程序的最近一次更新日期或版本號或文件大小,然后兩者進(jìn)行比較;如果新版本日期>原有程序的最新日期,則提示用戶是否升級;或如果新版本版本號>原有程序的版本號,則提示用戶是否升級;再或如果新版本文件大小>原有程序的文件大小,則提示用戶是否升級。本文主要采用一般的做法,就是通過版本號來進(jìn)行對比。

  4.如果用戶選擇升級,則獲取下載文件列表;

  5.在本地建立與遠(yuǎn)程IIS或者FTP相應(yīng)的臨時目錄,然后下載到這個臨時目錄文件下;

  6.刪除舊的主程序,拷貝臨時文件夾中的文件到相應(yīng)的位置;

  8.結(jié)束升級流程并重新啟動主程序。  

  根據(jù)前面的流程,我們可以簡單設(shè)計如下的項目:

autoupdatersolution圖1

  具體類介紹:

IAutoUpdater.cs         提供外部調(diào)用的接口

AutoUpdater.cs          該組件的主操作類

Autoupdater.config      本地配置文件

DownloadConfirm.cs    提示是否有更新頁面

DownloadProgress.cs    下載進(jìn)度頁面

CommonUnitity.cs     一些常用功能

Config.cs         當(dāng)更新完畢之后需要更新Config,所以這里需要一個提供序列化的Config類

ConstFile.cs      一些常量文件

DownloadFileInfo.cs     需要下載的文件實(shí)體類

LocalFile.cs     本地文件實(shí)體類

RemoteFile.cs     遠(yuǎn)程文件實(shí)體類

UpdateFileList.cs     本地的實(shí)體類集合

  代碼非常簡單,具體可以下載進(jìn)行查看,所以這里就不做過多闡述。

  五. 項目中如何使用

  第一步:Host更新的版本到服務(wù)器

  如果需要讓客戶端獲取最新的版本,首先我們需要開發(fā)人員編譯源代碼并生成文件,然后拷貝到FTP或者IIS目錄下,運(yùn)行一個自動生成XML文件的程序,把所有的文件都自動生成到一個XML文件,詳細(xì)見下圖:

2010-10-18 23-10-25

圖2

  第二步:配置本地的Config

  經(jīng)過第一步的流程,這一步要做的就是配置本地的Config用于監(jiān)測并下載遠(yuǎn)程IIS或者FTP下需要更新的文件,具體如下圖所示:

2010-10-18 23-13-10

圖3

  第三步:修改主程序

  首先把AutoUpdater這個DLL引入我們的主項目,然后在主項目中添加如下代碼,當(dāng)然你可以根據(jù)自己的需要進(jìn)行書寫,這個DLL提供了兩個外部接口,一個接口用于判斷是否有更新及下載,另一個接口則是用于更新出錯時進(jìn)行回滾操作,具體代碼如下:

      #region check and download new version program
bool bHasError = false;
IAutoUpdater autoUpdater
= new AutoUpdater();
try
{
autoUpdater.Update();
}
catch (WebException exp)
{
MessageBox.Show(
"Can not find the specified resource");
bHasError
= true;
}
catch (XmlException exp)
{
bHasError
= true;
MessageBox.Show(
"Download the upgrade file error");
}
catch (NotSupportedException exp)
{
bHasError
= true;
MessageBox.Show(
"Upgrade address configuration error");
}
catch (ArgumentException exp)
{
bHasError
= true;
MessageBox.Show(
"Download the upgrade file error");
}
catch (Exception exp)
{
bHasError
= true;
MessageBox.Show(
"An error occurred during the upgrade process");
}
finally
{
if (bHasError == true)
{
try
{
autoUpdater.RollBack();
}
catch (Exception)
{
//Log the message to your file or database
}
}
}
#endregion

NET技術(shù)自動更新組件分享,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: WWW国产亚洲精品久久久日本 | 久久国产精品无码视欧美 | 男女高潮又爽又黄又无遮挡 | 偷拍精品视频一区二区三区 | 99国产福利| 男女啪啪久久精品亚洲A | 黄色三级视频在线观看 | 超熟女专门志 | 92国产精品午夜免费福利视频 | 97成人在线 | 动听968 | 玖玖爱这里只有精品视频 | 麻美ゆま夫の目の前で犯 | 午夜神器老司机高清无码 | 丰满老熟女白浆直流 | 伦理片qvod | 亚洲AV无码乱码在线观看浪潮 | 蜜桃视频无码区在线观看 | 色中色成人论坛 | 超碰97视频在线观看 | 少妇的肉体AA片免费观看 | 国产午夜精品福利久久 | 国产亚洲精品久久久久5区 国产亚洲精品久久久久 | 国产激情视频在线 | 特污兔午夜影视院 | 好大太快了快插穿子宫了 | 真实国产熟睡乱子伦对白无套 | 日本综艺大尺度无删减版在线 | 在线观看日本免费 | 忘忧草在线影院www日本 | 国产一区精选播放022 | 免费成人小视频 | 精品手机在线1卡二卡3卡四卡 | 女教师跟黑人男朋友激情过后 | GOGOGO高清在线播放免费 | 精品国产免费观看久久久 | 国产色婷婷亚洲99精品 | 亚洲午夜无码久久久久蜜臀av | 精品高潮呻吟99AV无码 | 亚洲国产精品久久精品成人网站 | 国产一区二区三区四区五在线观看 |