編寫(xiě)人:左丘文
2015-4-20
近來(lái)在給一客戶實(shí)施ECM系統(tǒng),但他們使用功能并不是我們ECM制造版提供的標(biāo)準(zhǔn)功能,他們要求對(duì)系統(tǒng)作一些定制功能,為了避免因程序的bug而帶來(lái)頻繁讓用戶更新程序的不良影響,就想給ECM增加一個(gè)winform自動(dòng)更新功能,今天在這里,我想與大家一起分享代碼,在此做個(gè)小結(jié),以供參考。有興趣的同學(xué),可以一同探討與學(xué)習(xí)一下,否則就略過(guò)吧。
1、首先我們?cè)谶@里先分析一下其它程序猿的一些基本情況:
相信有許多程序猿都喜歡用Winform做開(kāi)發(fā)吧?!因?yàn)?/strong>Winform相對(duì)Webform而言,優(yōu)點(diǎn)是,功能更強(qiáng)大,編程更方便.但是它的缺點(diǎn),就是軟件的安裝及維護(hù)是相當(dāng)麻煩地,要實(shí)現(xiàn)軟件更新,需要到客戶端一臺(tái)一臺(tái)地升級(jí)。
長(zhǎng)期以來(lái),廣大程序猿為到底是使用Client/Server,還是使用Browser/Server結(jié)構(gòu)爭(zhēng)論不休,在這些爭(zhēng)論當(dāng)中,C/S結(jié)構(gòu)的程序可維護(hù)性差,布置困難,升級(jí)不方便,維護(hù)成本高就是一個(gè)相當(dāng)重要的因素。有很多企業(yè)用戶就是因?yàn)檫@個(gè)原因而放棄使用C/S。然而當(dāng)一個(gè)應(yīng)用必須要使用C/S結(jié)構(gòu)才能很好的實(shí)現(xiàn)其功能的時(shí)候,我們?cè)撊绾谓鉀Q客戶端的部署與自動(dòng)升級(jí)問(wèn)題?部署很簡(jiǎn)單,只要點(diǎn)擊安裝程序即可,難的在于每當(dāng)有新版本發(fā)布時(shí),能夠?qū)崿F(xiàn)自動(dòng)升級(jí)。現(xiàn)在好了,我們的目標(biāo)很簡(jiǎn)單,我們希望開(kāi)發(fā)一個(gè)與具體應(yīng)用無(wú)關(guān)的能夠復(fù)用的自動(dòng)升級(jí)系統(tǒng)。下面我為大家提供了一套可復(fù)用的用C#實(shí)現(xiàn)在線升級(jí)。這里分為本地在線升級(jí),也可以利用webservice 在線通過(guò)互聯(lián)網(wǎng)與軟件開(kāi)商的服務(wù)器在線升級(jí)。
2、實(shí)現(xiàn)軟件自動(dòng)在線升級(jí)的原理:
1) 寫(xiě)三個(gè)程序,一個(gè)是主程序;兩個(gè)是升級(jí)程序;所有升級(jí)任務(wù)都由升級(jí)程序完成
原本只需要一個(gè)升級(jí)程序,但在這里,由于我們另外還涉及到了,在線與軟件供應(yīng)商服務(wù)器更新功能,因此我們這里用到了一個(gè)主程序兩個(gè)升級(jí)程序。
2) 很多人實(shí)行的原理是將現(xiàn)有版本與最新版本作比較,發(fā)現(xiàn)最新的則提示用戶是否升級(jí),當(dāng)然也有人用其它屬性比較的,例如:文件大小或者更新日期。我們這里主要利用FileUtil的兩個(gè)屬性SHA1File與md5File來(lái)判斷,與服務(wù)器之間是否存在版本差異,存在就更新。
3) 我們的程序,剛開(kāi)始初始版本是我一同事利用了三天時(shí)間,大致寫(xiě)了一個(gè)框架出來(lái),我是在他的基礎(chǔ)上,對(duì)其進(jìn)行了完善,如增加了對(duì)文件流的壓縮與解壓縮功能,方便進(jìn)行網(wǎng)絡(luò)的傳輸,增加了通過(guò)webservices的在線更新功能。并將程序做到通用功能,并嵌套到了我們的ECM系統(tǒng)中。
3、軟件更新操作界面:
1) 啟動(dòng)我們的主程序ECM
2) 系統(tǒng)會(huì)從數(shù)據(jù)庫(kù)中檢查是否有新版本,點(diǎn)點(diǎn)【否】會(huì)直接進(jìn)入系統(tǒng),點(diǎn)【是】系統(tǒng)會(huì)進(jìn)入到更新介面:
先擇需要更新的內(nèi)容,點(diǎn)擊更新,系統(tǒng)會(huì)自動(dòng)更新相關(guān)程序。
3) 與軟件供應(yīng)商服務(wù)器在線更新介面:
操作類(lèi)似于在線本地更新一樣。
具體就需要各位好好的自已去調(diào)試了。
4、更新程序的代碼:
1) 我們的更新程序是以文件流的形式存放在數(shù)據(jù)庫(kù)中,因此我們首先需要為系統(tǒng)數(shù)據(jù)庫(kù)增加相關(guān)的表,用于存儲(chǔ)更新文件。
2) 整體程序框架圖如下:
3) 上傳功能代碼:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注