有没有开源的更新程序?该如何处理

有没有开源的更新程序?
我想做个软件的自动更新程序,想参考一下代码

有没有成熟好用的自动更新的代码?

功能就是

1.从服务器取得文件信息
2.把文件下载到本地
3.替换文件 

功能也不复杂,实现起来也不难,我就是想参考一下别人是怎么实现的

------解决方案--------------------
记得老妖的网站上有个自动更新的组件,你下来参考一下。我做的是从服务器端控制的,在应用程序里检测服务器上的设置,如果有更新就启动更新程序,更新程序通过ftp获得配置文件,通过配置文件,连接ftp服务器
下载所需更新的文件,并替换老的文件,替换完成后设置新版本后启动应用程序。
------解决方案--------------------
简单的实现方式:在服务器上维护一个ini文件,里面包含了需要更新文件的版本信息,自动更新时先通过http下载该文件,然后分析版本信息,再和本地的文件作对比,可以考虑加入MD5等校验信息,确认服务端有新文件,就下载之,然后更新模块文件,如果涉及到更新自身,需要另外开辟一个进程来负责。
------解决方案--------------------
记得前一个来月做了个自动检测版本信息的,每次打开从一个更新路径下载个XML文件,再解析出来,与本地Ini配置文件的版本号进行比较,发现有更新就进行友好提示,功能是可以实现,就是初始化窗体之前要等很久,后来把这段代码给屏蔽了。
------解决方案--------------------
为了分数只能把我现在用的代码贴一下了,检查版本,发现升级需求时,下载升级配置文件
C/C++ code
               if(!ShellExecute(NULL,NULL,"UpDate.exe",NULL,ExtractFileDir(Application->ExeName).c_str(),SW_SHOW))
                        {
                                MessageBox(Form1->Handle ,"运行更新程序失败,软件自动更新失败!","出错",NULL);
                        }

------解决方案--------------------
我的方法
1.先在服务器上建一个FTP,把需要更新的文件放在这个目录下,比如一个exe 文件
2.软件里面有个定时器去数据库里一个版本表中找版本号,如果发现自己和版本表中版本不符(傻瓜点的话可以设一个int值作为判断),就通过idftp控件去ftp服务器中下载需更新的文件。
3.执行一个批处理把下载到本机的更新文件覆盖掉!
------解决方案--------------------
我使用的是autoupgrader这个控件,看来大家都自己动手实现了,那样最好了。