一个程序自动更新的问题(100分)

  • 主题发起人 主题发起人 UnderWyx
  • 开始时间 开始时间
U

UnderWyx

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个程序需要从网上服务器(由我管理)自动更新,请问如何实现?
 
是不是类似于杀毒软件的自动更新???
 
刚好前不久我做了一个,给你提个思路.

首先设计一个版本文件,这个文件可以是文本文件,反正定义随便你,主要是用来放你的
文件版信息,以便及时比较现在的文件和网上的去比较是不是最新的.

我用ini文件.
例如我的格式为
Update.ini
[Information]
Version=1.2
Date=2002-9-10
Updatefile=http://www.xxx.com/xxx.exe
....
这样,你把把这个INI文件传到网上,再把这个对需要更新的文件传到网上
在自动更新时候首先下载这个ini文件,因为只有几百个字节,所以下载很快,
然后比较这个文件和你现在的版...然后如果需要更新的话就...

想这个思路你应该能看懂.

下载的控件可以用 ICS控件包中的控件,用它可以做下出载进度条!!
控件在www.playicq.com上有下载.


 
如何检测是否是最新版本可以用楼上的思路

下载如果不想用组件的话,可以用系统的FTP.EXE程序,还可以上传,很方便.
 
对不起,我还是个新手,能说的清楚一点吗[8D]
 
http://vip.6to23.com/NowCan1/tech/net_upd.htm
 
主要问题是如何下载用Delphi下载网站上的.ini文件?
 
那,EXE文件如何自己更新?请说明。
 
exe更新自己我是用生成.bat文件来实现的。 我觉得这方法最简单。
当前程序判断是否需要升级, 如果需要则下载升级程序保存成一个临时文件, 同时生成一个.bat文件, .bat文件里主要就是循环copy临时文件到目标文件直到成功, 最后加上删除临时文件和bat文件自己两句。然后程序退出, 在退出前调用shellexecute执行那个bat文件。这样就完成自动升级了。不过要自动重新加载就稍微麻烦了一点, 主要问题是不能在.bat文件里执行调用命令, 因为这样的话.bat文件不会结束(等于自己的程序成了dos的一个showmodal的窗口了)而且在程序运行期间cpu占用率会保证不低于100%.
我用的方法是通过一个中间win32的exe程序在.bat中来调用目标程序实现自动重载的。

期待更好的方法。
 
Delphi不是有Indy组件吗?我那个例子虽然是BCB的,但是Delphi也一样的啊。
 
1.比较版本的就用:del520的思路
2。如果有新版本的话,就从网上下载,同时生成一个BAT文件
3。运行BAT文件,并结束旧程序,用BAT删除旧程序,并运行新程序。
 
我的意思是,如何编程下载文件?
 
1.用 楼上说的控件
2.自己写:当Client检测到有新版本时,则向Server端发一特殊字符过去,S端接收到时,
则向C端的IP发送数据(C端有IP地址和端口),组件DELPHI里有现成的.S端的文件可用流
的形式发送.
3.你也可以将DELPHI例子里的CHAT程序改改就可以做一个简单的发送文件的程序里.原理
差不多!

 
什么都不用,只用数据库就可以解决
 
用动态网络配置就可以了
 
没有很好的思路,如自己做可能会选用成熟控件实现,以前看过具体名字记不清了。
 
大富翁论坛资料库里有
 
谢谢大家
 
系统正需要这个功能
强烈关注!
 
后退
顶部