我想模仿MS的升级程序,做一个升级程序.

解决方案 »

  1.   

    原理:由于WINDOWS在WINDOWS UPDATE时会在硬盘上建立相应记录文件夹,该文件夹就是C:/Windows/SoftwareDistribution,并把相应升级信息写入注册表,假如升级出现错误,注册表也相应记录错误信息。并在每次WINDOWS DATE中去自动访问SoftwareDistribution目录,以至于出现依次升级错误就会造成以后屡次出现错误,而造成升级次次失败。客户端的升级程序流程大概是这样的:1,收集本机各个模块的版本信息。
    2,将版本信息发送到服务器端。
    3,服务器端经过一阵子运算,得到一个 url 列表。每个 url 代表一个模块的链接。
    4,客户端收到 url 列表后,一个一个下载,下载可以使用 wget 或者 Perl 的 LWP,下载下来的东西可以放到 /tmp 目录
    5,下载全部完成后,对每一个模块循环调用“升级”指令。服务器端(CGI)的流程是:
    1,接受到客户端的升级请求后,从一个模块依赖文件中,检索到每个客户端模块的最新版本。
    2,将最新版本的 url 送给客户端。模块依赖文件有两种方式可以维护:
    1,有些比较有规律的,可以放在 makefile 或者是 auto-build 脚本里。
    2,不太有规律的,可以开发一个 GUI 界面,由产品经理或者开发部经理手工维护。模块的定义:
    1,每个模块都完成了一个相对独立的功能。
    2,每个模块都应该提供自己的升级脚本(和程序打包、压缩到一起),客户端下载到模块后,自动调用此脚本。