网站大量收购独家精品文档,联系QQ:2885784924

桌面软件的智能更新MagicUpdate更新原理.doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
桌面软件的智能更新MagicUpdate更新原理

桌面软件的智能更新 ——MagicUpdate更新原理 作者:陈秋明 Email: qmroom#126.com? [# = @] ? 测试环境:Win2000/XP/2003/Vista/Windows7 关键字:更新、多线程、断点续传、Ftp、Exe互嵌 ? ? MagicUpdate下载,请与本人联系 本文PDF下载 ? 索引 1???? 摘要:... 2 1.1????? 使用到的技术:... 2 1.2????? 更新流程... 3 1.3????? 模块划分... 3 2???? 界面展示... 5 3???? 网络及多线程技术... 7 3.1????? 多线程下载和断点续传... 7 3.2????? Ftp上传下载... 7 3.3????? 多线程与主线程(界面)的数据交互... 8 4???? 更新细节... 10 4.1????? 更新模式... 10 4.2????? 文件结构设计... 10 4.2.1?????? 服务器端文件信息... 11 4.2.2?????? 客户端文件信息ClientConfig结构... 13 4.2.3?????? 管理端文件信息ManagerConfig结构... 14 4.2.4?????? 宏说明及文件路径的计算... 15 4.3????? 更新详细流程... 16 4.3.1?????? 管理端流程... 16 4.3.2?????? 客户端流程... 17 4.4????? 客户端命令行... 18 4.5????? 自我升级... 19 5???? 小结... 20 ? ? ? 1?????? 摘要: 随着桌面软件文件的增多增大、版本升级频繁,有时因为改动了几个很小的几个dll文件,客户不得不从网站上重新下载整个安装包。并且开发人员不得不从繁忙的工作中抽出大量的时间来维护版本的升级,导致开发成本增加、维护难度大等诸多问题。有没有更完美的解决方案,来让软件自动升级到新版本呢?答案当然是肯定的。在当今网络技术技术迅速发展的时代,各个软件厂商各有各自的升级方法,现在我就谈谈我的解决方案。 1.1??? 使用到的技术: 关键技术: ????????? 多线程管理及交互 ????????? Http下载和断点续传 ????????? Ftp上传下载 ????????? Vc++对Xml读写解析 ????????? Md5算法 ????????? 可执行程序Exe的相互嵌套 控件技术: ????????? 自定义三态树形控件CTreeCtrl和CListCtrl的互动 ????????? 自定义CListCtrl,实现控件互嵌(进度条、编辑框、下拉框) ????????? 控件的自绘制 ? 1.2??? 更新流程 1.???????? 管理端上传当前版本的文件到服务器; 2.???????? 客户端先自我更新,然后更新产品。获取服务器信息,判断是否需要更新。若需要则提示用户更新。 1.3??? 模块划分 ? 2?????? 界面展示 管理端: 客户端: 自动模式下的更新提示: 升级程序自我更新: ? 3?????? 网络及多线程技术 3.1??? 多线程下载和断点续传 桌面软件的升级的方法有很多,如何自动的升级,当然少不了数据传输程序。为了能够穿透防火墙在广域网使用我采用了基于http的下载。 原理大致如下: 1.???????? 创建一个的空文件,大小为需要下载的文件大小+零时数据大小; 2.???????? 创建多个线程,同时利用CreateFile共享写打开临时文件,移动文件指针到数据块开始区域; 3.???????? 使用WinNet API,建立多个服务器连接,向服务器请求同一个文件的不同数据段的数据保存到同一个临时文件,并保存已下载的数据大小; 4.???????? 数据都读完后,修改文件大小为原来大小。 若下载中途网络中断,下次下载时,则可以从尾部文件信息中获取已下载的大小,便于继续上一次的下载。实现起来当然要考虑诸多细节方面,由于篇幅有限,就不详细说明。 3.2??? Ftp上传下载 利用WinNet函数很容易实现Ftp的上传下载,这里就不详细说明。 3.3??? 多线程与主线程(界面)的数据交互 交互的实现很复杂,用到了指针,回调函数,自己的消息队列等。要全部讲清楚确不容易,我就简要介绍一下。 1.???????? 定义消息结构 typedef struct _NotifyW3ctPara { ???? int????? nIndex;??????????????? //同一个下载文件中线程索引 ???? UINT nNotityType;??????????????? //消息类型 ???? DWO

文档评论(0)

xingkongwd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档