zoukankan      html  css  js  c++  java
  • 开源的.NET桌面程序自动更新组件 ——Sharp Updater 2.1发布

        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。
     
    六、开源
     
     
    作者:CnSharp.com
    本文版权归CnSharp.com和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Python的网络编程[0] -> socket[1] -> socket 模块
    Python的网络编程[0] -> socket[0] -> socket 与 TCP / UDP
    Python的功能模块[4] -> pdb/ipdb -> 实现 Python 的单步调试
    Python的功能模块[3] -> binascii -> 编码转换
    Python的功能模块[2] -> abc -> 利用 abc 建立抽象基类
    Python的功能模块[1] -> struct -> struct 在网络编程中的使用
    Python的功能模块[0] -> wmi -> 获取 Windows 内部信息
    Python的程序结构[8] -> 装饰器/Decorator -> 装饰器浅析
    Python的程序结构[7] -> 生成器/Generator -> 生成器浅析
    Python的程序结构[6] -> 迭代器/Iterator -> 迭代器浅析
  • 原文地址:https://www.cnblogs.com/cnsharp/p/3015514.html
Copyright © 2011-2022 走看看