基于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)按照接口字符串协议打包生成需要更新、删除、添加的文件列表字符串提供给上层应用解包后完成软件需要更新、删除、添加文件的分发下载。
评论