自动更新及保护程序Nancy+BUI+SQLite

断断续续一个月时间,中间各种任务穿插。最后终于写了一个自动更新服务网站和自动更新客户端。基本功能测试完毕。记录下

项目传送门

需求

自动集成,回退版本,守护进程,服务端操作,更新维度,脚本控制(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,其实有更好的方法。下面贴出方法。


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

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

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

//2.第二次开始:

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

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

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

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

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

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


效果图:



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,280评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,218评论 25 709
  • 1. “你知道吗,我也好想辞职的。” “不是说工资特别低吗? 说了那么久,怎么还没辞职?” ”是啊,薪水低,工作是...
    書辣椒阅读 7,284评论 0 2
  • 在学习安卓UI控件的时候,发现ListView是在实际开发中会比较常用的一个控件,可以以列表的形式展示数据。但是学...
    请叫我欧巴lu阅读 3,878评论 0 2
  • 人们需要更多的是倾诉而不是倾听。 L是一个感情细腻的女生同时也是个单纯的女孩子,她也是我的好朋友。 那天傍晚,我拖...
    就当是朵云阅读 1,760评论 0 1

友情链接更多精彩内容