自動更新及保護程序Nancy+BUI+SQLite

斷斷續續一個月時間,中間各種任務穿插。最后終于寫了一個自動更新服務網站和自動更新客戶端?;竟δ軠y試完畢。記錄下

項目傳送門

需求

自動集成,回退版本,守護進程,服務端操作,更新維度,腳本控制(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.控制回滾 (代碼不貼)

邏輯:數據庫記錄每次上傳的文件版本信息?;貪L時就想減,就拿到新的文件


效果圖:



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,268評論 25 708
  • 1. “你知道嗎,我也好想辭職的?!?“不是說工資特別低嗎? 說了那么久,怎么還沒辭職?” ”是啊,薪水低,工作是...
    書辣椒閱讀 2,528評論 0 2
  • 在學習安卓UI控件的時候,發現ListView是在實際開發中會比較常用的一個控件,可以以列表的形式展示數據。但是學...
    請叫我歐巴lu閱讀 657評論 0 2
  • 人們需要更多的是傾訴而不是傾聽。 L是一個感情細膩的女生同時也是個單純的女孩子,她也是我的好朋友。 那天傍晚,我拖...
    就當是朵云閱讀 255評論 0 1