我现在的做法是程序运行时,先看数据库中表a的字段是否等于写死在程序中的某个字符,如"V1.0版",每次我改了程序时,会先修改这个字符,如改为"V12.0版",再在数据库中把表a中字段的内容也改成一样的。用户在客户端运行程序时,如果是旧版本,就不能运行,就要自己去公共盘考下最新的系统把旧的覆盖才可以用。我看到许多系统都可以在客户端自动更新,而不用自己拷贝新程序,请问是如何做到的?可否提供一段代码?谢谢!

解决方案 »

  1.   

    发这么多贴,全回你!
    晕,你判断一下版本不一样后就copyfile('\\server\share\a.exe','.\',false);
    服务器做一个共享文件夹,把文件放在上面!
      

  2.   

    主程序和更新程序分开啊!
       主程序可以做成DLL,或干脆改成其他扩展名.也可以不改,看情况.
       每次首先运行更新程序,检查是否有更新,有的话就"拿"过来(COPY/SOCKET传输等等,根据传输通道的形式),更新结束或者没更新的话才去运行主程序.
      

  3.   

    我是用批处理文件做的:
    @echo off 
    @echo ********************************************************
    @echo *                                                      *
    @echo *  KCKDBMS                                             *
    @echo *  Copyright (C) KITZ CORPORATION All Rights Reserved  *
    @echo *                                            2007.cxy  *
    @echo ********************************************************
    @echo 正在更新,请稍候... ping 172.15.4.20 -n 10 >nullCOPY /y \\Kckpdc\公共\cxy\KCKDBMS_Beta\KCKDBMS.exe
    Start KCKDBMS.exe 每次主程序启动前检查数据库里的版本表里的版本号是否和主程序版本一致,
    如果不一致就运行批处理文件且退出主程序。
      

  4.   

    TauAutoUpgrader    auSoft.VersionNumber:=ReadVersion;
        auSoft.InfoFileURL:=ReadInfoFileURL(lDomainName);
        auSoft.CheckUpdate;
      

  5.   

    其实我是这样做的,更新程序可以设置定时检测是否有新版本出现,如果有,则下载最新版本,这个过程中,它先发消息(自定义的WINDOWS消息)给主程序,如果收到回应,并且回应的数据表明当前主程序不是新的版本,则回一个消息让主程序自动关闭,然后更新程序开始下载最新版程序,下载完毕后将旧的主程序复制到另一个BACKUP文件夹做为程序更新历史,然后再将刚刚下载的最新本程序覆盖原来的主程序,最后更新程序把新的主程序启动起来,再通知用户更新成功~~~~~~~~~~~~如此~~~~~~~~~~~~~~