国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

WinForm應(yīng)用程序中實(shí)現(xiàn)自動(dòng)更新功能

2019-11-17 02:26:16
字體:
供稿:網(wǎng)友

WinForm應(yīng)用程序中實(shí)現(xiàn)自動(dòng)更新功能

WinForm應(yīng)用程序中實(shí)現(xiàn)自動(dòng)更新功能

編寫人:左丘文

2015-4-20

近來在給一客戶實(shí)施ECM系統(tǒng),但他們使用功能并不是我們ECM制造版提供的標(biāo)準(zhǔn)功能,他們要求對(duì)系統(tǒng)作一些定制功能,為了避免因程序的bug而帶來頻繁讓用戶更新程序的不良影響,就想給ECM增加一個(gè)winform自動(dòng)更新功能,今天在這里,我想與大家一起分享代碼,在此做個(gè)小結(jié),以供參考。有興趣的同學(xué),可以一同探討與學(xué)習(xí)一下,否則就略過吧。

1、首先我們?cè)谶@里先分析一下其它程序猿的一些基本情況:

相信有許多程序猿都喜歡用Winform做開發(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í)。

長期以來,廣大程序猿為到底是使用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í)問題?部署很簡單,只要點(diǎn)擊安裝程序即可,難的在于每當(dāng)有新版本發(fā)布時(shí),能夠?qū)崿F(xiàn)自動(dòng)升級(jí)。現(xiàn)在好了,我們的目標(biāo)很簡單,我們希望開發(fā)一個(gè)與具體應(yīng)用無關(guān)的能夠復(fù)用的自動(dòng)升級(jí)系統(tǒng)。下面我為大家提供了一套可復(fù)用的用C#實(shí)現(xiàn)在線升級(jí)。這里分為本地在線升級(jí),也可以利用webservice 在線通過互聯(lián)網(wǎng)與軟件開商的服務(wù)器在線升級(jí)。

2、實(shí)現(xiàn)軟件自動(dòng)在線升級(jí)的原理

1) 寫三個(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來判斷,與服務(wù)器之間是否存在版本差異,存在就更新。

3) 我們的程序,剛開始初始版本是我一同事利用了三天時(shí)間,大致寫了一個(gè)框架出來,我是在他的基礎(chǔ)上,對(duì)其進(jìn)行了完善,如增加了對(duì)文件流的壓縮與解壓縮功能,方便進(jìn)行網(wǎng)絡(luò)的傳輸,增加了通過webservices的在線更新功能。并將程序做到通用功能,并嵌套到了我們的ECM系統(tǒng)中。

3、軟件更新操作界面:

1) 啟動(dòng)我們的主程序ECM

2) 系統(tǒng)會(huì)從數(shù)據(jù)庫中檢查是否有新版本,點(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ù)器在線更新介面:

操作類似于在線本地更新一樣。

具體就需要各位好好的自已去調(diào)試了。

4、更新程序的代碼:

1) 我們的更新程序是以文件流的形式存放在數(shù)據(jù)庫中,因此我們首先需要為系統(tǒng)數(shù)據(jù)庫增加相關(guān)的表,用于存儲(chǔ)更新文件。

--建立相關(guān)表SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[SysUpdate]([ID][int]IDENTITY(1,1)NOTNULL,[FileName][varchar](250)NULL,[FileVersion][varchar](50)NULL,[FilePath][varchar](250)NULL,[FileData][varbinary](max)NULL,[FileSize][varchar](250)NULL,[FileDate][varchar](250)NULL,[FileType][varchar](50)NULL,[FilesHash][varchar](max)NULL,[FilesMD5][varchar](max)NULL,[UpdateBit][bit]NULL,[RegBit][bit]NULL)ON[PRIMARY]GOSETANSI_PADDINGOFF--建立插入SPSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOcreateprocedure[dbo].[Insert_UpdateFile]@filenamevarchar(250),@fileversionvarchar(50),@filepathvarchar(250),@filesizevarchar(250),@filedatevarchar(250),@filetypevarchar(50),@fileshashvarchar(250),@filesmd5varchar(250),@filevarbinary(Max)asinsertintoSysUpdate([FileName],[FileVersion],[FilePath],[FileSize],[FileDate],[FileType],[UpdateBit],[RegBit],[FilesHash],[FilesMD5],[FileData])select@filename,@fileversion,@filepath,@filesize,@filedate,@filetype,1,0,@fileshash,@filesmd5,@fileView Code

2) 整體程序框架圖如下:

3) 上傳功能代碼:

namespaceSysUpdate{publicpartialclassfrmSysUpdateUp:Form{privatestringupdateUrl=string.Empty;privatestringtempUpd
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永吉县| 崇阳县| 西吉县| 贵定县| 固原市| 亳州市| 高淳县| 台中市| 瑞安市| 旺苍县| 临夏县| 铜鼓县| 治多县| 绿春县| 天镇县| 灵璧县| 临颍县| 章丘市| 如东县| 容城县| 渝北区| 祁门县| 定西市| 鄄城县| 德惠市| 宜宾县| 买车| 江阴市| 孝昌县| 忻城县| 大邑县| 贞丰县| 仪陇县| 周口市| 武隆县| 临夏县| 孟村| 富裕县| 禹城市| 阳朔县| 犍为县|