


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、用C跤現(xiàn)在線升級的關(guān)鍵步驟這里我主要使用日期信息來檢測是否需要下載升級版本。4.1 準(zhǔn)備一個XML配置文件名稱為AutoUpdater.xml,作用是作為一個升級用的模板,顯示需要升級的信息。名稱為AutoUpdater.xml,作用是作為一個升級用的模板,顯示需要升級的信息。<?xmlversion="1.0"?>/xml版本號<AutoUpdater><URLAddresURL="13/vbroker/log/"/>升級文件所在服務(wù)器端的網(wǎng)址<UpdateInfo>
2、<UpdateTimeDate="2005-02-02"/>/升級文件的更新日期<VersionNum=""/>/升級文件的版本號</UpdateInfo><UpdateFileList>/升級文件列表<UpdateFileFileName="aa.txt"/>/共有三個文件需升級<UpdateFileFileName="VB40.rar"/><UpdateFileFileName="VB4-1.CAB"
3、/></UpdateFileList><RestartApp><ReStartAllow="Yes"/>/允許重新啟動應(yīng)用程序<AppNameName="TIMS.exe"/>/啟動的應(yīng)用程序名</RestartApp></AutoUpdater>從以上XML文檔中可以得知升級文檔所在服務(wù)器端的地址、升級文檔的更新日期、需要升級的文件列表,其中共有三個文件需升級:aa.txt、VB40.rar、VB4-1.CAB。以及是否允許重新啟動應(yīng)用程序和重新啟動的應(yīng)用程序4.2 獲取客戶
4、端應(yīng)用程序及服務(wù)器端升級程序的最近一次更新日期通過GetTheLastUpdateTime()函數(shù)來實現(xiàn)。privatestringGetTheLastUpdateTime(stringDir)stringLastUpdateTime=""stringAutoUpdaterFileName=Dir+"AutoUpdater.xml"if(!File.Exists(AutoUpdaterFileName)returnLastUpdateTime;/打開xml文件FileStreammyFile=newFileStream(AutoUpdaterFileNa
5、me,FileMode.Open);/xml文件閱讀器XmlTextReaderxml=newXmlTextReader(myFile);while(xml.Read()if(xml.Name="UpdateTime")/獲取升級文檔的最后一次更新日期LastUpdateTime=xml.GetAttribute("Date");break;xml.Close();myFile.Close();returnLastUpdateTime;通過XmlTextReader打開XML文檔,讀取更新時間從而獲取Date對應(yīng)的值,即服務(wù)器端升級文件的最近一次更新時間
6、。函數(shù)調(diào)用實現(xiàn):/獲取客戶端指定路徑下的應(yīng)用程序最近一次更新時間stringthePreUpdateDate=GetTheLastUpdateTime(Application.StartupPath);Application.StartupPath指客戶端應(yīng)用程序所在的路徑。/獲得從服務(wù)器端已下載文檔的最近一次更新日期stringtheLastsUpdateDate=GetTheLastUpdateTime(theFolder.FullName);theFolder.FullName指在升級文檔下載到客戶機上的臨時文件夾所在的路徑。4.3 比較日期客戶端應(yīng)用程序最近一次更新日期與服務(wù)器端升級程
7、序的最近一次更新日期進(jìn)行比較。/獲得已下載文檔的最近一次更新日期stringtheLastsUpdateDate=GetTheLastUpdateTime(theFolder.FullName);if(thePreUpdateDate!="")/如果客戶端將升級的應(yīng)用程序的更新日期大于服務(wù)器端升級的應(yīng)用程序的更新日期if(Convert.ToDateTime(thePreUpdateDate)>=Convert.ToDateTime(theLastsUpdateDate)MessageBox.Show("當(dāng)前軟件已經(jīng)是最新的,無需更新!",&quo
8、t;系統(tǒng)提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);this.Close();this.labDownFile.Text="下載更新文件"this.labFileName.Refresh();this.btnCancel.Enabled=true;gressBar.Position=0;gressBarTotal.Position=0;gressBarTotal.Refresh();gressBar.Refresh();/通過動態(tài)數(shù)組獲取下載文件的列
9、表ArrayListList=GetDownFileList(GetTheUpdateURL(),theFolder.FullName);stringurls=newstringList.Count;List.CopyTo(urls,0);將客戶端升級的應(yīng)用程序的日期與服務(wù)器端下載的應(yīng)用程序日期進(jìn)行比較,如果前者大于后者,則不更新;如果前者小于后者,則通過動態(tài)數(shù)組獲取下載文件的列表,開始下載文件。通過BatchDownload()函數(shù)來實現(xiàn)。升級程序檢測舊的主程序是否活動,若活動則關(guān)閉舊的主程序;刪除舊的主程序,拷貝臨時文件夾中的文件到相應(yīng)的位置;檢查主程序的狀態(tài),若狀態(tài)為活動的,則啟動新的主
10、程序。privatevoidBatchDownload(objectdata)(this.Invoke(this.activeStateChanger,newobjecttrue,false);tryDownloadInstructionsinstructions=(DownloadInstructions)data;/批量下載using(BatchDownloaderbDL=newBatchDownloader()bDL.CurrentProgressChanged+=newDownloadProgressHandler(this.SingleProgressChanged);bDL.Sta
11、teChanged+=newDownloadProgressHandler(this.StateChanged);bDL.FileChanged+=newDownloadProgressHandler(bDL_FileChanged);bDL.TotalProgressChanged+=newDownloadProgressHandler(bDL_TotalProgressChanged);bDL.Download(instructions.URLs,instructions.Destination,(ManualResetEvent)this.cancelEvent);catch(Excep
12、tionex)ShowErrorMessage(ex);this.Invoke(this.activeStateChanger,newobjectfalse,false);this.labFileName.Text=""/更新程序if(this._Update)/關(guān)閉原有的應(yīng)用程序this.labDownFile.Text="正在關(guān)閉程序.”;System.Diagnostics.Processproc=System.Diagnostics.Process.GetProcessesByName("TIMS");/關(guān)閉原有應(yīng)用程序的所有進(jìn)程for
13、each(System.Diagnostics.Processproinproc)pro.Kill();DirectoryInfotheFolder=newDirectoryInfo(Path.GetTempPath()+"JurassicUpdate");if(theFolder.Exists)foreach(FileInfotheFileintheFolder.GetFiles()/如果臨時文件夾下存在與應(yīng)用程序所在目錄下的文件同名的文件,則刪除應(yīng)用程序目錄下的文件if(File.Exists(Application.StartupPath+"+Path.GetFileName(theFile.FullName)File.Delete(Application.StartupPath+""+Path.GetFileName(theFile.FullName);/將臨時文件夾的文件移到應(yīng)用程序所在的目錄下);File.Move(theFile.FullName,Ap
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專利權(quán)質(zhì)押合同登記程序
- 企業(yè)法律顧問合同(2025年版)
- 2025年審計鑒定合同
- 五年級上冊數(shù)學(xué)教案-總復(fù)習(xí) 第2課時 圖形與幾何|北師大版
- 二年級上冊數(shù)學(xué)教案-用厘米做單位量長度 (7)-西師大版
- 專題一第2課三、《便攜移動設(shè)備》教學(xué)設(shè)計 2023-2024學(xué)年青島版(2018)初中信息技術(shù)七年級上冊
- 2025年黑龍江省綏化市單招職業(yè)傾向性測試題庫含答案
- 2025年湖南司法警官職業(yè)學(xué)院單招職業(yè)技能測試題庫必考題
- 2025年吉林省遼源市單招職業(yè)適應(yīng)性測試題庫附答案
- 2025年黑龍江護(hù)理高等專科學(xué)校單招職業(yè)傾向性測試題庫匯編
- 《職業(yè)教育》專業(yè)知識考試復(fù)習(xí)題庫及答案
- 江西2023公務(wù)員考試真題及答案
- 《國家中藥飲片炮制規(guī)范》全文
- 財務(wù)管理實務(wù)(第二版)高職PPT完整版全套教學(xué)課件
- 中國古代快遞的產(chǎn)生與發(fā)展
- 高二物理上期期末復(fù)習(xí)備考黃金30題 專題04 大題好拿分(提升20題)
- 節(jié)事活動策劃與組織管理 節(jié)事活動概論
- 電梯安裝質(zhì)量手冊、程序文件、作業(yè)指導(dǎo)書及記錄表符合特種設(shè)備許可規(guī)范TSG07-2019
- 肋骨骨折病人的業(yè)務(wù)學(xué)習(xí)
- 生產(chǎn)建設(shè)項目水土保持補償費免征申請表
- GBZ/T(衛(wèi)生) 277-2016職業(yè)病危害評價通則
評論
0/150
提交評論