高分求救!!如何实现客户端程序自动更新?在线等待!!!(100分)

W

wjfgm

Unregistered / Unconfirmed
GUEST, unregistred user!
我的一个数据库程序有十几个用户在使用,当我重新调整功能编译后,我需要跑到每个客户
端去进行程序更新操作,甚是麻烦,请问如何实现各客户端的自动更新功能?就是当服务端
更新后,客户端在程序运行时能够自动检测出服务端程序已是新版本,进行自动覆盖更新操
作,谢谢!
 
起初你就应该用3层结构或者多层,这样所修改的只是在服务端即可
 
不用三层就没办法了吗?
 
可以把应用做在服务器,然后在客户端进行映射一个虚拟盘,然后创建应用的快捷方式,以后只要
更改你服务器的应用程序就可以了,这样很好的。
我们公司就是这样实现的。
 
有好几种方法,下面告诉你一种最简单的。
1、在服务器上开一个所有客户端都可以访问得到的共享目录ClientSoftWare,将该目录
设为只读;
2、在服务器上建立一个表SoftVersion,表中设一个Version字段,用该字段标识新的客户端
程序版本;
3、在注册表中建立一个主键,用来标明你的程序以及当前客户端所运行的版本号(CurrentVersion);
4、在你的客户端程序中加几行代码,实现两个功能。一个用来读取注册表中CurrentVersion的键值,
另一个用来读取服务器表SoftVersion中的Version字段值。当发现CurrentVersion的键值低于
Version的字段值时,程序从服务器ClientSoftWare共享目录中自动下载最新的软件并更新自身。
当然了,这两部分代码都必须加在程序初始化的时候。
 
嘻嘻,我刚好完成了这个工作,就跟你谈谈吧:)
(不好不要砸我哦)
说说我的做法,你自己看着行不行:
一、在你的程序开头接收参数,并判断是否有
1、如果没有,从服务器判断是否有新版本(你可以将版本号写到数据库中,不过这样一来
你每次更新都要跑一次,你还可以建一个.ini文件,记录下最新的版本号,每次程序运行时
就从服务器下载下来,然后判断是否存在新版本需要更新),如果没有,程序继续运行。
2、如果有,从服务器下载新版本到本地,但是得改名,取当前窗口的句柄(通过调用API取得)
3、以当前窗口句柄作为参数运行新下载的最新程序。
二、如果在程序开头如果接收到参数
1、根据句柄关闭旧窗口。
2、将下载下来改了名的文件重新命名回来。

就这样了,你试试看行不,有更好的办法记得告诉我哦:)
 
我倒有遇到过这么一个例子,不过是用PB编的,思想应该是一样的,
它是把有关应用程序的文件(PB是pbd文件)用blob类型的字段存到数据库的一张表里(当然得
有版本号字段),每个客户端都有一个INI文件记录该客户端程序的版本,这样在整个运行之前
先与数据库对版本号,如果版本低就下载.上传得做一个外挂程序,把应用程序文件传到数据库
 
To:WolfXP,小小鹰
先行谢过,但我还真不知怎么实现这些代码呢,能给出详细源代码吗?如果可行,马上结贴。
 
还有一种方法更专业一些,但是编程上会更为麻烦一些。对于一般的项目不推荐使用,但是
如果你是一个完美主义者或者你的项目要求更为安全的机制可以考虑实现下面这种方法。
这种方法与上一种方法基本相同。区别在于不用开设共享目录ClientSoftWare,而是把你最新
版本的的软件直接存储在服务器上的数据库中。当客户程序从注册表中读取的CurrentVersion
值比SoftVersion表中的Version字段值小时,用数据库方式从服务器端“Down”下最新的软件
并更新。
有一点需要说明的是:如果你的程序编译为COM或者DLL,你可以在SoftVersion表中根据你的模块
划分添入多行记录,这样你的每一行记录可以对应一个模块。就可以不用更新所有的客户端软件了
,更多的时候可能只是更新一个或几个模块。这样可以减小网络数据流量,而且更为专业,特别是
如果你的项目在网络状况不是很好的条件下进行。:)
 
to wjfgm:
晕倒!我在项目中早就用过这些方法了,当然可行。我会告诉你没有把握的答案吗?当然
不可能!呵呵。
你既然可以做到“一个数据库程序有十几个用户在使用”,难道连这种小儿科的东西也要别
人替你编写“详细源代码”吗?朋友,别太吝啬自己的脑细胞了,告诉你思路,然后自己去实
现它,对你的成长有好处,况且相信你已经不是一个生手。好好努力吧,我别不多说了。
 
还有一个办法简单点的
在你主程序运行前,先运行一个检查更新的程序,判断是否有新版本,有则先下载新版本
覆盖主程序,然后再运行它:)
具体的代码我没有办法给你,只能给你一个思路,因为这也是在高手的指导下做的
需要做的工作大概有:
1、在服务器上开个FTP目录;
2、建一个.dll文件,里面包含的函数有:1)下载文件2)关闭窗口3)读.ini文件里面的版本
号和需要下载的文件列表
3、其它的就跟我上面说的差不多了,简单点就是判断是否需要更新,需要,下载文件:)
 
To:WolfXP
既然老兄你这么说了,我也只能硬头皮上了,希望脑细胞不要死太多,并能在短时间内完
成.
谢谢WolfXP和小小鹰,给分!
 
顶部