免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 7281 | 回复: 33
打印 上一主题 下一主题

windows update的原理-如何实现基于patch的软件升级 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-05 11:04 |只看该作者 |倒序浏览
见标题

论坛徽章:
0
2 [报告]
发表于 2005-12-05 11:07 |只看该作者
设置版本号 比较版本号 下载缺的补丁 然后update吧

不是很难的

论坛徽章:
0
3 [报告]
发表于 2005-12-05 11:15 |只看该作者
thanks to benjiam   
实现原理是不是大概是这样的:
1.将应用分割成多个DLL,并登记DLL的功能,版本及版本描述;
2.在服务器端也维护一个DLL功能,版本及版本描述;
3.客户端主动连接服务器查找DLL的版本及版本描述检查更新;
4.下载新版本DLL到临时目录;
5.根据DLL的功能,提示关闭正在运行的DLL;
6.替换原DLL;
7.重启系统.

论坛徽章:
0
4 [报告]
发表于 2005-12-05 12:28 |只看该作者
首先这里是UNIX的C版
其次搂主既然知道,还来提问干吗呢?

论坛徽章:
0
5 [报告]
发表于 2005-12-05 12:39 |只看该作者
原帖由 bigapple2008 于 2005-12-5 12:28 发表
首先这里是UNIX的C版
其次搂主既然知道,还来提问干吗呢?

你太狭隘。
这个问题是不分平台的。
linux/unix 也有同样的问题,
只要是做商业软件,就会遇到这个问题。

论坛徽章:
0
6 [报告]
发表于 2005-12-05 13:20 |只看该作者
谢谢思平的理解
to bigapple2008 : 你好, 其实上面我总结的7点都是我的猜想,并没有得到实践物验证, 发到这里,旨在希望大家给点意见, 也给想做软件升级的同胞们一点思路.

论坛徽章:
0
7 [报告]
发表于 2005-12-05 13:33 |只看该作者
原帖由 bluesjsp 于 2005-12-5 13:20 发表
谢谢思平的理解
to bigapple2008 : 你好, 其实上面我总结的7点都是我的猜想,并没有得到实践物验证, 发到这里,旨在希望大家给点意见, 也给想做软件升级的同胞们一点思路.

我前阶段在 linux 平台做,思路和你的差不多。
我在服务器端是用一个 CGI 程序控制的。
客户端的升级程序流程大概是这样的:

1,收集本机各个模块的版本信息。
2,将版本信息发送到服务器端。
3,服务器端经过一阵子运算,得到一个 url 列表。每个 url 代表一个模块的链接。
4,客户端收到 url 列表后,一个一个下载,下载可以使用 wget 或者 Perl 的 LWP,下载下来的东西可以放到 /tmp 目录
5,下载全部完成后,对每一个模块循环调用“升级”指令。

服务器端(CGI)的流程是:
1,接受到客户端的升级请求后,从一个模块依赖文件中,检索到每个客户端模块的最新版本。
2,将最新版本的 url 送给客户端。

模块依赖文件有两种方式可以维护:
1,有些比较有规律的,可以放在 makefile 或者是 auto-build 脚本里。
2,不太有规律的,可以开发一个 GUI 界面,由产品经理或者开发部经理手工维护。

模块的定义:
1,每个模块都完成了一个相对独立的功能。
2,每个模块都应该提供自己的升级脚本(和程序打包、压缩到一起),客户端下载到模块后,自动调用此脚本。


以上思路大多数都是通用的,
还有一些和我的具体产品有关的思路,没有列出来。
大家一起讨论一下。

我现在遇到的最头疼的问题,莫过于应用程序关联的配置文件的升级了。
每次版本变化,都伴随着配置文件的变化,
简单的用最新的版本替代客户端的版本肯定是行不通的,因为那样的话客户端的配置就丢了。
但是保留老配置的话有些新的配置条目又增加不上去,
更何况有些配置文件行的先后顺序都会有影响。

我的体会是,随好设计一个好的语法,将所有的配置文件都写成一种格式的。
好比 .ini 那种方法就不错。
我这里是没办法了,
因为有一些是 linux 操作系统的配置,本来就不是很统一。
再加上开发人员也不受我约束……

论坛徽章:
0
8 [报告]
发表于 2005-12-05 13:35 |只看该作者
BTW:以上所说的每一个部分,我都是用 Perl 来实现的,我觉得用 Perl 做还是比较好的方案。
楼主是 windows 平台吗?
那样的话,还得考虑界面……
更麻烦。

论坛徽章:
0
9 [报告]
发表于 2005-12-05 13:51 |只看该作者
cvs

论坛徽章:
0
10 [报告]
发表于 2005-12-05 13:53 |只看该作者
再次感谢思平,将您的宝贵经验共享给大家
我的环境:
客户端是symbian的手机平台,采用C++开发
服务端是JAVA应用服务器

你说的配置文件是比较麻烦,在开发之初选择XML会不会好些呢?   使用XML的结构化特性应该好点.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP