亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

asp.net自動更新組件分享

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

二. 本文提綱

· 1.摘要

· 2.本文提綱

· 3.為什么不使用ClickOnce

· 4.簡要介紹

· 5.項目中如何使用

· 6.具體效果

· 7.維護與下載

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

  從上面大家可以看出ClickOnce 無疑是微軟對Client/Server模式部署的最佳解決方案,但正是因為它的功能特別強大而且又要使用相當簡單,所以在產品的封裝上就特別嚴實,基本上就暴露了一些簡單的操作接口,這樣就無形把一些定制化的操作拒之于門外,比如:

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

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

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

正因為這幾個原因,所以很多企業都會做一些定制化的組件來實現自動更新的功能,基于此,我們這里也實現了一個非常簡單的自動更新組件.

四. 簡要介紹

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

1.啟動主程序,主程序里面調用升級程序,升級程序連接到IIS或者FTP。
2.升級程序獲取服務器端XML配置文件中新版本程序的更新日期或版本號或文件大小。
3.升級程序獲取原有客戶端應用程序的最近一次更新日期或版本號或文件大小,然后兩者進行比較;如果新版本日期>原有程序的最新日期,則提示用戶是否升級;或如果新版本版本號>原有程序的版本號,則提示用戶是否升級;再或如果新版本文件大小>原有程序的文件大小,則提示用戶是否升級。本文主要采用一般的做法,就是通過版本號來進行對比。
4.如果用戶選擇升級,則獲取下載文件列表;
5.在本地建立與遠程IIS或者FTP相應的臨時目錄,然后下載到這個臨時目錄文件下;
6.刪除舊的主程序,拷貝臨時文件夾中的文件到相應的位置;
8.結束升級流程并重新啟動主程序。
根據前面的流程,我們可以簡單設計如下的項目:

asp.net自動更新組件分享

                                圖2

第二步:配置本地的Config

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

asp.net自動更新組件分享

                                                    圖3

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

復制代碼 代碼如下:


#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使用就是這么簡單,更詳細的操作,大家可以下載源碼,也正因為它的簡單,所以大家可以對其修改以滿足具體項目的需求。


六. 具體效果

當我們運行主程序(WinForm或者WPF),如果服務器上有最新的版本,就會彈出如下頁面進行提示并讓用戶選擇是否更新。

asp.net自動更新組件分享

                                                    圖4

當用戶不需要更新時,可以選擇Skip按鈕跳過并繼續主程序流程,反之則進入如下頁面。

asp.net自動更新組件分享

                                                    圖5

在下載的過程中,用戶可以選擇Cancel停止下載并重新回到主流程。

七. 維護與下載

該組件已經托管到CodePlex,所以大家可以到上面下載其源代碼,具體地址:

asp.net自動更新組件分享

 

                                                    圖6

八. 總結

  我們這篇文章簡單的講解了一個簡單的自動更新組件,由于它比較簡單而且功能單一,所以沒有花費大量的篇幅進行論述,感興趣的讀者可以下載其源碼。后面我會把自己開發的一套MVVM框架也托管上去,由于目前對Silverlight的支持還不太好,所以正在持續做相關的改進,其中借鑒了一些其他優秀框架的思想并且融入了一些實際應用場景,所以到時也希望大家能夠多多指教!
作者:圣殿騎士
出處:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
免费不卡欧美自拍视频| 亚洲国产精品电影在线观看| 成人h视频在线观看播放| 中文日韩电影网站| 中文字幕欧美在线| 成人久久久久爱| 丝袜美腿亚洲一区二区| 欧美日韩国产综合视频在线观看中文| 国产精品高清在线观看| 国产精品视频久| 少妇高潮久久久久久潘金莲| 国产成人精品综合久久久| 欧美国产高跟鞋裸体秀xxxhd| 91精品国产免费久久久久久| 国产一区二区三区在线| 亚洲欧美一区二区三区四区| 美日韩精品免费观看视频| 成人网欧美在线视频| 亚洲国产成人精品一区二区| 国产视频自拍一区| 久久亚洲精品视频| 激情久久av一区av二区av三区| 在线播放日韩专区| 韩剧1988免费观看全集| 亚洲国产日韩欧美在线99| 中国china体内裑精亚洲片| 国产午夜精品免费一区二区三区| 亚洲天堂av在线免费观看| 亚洲精品自拍视频| 最近2019年日本中文免费字幕| 亚洲欧洲激情在线| 欧美在线影院在线视频| 日本精品性网站在线观看| 69av成年福利视频| 色综合导航网站| 91精品国产沙发| 日韩精品极品在线观看播放免费视频| 在线日韩精品视频| 日韩精品免费视频| 亚洲欧美国产视频| 一区二区三区黄色| 国模吧一区二区| 久久精品国产亚洲精品| 亚洲国产精品久久久久秋霞蜜臀| 欧美丰满少妇xxxxx| 国产精品电影网站| 97精品久久久中文字幕免费| 国产精品美腿一区在线看| 欧美精品一区二区免费| 午夜精品久久久久久久99黑人| 久久久久久久久久久网站| 国产成人精品亚洲精品| 国产噜噜噜噜久久久久久久久| 欧美精品免费播放| 国产美女精品免费电影| 亚洲精品在线观看www| 国产成一区二区| 欧美日韩999| 最近中文字幕mv在线一区二区三区四区| 国产亚洲一区二区精品| 中文字幕亚洲综合久久筱田步美| 久久久久久久亚洲精品| 欧美国产日韩一区二区在线观看| 国产精品一区二区电影| 欧美一区二区视频97| 69久久夜色精品国产69乱青草| 欧美日韩国产在线播放| 国产精品天天狠天天看| 欧日韩在线观看| 亚洲欧美日韩图片| 高清欧美性猛交xxxx黑人猛交| 亚洲欧美激情精品一区二区| 亚洲欧美国产日韩天堂区| 国产精品久久久亚洲| 亚洲成人网在线| 成人激情黄色网| 亚洲午夜未满十八勿入免费观看全集| 欧美激情免费看| 精品福利一区二区| 国产精品自在线| 欧美成在线观看| 亚洲欧美另类在线观看| 国产精品久久久久久久久久小说| 亚洲国产精彩中文乱码av| 亚洲国产成人在线播放| 日本精品在线视频| 91超碰caoporn97人人| 欧美精品在线免费播放| 欧美在线视频一二三| 久久精品视频va| 国产精品免费久久久| 91精品视频专区| 91精品国产高清久久久久久91| 国产精品久久久久久久久久| 国产97色在线| 欧美日韩国产成人在线观看| 最近2019中文字幕mv免费看| 91精品91久久久久久| 91成人天堂久久成人| 国产精品com| 成人女保姆的销魂服务| 午夜精品久久久久久久男人的天堂| 在线看日韩av| 国产精品自产拍在线观看| 亚洲国产精品人人爽夜夜爽| 国产精品高潮呻吟久久av黑人| 亚洲福利视频专区| 久久精品国产清自在天天线| 国产三级精品网站| 国产日韩中文字幕| 亚洲国产97在线精品一区| 亚洲电影天堂av| 亚洲欧洲在线视频| 久久国产精品久久久久| 精品网站999www| 亚洲三级黄色在线观看| 久久国产天堂福利天堂| 久久露脸国产精品| 日韩欧美中文第一页| 国产精品电影在线观看| 奇米一区二区三区四区久久| 欧美日韩国产中文精品字幕自在自线| 欧美午夜性色大片在线观看| 欧美一级淫片aaaaaaa视频| 国产精品成人一区二区| 亚洲欧美日韩图片| 欧美激情网友自拍| 亚洲一区二区在线播放| 一区二区三区日韩在线| 久久天天躁狠狠躁夜夜爽蜜月| 久久av红桃一区二区小说| 亚洲999一在线观看www| 亚洲国产精品中文| 欧洲一区二区视频| 精品一区二区三区四区在线| 亚洲奶大毛多的老太婆| 欧美美女操人视频| 95av在线视频| 久久精品视频播放| 中文字幕欧美日韩| 久久精品视频播放| 国产精品久久久久久久久久久久| 国产中文字幕91| 91免费在线视频网站| 97视频在线看| 日韩av在线高清| 2024亚洲男人天堂| 美女扒开尿口让男人操亚洲视频网站| 国产999精品久久久影片官网| 国模视频一区二区三区| 欧美大片大片在线播放| 日韩高清av一区二区三区| 日本高清+成人网在线观看| 欧美色xxxx| 国产美女久久久| 国产精品美女免费| 亚洲欧美制服中文字幕| 国产久一一精品| 欧洲精品久久久| 国产综合视频在线观看| 国产日韩欧美夫妻视频在线观看| 亚洲黄在线观看| 91久久夜色精品国产网站| 国产精品视频地址|