客服端程序,动态更新如何实现?
小弟现在又两种方式实现动态更新,一是从服务器复制文件,二是通过Http自动下载更新后的文件。
现在重点解决第二种方式,通过Http来实现自动更新。
就像杀毒软件一样每次打开都会自动更新病毒库。
现在使用WebClient类是可以实现下载,并且能实现下载那些更新过的文件。
关键问题是,如果WebClient下载过程中突然断网如何处理(不考虑有网后继续下载的功能)?
假如我在更新下载,下载过来的文件是采取覆盖本地文件的方式。下载突然断网,那么下载一般的文件是个破损文件(无效)。如何处理,请教,谢谢!

解决方案 »

  1.   

    呵呵,回答一点和大家不一样的思路吧...
    把打开程序做成一个控制台程序,
    控制台程序每次启动后读取程序版本,根据相应的版本读取相应的主程序...
    主程序呢,可以是不同版本的DLL,或是EXE,随自己喜好。
    更新的时候呢,就把每次更新的文件放在一个更新文件夹里。更新过程没有出错呢,就更新一下程序版本。出错了就不更新,依然打开当前旧版本。
    打开程序(控制台程序)如果打开当前出错,可以根据版本列表,继续打开上一个版本的程序...ok,这样可以保证程序依然运行正常...而就版本依然可以用更新来获得最新版本...
    下载完成时检查文件大小(严格的话可以检查md5码)如成功则替换对于更新的过程呢,(可以同时启动控制台程序来对更新失败时的获取控制权),下载完成时检查文件大小,版本,(如上面所说严格的话可以检查md5码)如成功则替换,并更新版本列表,更新完毕再枪毙掉老版本程序,打开新程序......整个工程就OK了...
      

  2.   

    File FileInfo 还有个路径的类(不会拼写了...)
    使用这几个类就可以了。
      

  3.   

    使用file类 网上搜搜新建目录与复制目录下文件的代码 很多的
      

  4.   

    但是就是具体怎么操作文件,移动文件这些不会,没玩过
    System.IO.File.Copy  
    File.Move .....
      

  5.   

    这个似乎不用自己写吧!用ClickOnce试试,直接可以在应用程序的发布项中配置。
      

  6.   


    额? 不是要用到传说中的System.IO 吗?
      

  7.   

    File.Copy 校验好以后再覆盖并把原来的删除
      

  8.   

    http://user.qzone.qq.com/66970551/blog/1258436131
    这个是我自己写的独立的自动更新程序,并且可以更新更新程序自身。仅供参考,要源码QQ:66970551。
      

  9.   

    我们这是通过ftp的方式自动下载覆盖来实现自动更新的。