SharpUpdater是一個基於.net Framework,將自動更新功能添加到您的windows桌面程序的引導程序。從2.0版本起,它也是一個解決方案,增加了一個示例服務端,提供了一組API供開發人員擴展。
一、工作原理
Updater.exe 從服務端下載最新版本的發布清單配置文件,同本地發布清單進行比較,如果發現本地版本落后,則從服務端下載差異文件,覆蓋到本地, 然后啟動主程序。
二、服務端配置
以IIS7.5為例
1、新建一個IIS站點。
2、禁用*.dll程序處理映射,以允許dll文件下載。

3、在此站點下創建桌面程序子目錄,如~/demo/。
三、客戶端配置
1、包括或引用SharpUpdater.Util.dll/Updater.exe,如果需要用到zip格式更新包,還需要包括ICSharpcode.SharpZipLib.dll/CnSharp.ZipUtil.dll


2、主程序入口增加對Updater的互操作代碼
private static void Main(string[] args) { if (args.Length == 0) { Process.Start("updater.exe"); Application.Exit(); return; } if (!args[0].StartsWith("ok")) { Application.Exit(); return; } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }
四、打包發布
1、SharpPack
SharpPack是一個VS2010擴展,用於生成WinForm程序並發布清單
首先安裝VS擴展,將SharpPack.7z解壓縮后copy 到 C:\Users\[username]\Documents\Visual Studio 2010\Addins 下就可以了。
啟動VS,打開項目。
右擊WinForm項目,選擇Package and Publish命令


設置Assembly版本號

挑選需要發布的文件,填寫Release List相關字段

2、將bin目錄下生成的ReleaseList.xml和1.0.0.0文件夾上傳到服務端的~/Demo/下
五、可擴展性
1、Updater的擴展
1)實現 CnSharp.Windows.Updater.Util.UpdateProxy.IUpdateProxy
在SharpUpdater的源代碼中,我們沒有實現此接口,參見CnSharp.Windows.Updater/Common.cs/Ln.14。因此默認情況下只顯示待更新版本當前版本的更新日志;假設用戶從V1.0升級到V1.4,則只能看到V1.4的更新日志,看不到V1.1~V1.3的。開發人員可自行實現它。
2)SharpUpdater源碼基於MIT協議,你可以自由修改。
2、SharpPack的擴展
1)基類:
CnSharp.Windows.Updater.SharpPack.Connect
提供了一組protected virtual方法,你可以重寫它們自定義UI或操作。
2)接口:
IVersionControl
此接口幫助你簽出 AssemblyInfo.cs 以修改版本號。默認實現了TFS,你可以自行實現其他版本控制工具如SVN。
六、開源