自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談C#實現(xiàn)在線升級

開發(fā) 后端
這里介紹C#實現(xiàn)在線升級,我們該如何解決客戶端的部署與自動升級問題?部署很簡單,只要點擊安裝程序即可,難的在于每當(dāng)有新版本發(fā)布時,能夠?qū)崿F(xiàn)自動升級。

長期以來,廣大程序員為到底是使用Client/Server,還是使用Browser/Server結(jié)構(gòu)爭論不休,在這些爭論當(dāng)中,C/S結(jié)構(gòu)的程序可維護性差,布置困難,升級不方便,維護成本高就是一個相當(dāng)重要的因素。有很多企業(yè)用戶就是因為這個原因而放棄使用C/S。然而當(dāng)一個應(yīng)用必須要使用C/S結(jié)構(gòu)才能很好的實現(xiàn)其功能的時候,我們該如何解決客戶端的部署與自動升級問題?部署很簡單,只要點擊安裝程序即可,難的在于每當(dāng)有新版本發(fā)布時,能夠?qū)崿F(xiàn)自動升級?,F(xiàn)在好了,我們的目標(biāo)很簡單,我們希望開發(fā)一個與具體應(yīng)用無關(guān)的能夠復(fù)用的自動升級系統(tǒng)。下面我為大家提供了一套可復(fù)用的用C#實現(xiàn)在線升級。

一.C#實現(xiàn)在線升級存在的困難

***,為了查找遠(yuǎn)程服務(wù)器上的更新,應(yīng)用程序必須有查詢網(wǎng)絡(luò)的途徑,這需要網(wǎng)絡(luò)編程、簡單的應(yīng)用程序與服務(wù)器通訊的協(xié)議。

第二是下載。下載看起來不需要考慮聯(lián)網(wǎng)的問題,但要考慮下載用戶請求的文件,以及在沒有用戶同意時下載大文件。友好的自動更新應(yīng)用程序?qū)⑹褂檬S嗟膸捪螺d更新。這聽起來簡單,但卻是一個技術(shù)難題,幸運的是已經(jīng)有了解決方法。

第三個考慮因素是使用新版應(yīng)用程序更換原應(yīng)用程序的過程。這個問題比較有趣,因為它要求代碼運行時將自己從系統(tǒng)刪除,有多種辦法可以實現(xiàn)該功能,本文程序主要通過比較新舊版本的日期號來實現(xiàn)替換新版本應(yīng)用程序的功能。

二.實現(xiàn)軟件自動在線升級的原理

寫兩個程序,一個是主程序;一個是升級程序;所有升級任務(wù)都由升級程序完成。

1.啟動升級程序,升級程序連接到網(wǎng)站,下載新的主程序(當(dāng)然還包括支持的庫文件、XML配置文檔等)到臨時文件夾;

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

3.升級程序獲取原有客戶端應(yīng)用程序的最近一次更新日期或版本號或文件大小,兩者進行比較;如果發(fā)現(xiàn)升級程序的日期大于原有程序的***日期,則提示用戶是否升級;或者是采用將現(xiàn)有版本與***版本作比較,發(fā)現(xiàn)***的則提示用戶是否升級;也有人用其它屬性如文件大小進行比較,發(fā)現(xiàn)升級程序的文件大小大于舊版本的程序的大小則提示用戶升級。本文主要采用比較新舊版本更新日期號來提示用戶升級。

4.如果用戶選擇升級,則獲取下載文件列表,開始進行批量下載文檔;

5.升級程序檢測舊的主程序是否活動,若活動則關(guān)閉舊的主程序;

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

7.檢查主程序的狀態(tài),若狀態(tài)為活動的,則啟動新的主程序;

8.關(guān)閉升級程序,升級完成。 

三.用C#實現(xiàn)在線升級的關(guān)鍵步驟

這里我主要使用日期信息來檢測是否需要下載升級版本。

準(zhǔn)備一個XML配置文件名稱為AutoUpdater.xml,作用是作為一個升級用的模板,顯示需要升級的信息。

  1. <?xmlversionxmlversion="1.0"?> 
  2. //xml版本號  
  3. <AutoUpdater> 
  4. <URLAddresURLURLAddresURL="http://192.168.198.113/vbroker/log/"/> 
  5. //升級文件所在服務(wù)器端的網(wǎng)址  
  6. <UpdateInfo> 
  7. <UpdateTimeDateUpdateTimeDate="2005-02-02"/> 
  8. //升級文件的更新日期  
  9. <VersionNumVersionNum="1.0.0.1"/> 
  10. //升級文件的版本號  
  11. </UpdateInfo> 
  12. <UpdateFileList> 
  13. //升級文件列表  
  14. <UpdateFileFileNameUpdateFileFileName="aa.txt"/> 
  15. //共有三個文件需升級  
  16. <UpdateFileFileNameUpdateFileFileName="VB40.rar"/> 
  17. <UpdateFileFileNameUpdateFileFileName="VB4-1.CAB"/> 
  18. </UpdateFileList> 
  19. <RestartApp> 
  20. <ReStartAllowReStartAllow="Yes"/> 
  21. //允許重新啟動應(yīng)用程序  
  22. <AppNameNameAppNameName="TIMS.exe"/> 
  23. //啟動的應(yīng)用程序名  
  24. </RestartApp> 
  25. </AutoUpdater> 

從以上XML文檔中可以得知升級文檔所在服務(wù)器端的地址、升級文檔的更新日期、需要升級的文件列表,其中共有三個文件需升級:aa.txt、VB40.rar、VB4-1.CAB。以及是否允許重新啟動應(yīng)用程序和重新啟動的應(yīng)用程序名。

【編輯推薦】

  1. 淺析C# ArrayList
  2. C#對象初始化學(xué)習(xí)總結(jié)
  3. 使用C#正則表達式匹配相關(guān)字符串
  4. C#改寫方法學(xué)習(xí)筆記
  5. 概述C#加框和消框
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-06-16 10:20:05

多繼承C#

2009-08-20 18:30:33

C# ReaderWr

2011-09-21 10:56:31

C#結(jié)構(gòu)

2009-08-07 11:26:53

C#數(shù)組結(jié)構(gòu)

2009-08-12 11:24:25

C# String對象

2009-08-19 17:12:18

C# Connecti

2009-08-31 09:37:09

C# Employee

2011-03-29 09:14:49

Dispose模式C#

2009-07-22 17:15:04

C#實現(xiàn)

2009-08-25 16:16:43

C# oledbcon

2009-08-26 15:46:01

C#匿名類型

2009-08-06 15:30:23

C#類型系統(tǒng)

2009-08-14 17:58:05

C#接口方法

2009-08-26 13:15:38

C#選擇控制

2009-09-02 15:41:21

C# HTTPWebR

2009-08-20 10:24:52

C#開發(fā)WinForm

2009-08-10 10:04:25

C#抽象類C#接口

2009-08-27 14:44:11

C# interfac

2009-08-10 14:55:04

C#定義Nullabl

2009-08-18 17:08:50

C#編寫XML文檔
點贊
收藏

51CTO技術(shù)棧公眾號