客服端程序,动态更新如何实现?
小弟现在又两种方式实现动态更新,一是从服务器复制文件,二是通过Http自动下载更新后的文件。
现在重点解决第二种方式,通过Http来实现自动更新。
就像杀毒软件一样每次打开都会自动更新病毒库。
现在使用WebClient类是可以实现下载,并且能实现下载那些更新过的文件。
关键问题是,如果WebClient下载过程中突然断网如何处理(不考虑有网后继续下载的功能)?
假如我在更新下载,下载过来的文件是采取覆盖本地文件的方式。下载突然断网,那么下载一般的文件是个破损文件(无效)。如何处理,请教,谢谢!
小弟现在又两种方式实现动态更新,一是从服务器复制文件,二是通过Http自动下载更新后的文件。
现在重点解决第二种方式,通过Http来实现自动更新。
就像杀毒软件一样每次打开都会自动更新病毒库。
现在使用WebClient类是可以实现下载,并且能实现下载那些更新过的文件。
关键问题是,如果WebClient下载过程中突然断网如何处理(不考虑有网后继续下载的功能)?
假如我在更新下载,下载过来的文件是采取覆盖本地文件的方式。下载突然断网,那么下载一般的文件是个破损文件(无效)。如何处理,请教,谢谢!
把打开程序做成一个控制台程序,
控制台程序每次启动后读取程序版本,根据相应的版本读取相应的主程序...
主程序呢,可以是不同版本的DLL,或是EXE,随自己喜好。
更新的时候呢,就把每次更新的文件放在一个更新文件夹里。更新过程没有出错呢,就更新一下程序版本。出错了就不更新,依然打开当前旧版本。
打开程序(控制台程序)如果打开当前出错,可以根据版本列表,继续打开上一个版本的程序...ok,这样可以保证程序依然运行正常...而就版本依然可以用更新来获得最新版本...
下载完成时检查文件大小(严格的话可以检查md5码)如成功则替换对于更新的过程呢,(可以同时启动控制台程序来对更新失败时的获取控制权),下载完成时检查文件大小,版本,(如上面所说严格的话可以检查md5码)如成功则替换,并更新版本列表,更新完毕再枪毙掉老版本程序,打开新程序......整个工程就OK了...
使用这几个类就可以了。
System.IO.File.Copy
File.Move .....
额? 不是要用到传说中的System.IO 吗?
这个是我自己写的独立的自动更新程序,并且可以更新更新程序自身。仅供参考,要源码QQ:66970551。