天天看點

[IT]C/S自動更新程式原理

背景

我們給幾個景區做了一個c/s項目,但是由于需求的變化,或者是bug的出現,我們不得不修改程式程式。衆所周知,c/s結構的應用程式可維護性比較差,它不同于b/s結構的程式,可以随着伺服器端的更新,立即顯現出來。是以我們不得不經常跑去景區手動更換程式。這樣非常的麻煩,是以我們就做了一個自動更新的程式,由景區自己下載下傳更新。

運作形式

(1)是作為一種服務,使用者開機後自動隐藏運作。這種方式技術成本高,要求高可靠性和可用性。偶爾也會引起使用者的反感。因windows作業系統更新就是這樣進行的;

(2)啟動應用程式時運作。這種方式比較受信賴。一般設計為強制更新。這種方式要求更新速度要快,如果更新檔案長時間下載下傳不下來。使用者會更傾向于第一種方式。當然更新速度慢也可能與網絡狀況有關;

(3)使用者手動點選功斃菜單進行。

原理

我們都知道,當一個程式或檔案正在運作的時候,我們是無法對它進行删除或修改等操作,一般情況都是因為目标正在被占用。同樣,當你運作一個軟體,檢測到新版本的時候你不能直接将自己給替換了,因為此時該軟體正處于一個運作狀态。

這就需要第三方程式來幫助你進行這個更新更新的動作。

自動更新程式是一個很重要的功能,原理其實很簡單,一般包含兩個程式,一個是主程式,另一個就是更新程式。

在這裡,我們使用的是上面的第二種方法。

(1)啟動更新程式,更新程式連接配接到服務端,下載下傳更新内容到臨時檔案夾;

(2)更新程式擷取服務端配置資訊中新版本程式的更新日期或版本号或檔案大小;

(3)更新程式擷取原有用戶端軟體程式的最新一次更新日期或版本号或檔案大小,二者進行比較;

如果發現更新程式的日期大于原有程式的最新日期,則更新;

或者是采用将現有版本與最新版本比較,發現最新的版本則更新;

或者用其他屬性如檔案大小進行比較,發現更新程式的檔案大小大于舊版本的程式的大小,則更新。

(4)更新,擷取下載下傳檔案清單,進行批量下載下傳文檔;

(5)更新程式檢測舊的主程式是否活動,若活動則關閉舊的主程式;

(6)備份舊的主程式到備份檔案夾中,删除舊的程式,拷貝臨時檔案夾中的檔案到相應的位置;最後修改用戶端應用程式的版本型号為更新後的版本号,以避免重複更新。

(7)檢查主程式的狀态,若為活動的,則啟動新的主程式;

(8)關閉更新程式,更新成功。

另一種方法:

在用戶端段程式啟動時,啟動更新程式,但更新程式不做版本判斷,到用戶端更新目錄下檢查有沒有下載下傳的新版本,如果有就更新主程式并更新用戶端版本資訊,然後啟動主程式,如果沒有就直接啟動主程式。由主程式判斷是否有新版本,并在背景下載下傳把檔案放到用戶端更新目錄中,下載下傳完成後,提示使用者退出主程式,重新啟動,在啟動時由更新程式并更新用戶端和用戶端版本資訊。

引用

軟體自動線上更新的原理

自動更新的原理及實作

繼續閱讀