基于WinCE的智能終端自動升級引擎設計
(1)在運行智能終端主程序時就啟動升級模塊,從服務器下載最新的版本號,如果對比當前版本號過時,則提示是否升級。
(2)在獲取網絡連接正常且帶寬允許的情況下,確認升級。
(3)服務器接收到升級請求后,向數據庫獲取新舊版本的版本信息和文件信息列表,通過任意版本間版本信息的比較算法獲取需要更新、刪除、添加的文件列表。
(4)智能終端通過獲取到的需要更新、刪除、添加的文件列表下載相關的升級模塊來進行軟件的自動升級。
(5)顯示下載進度。
(6)下載完畢后,對要注冊的文件進行注冊。
(7)升級完成,關閉升級模塊,運行主程序。
(8)在主程序運行過程中檢測、獲取服務器智能推送過來的版本信息。
(9)如發現智能推送過來版本升級信息,回到第4步。
(10)關閉主程序。
4.版本信息數據庫和算法的設計
4.1 版本信息數據庫的設計
(1)tab_ver_all(歷史版本控制表)
該表數據項說明如表一所示:
表一 歷史版本控制表
列名 | 數據類型 | 長度 | 是否為空 | 意義 |
ID | integer | 2 | N | 標志一條記錄 |
Ver_number | verchar | 6 | N | 智能終端軟件版本號 |
Ver_date | date | 20 | N | 軟件發布日期 |
Ver_remark | verchar | 100 | Y | 備注 |
(2)tab_ver_info(版本信息控制表)
該表數據項說明如表二所示:
表二 版本信息控制表
列名 | 數據類型 | 長度 | 是否為空 | 意義 |
ID | integer | 2 | N | 標志一條記錄 |
FileName | verchar | 20 | N | 文件名 |
BelongVer | verchar | 10 | N | 所屬版本,與tab_ver_info建立外鍵關系 |
FileVer | verchar | 10 | N | 文件版本 |
FileSize | verchar | 20 | N | 文件大小 |
ServerList | verchar | 60 | N | 服務器安裝目錄 |
ClientList | verchar | 60 | N | 智能終端安裝目錄 |
FileDate | date | 20 | N | 文件發布日期 |
fileRemark | verchar | 100 | Y | 備注 |
4.2 任意版本間版本信息比較的算法設計
4.2.1 算法設計的目的
本算法接收新舊版本號,運算后按照接口字符串協議提供給上層應用需要更新、刪除、添加的文件列表字符串。
4.2.2 算法設計的思路和流程
(1)根據輸入的新舊版本號查詢版本信息控制表,獲取到新舊版本的文件名列表。
(2)把新舊版本的文件名列表放入new()和old()兩個數組中,進行第一次循環比較:相同的文件放入same()數組中,多余的文件放入del()數組中,沒有的文件放入add()數組中。由此已經確定了需要刪除、添加的文件名列表。
(3)再根據輸入的新舊版本號和same()數組中的相同文件名查詢版本信息控制表中相同文件名的文件版本號,進行第二次循環比較:文件版本號相同的文件保留,不同的則放入update()數組中,由此最終確定了需要更新的文件名列表。
(4)通過得到的三類文件名列表查詢版本信息控制表獲取完整包括文件名、文件大小、服務器安裝目錄、智能終端安裝目錄等文件信息。
(5)按照接口字符串協議打包生成需要更新、刪除、添加的文件列表字符串提供給上層應用解包后完成軟件需要更新、刪除、添加文件的分發下載。
評論