zoukankan      html  css  js  c++  java
  • Nancy+BUI+SQLite自动更新服务端和客户端保护更新程序

    写了一个自动更新服务网站和自动更新客户端。基本功能测试完毕。记录下

    项目地址:https://github.com/TeemoHQ/AutoUpdate

    需求

    热替换自我更新,自动集成,回退版本,守护进程,服务端操作,更新维度,脚本控制(bat)多个客户端。

    介绍




     

     

    AutoUpdateServer采用Nancy WEB框架。

    功能:1.提供上传文件的接口

               2.匹配文件并且建立多个不用客户端的文件仓库

               3.打包,提供更新包,

    AutoUpdateClient采用控制台

    功能:1.循环请求服务端,检查当前客户端是否需要更新

               2.检查客户端是否空闲

               3.更新客户端文件

               4.脚本控制客户端特殊文件

               5.检查客户端进程是否关闭,如果关闭则打开(非更新状态下)

    客户端

    功能:提供当前是否空闲接口


    新的知识点梳理

     

    1.Nancy.Forms authentication

    2.Nancy CSRF防御

    3.Nancy 静态文件的使用

    4.7ZIP 压缩解压

    5.命名管道通讯

    6.自动更新算法逻辑

    其他:Nancy IIS部署的时候的权限释放,CRC包的加密,log4net

    核心算法

    核心的算法都在服务端(大部分时间差不多都花在这里。改了四五次)

    1.匹配文件。生成更新包。一开始是通过文件version属性,但发现有些文件没有version属性,找到更好的方法。下面贴出方法。

            private static bool isTheSame(FileInfo f1, FileInfo f2)
            {
                using (var md5 = MD5.Create())
                {
                    byte[] hash1, hash2;
                    using (var stream = f1.OpenRead())
                        hash1 = md5.ComputeHash(stream);
                    using (var stream = f2.OpenRead())
                        hash2 = md5.ComputeHash(stream);
                    return hash1.SequenceEqual(hash2);
                }
            }

     

    2.文件仓库管理算法(代码就不贴了。说下逻辑)

    //1.第一次上传的时候或者当前没有出新文件的时候。和模板文件匹配.

     BaseModel是基文件,因为每个客户端其实类似,部分DLL不同而已。所以第一次都先匹配这个

    //2.第二次开始:

    //  A【修改】.上传文件和本地文件都存在,对比不同,则把最新的文件复制到work目录和仓库目录,并且设置上传文件version为最新version(存入数据库时)

    //  B【不变】.上传文件和本地文件都存在,对比相同,不复制文件,设置上传文件version为老版本文件的version(存入数据库时)

    //  C【新增】.上传文件存在,本地文件不存在,则把最新的文件复制到work目录和仓库目录,并且设置上传文件version为最新version(存入数据库时)

    //  D【删除】.上传文件不存在,本地文件存在。暂时不操作。

    3.控制回滚 (代码不贴)

    逻辑:数据库记录每次上传的文件版本信息。回滚时就想减,就拿到新的文件


     

    效果图:


     

     
  • 相关阅读:
    开发基于键值对形式的语言管理器LauguageManager
    基于Json(键值对)配置文件的配置管理器
    Unity换装效果
    技能冷却效果的制作
    c#中的反射
    委托和事件的区别
    字典
    有序列表
    链表

  • 原文地址:https://www.cnblogs.com/TeemoHQ/p/5939126.html
Copyright © 2011-2022 走看看