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。
 
六、开源
 
 
posted on 2013-04-11 21:57  CnSharp Studio  阅读(5803)  评论(33编辑  收藏  举报