自動更新元件分享

2021-09-05 07:14:36 字數 2819 閱讀 8896

前兩天在部落格上發布了一篇英文的自動更新元件文章

· 1.摘要

· 2.本文提綱

· 3.為什麼不使用clickonce

· 4.簡要介紹

· 5.專案中如何使用

· 6.具體效果

· 8.總結

在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節裡我們來談一下為什麼不使用微軟給我們提供的自動更新元件clickonce, 大家都知道clickonce給我們提供了很多功能:簡單說來,clickonce 應用程式就是任何使用 clickonce 技術發布的 windows 窗體或控制台應用程式。可以採用三種不同的方法發布 clickonce 應用程式:從網頁發布、從網路檔案共享發布或是從**(如 cd-rom)發布。clickonce 應用程式既可以安裝在終端使用者的計算機上並在本地執行(即使當計算機離線時也可以執行),也可以僅以聯機模式執行,而不在終端使用者的計算機上永久安裝任何 內容。clickonce 應用程式可以自行更新;這些應用程式可以在較新版本變為可用時檢查較新版本,並自動替換所有更新的檔案。開發人員可以指定更新行為;網路管理員也可以控制 更新策略,如將更新標記為強制性的。終端使用者或管理員還可以對更新進行回滾,使應用程式恢復到早期的版本。

從上面大家可以看出clickonce 無疑是微軟對client/server模式部署的最佳解決方案,但正是因為它的功能特別強大而且又要使用相當簡單,所以在產品的封裝上就特別嚴實,基本 上就暴露了一些簡單的操作介面,這樣就無形把一些定製化的操作拒之於門外,比如:

1,使用者不能自己指定安裝路徑。

2,對自動更新流程不能做定製化的操作。

3,對自動更新的ui不能定製化的設計。

正因為這幾個原因,所以很多企業都會做一些定製化的元件來實現自動更新的功能,基於此,我們這裡也實現了乙個非常簡單的自動更新元件.

其實自動更新的原理很簡單,分析起來無非就是簡單的幾步操作,當然實現方式也是大同小異,這裡我們就選一種較簡單的方式:

1.啟動主程式,主程式裡面呼叫公升級程式,公升級程式連線到iis或者ftp。

2.公升級程式獲取伺服器端xml配置檔案中新版本程式的更新日期或版本號或檔案大小。

3.公升級程式獲取原有客戶端應用程式的最近一次更新日期或版本號或檔案大小,然後兩者進 行比較;如果新版本日期》原有程式的最新日期,則提示使用者是否公升級;或如果新版本版本號》原有程式的版本號,則提示使用者是否公升級;再或如果新 版本檔案大小》原有程式的檔案大小,則提示使用者是否公升級。本文主要採用一般的做法,就是通過版本號來進行對比。

6.刪除舊的主程式,拷貝臨時資料夾中的檔案到相應的位置;

8.結束公升級流程並重新啟動主程式。  

根據前面的流程,我們可以簡單設計如下的專案:

圖1具體類介紹:

iautoupdater.cs         提供外部呼叫的介面

autoupdater.cs          該元件的主操作類

autoupdater.config      本地配置檔案

downloadconfirm.cs    提示是否有更新頁面

commonunitity.cs     一些常用功能

config.cs         當更新完畢之後需要更新config,所以這裡需要乙個提供序列化的config類

constfile.cs      一些常量檔案

localfile.cs     本地檔案實體類

remotefile.cs     遠端檔案實體類

updatefilelist.cs     本地的實體類集合

第一步:host更新的版本到伺服器

如果需要讓客戶端獲取最新的版本,首先我們需要開發人員編譯源**並生成檔案,然後拷貝到ftp或者iis目錄下,執行乙個自動生成xml檔案的程式,把所有的檔案都自動生成到乙個xml檔案,詳細見下圖:

圖2
第二步:配置本地的config

圖3第三步:修改主程式

#region check and download new version program

bool bhaserror = false;

iautoupdater autoupdater = new autoupdater();

trycatch (webexception exp)

catch (xmlexception exp)

catch (notsupportedexception exp)

catch (argumentexception exp)

catch (exception exp)

finally

catch (exception)}}

#endregion

當我們執行主程式(winform或者wpf),如果伺服器上有最新的版本,就會彈出如下頁面進行提示並讓使用者選擇是否更新。

圖4當使用者不需要更新時,可以選擇skip按鈕跳過並繼續主程式流程,反之則進入如下頁面。

圖5

圖6

自動更新元件分享

1.摘要 2.本文提綱 3.為什麼不使用clickonce 4.簡要介紹 5.專案中如何使用 6.具體效果 8.總結 在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節裡我們來談一下為什麼不使用微軟給我們提供的自動更新元件clickonce,大家都知道clickonce給我們提供了很多功能...

自動更新元件分享

前兩天在部落格上發布了一篇英文的自動更新元件文章 1.摘要 2.本文提綱 3.為什麼不使用clickonce 4.簡要介紹 5.專案中如何使用 6.具體效果 8.總結 在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節裡我們來談一下為什麼不使用微軟給我們提供的自動更新元件clickonce...

Winform自動更新元件分享

出處 1.摘要 2.本文提綱 3.為什麼不使用clickonce 4.簡要介紹 5.專案中如何使用 6.具體效果 8.總結 在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節裡我們來談一下為什麼不使用微軟給我們提供的自動更新元件clickonce,大家都知道clickonce給我們提供了很...