我想做一个根据程序的版本号,自动升级程序的软件。准备ftp实现,从ftp服务器自动下载。那位大侠能提供一些相关资料,源代码更好。在这里提前谢谢了。我的信箱是:[email protected].

解决方案 »

  1.   

    程序的自动升级:
    Detect and Download a new version of (an own) application?
    uses 
      {...,}IniFiles, UrlMon,     type 
      TForm1 = class(TForm) 
        {...} 
      private 
        winsc: TiniFile; 
        old: Integer; 
        vernfo: TIniFile; 
      end; 
       
    implementation {$R *.dfm} function DownloadFile(Source, Dest: string): Boolean; 
      { Function for Downloading the file found on the net } 
    begin 
      try 
        Result := UrlDownloadToFile(nil, PChar(Source), PChar(Dest), 0, nil) = 0; 
      except 
        Result := False; 
      end; 
    end; function GetPathPath: string; 
      { Retrive app path } 
    begin 
      Result := ExtractFilePath(Application.ExeName); 
    end; procedure TForm1.DownLoadNewVersion1Click(Sender: TObject); 
    var 
      apath: string; 
      new: Integer; 
    begin 
      // This is the exact code from my application 
      apath           := GetPathPath; 
      Gauge1.Progress := 0; 
      StatusBar1.SimplePanel := True; 
      StatusBar1.SimpleText := 'Connecting to http://tsoft.home.ro'; 
      Gauge1.Progress := 20; 
      if DownloadFile('http://www.tsoft.home.ro/update.ini', PChar(apath) + '/update.ini') then 
      begin 
        Gauge1.Progress := 50; 
        StatusBAr1.SimplePanel := True; 
        StatusBar1.SimpleText := 'Checking for newer versions...'; 
        vernfo := TiniFile.Create(GetPathPath + '/update.ini'); 
        new    := vernfo.ReadInteger('version', 'wsc', 7); 
        vernfo.Free; 
        if (old = new) then 
        begin 
          StatusBar1.SimplePanel := True; 
          StatusBar1.SimpleText  := 'No new version detected'; 
          Gauge1.Progress        := 100; 
        end 
        else if DownloadFile('http://www.tsoft.home.ro/winsafe.exe', 
          PChar(apath) + '/winsafe.exe') then 
        begin 
          ShowMessage('Update succeseful'); 
          Gauge1.Progress := 100; 
          winsc           := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); 
          winsc.WriteInteger('wsc', 'vernfo', new); 
          winsc.Free; 
        end 
        else  
          MessageDlg('A new version has appeard but it requires a second install', 
            mtInformation, [mbOK], 0); 
      end 
      else 
      begin 
        StatusBar1.SimplePanel := True; 
        StatusBar1.SimpleText  := 'Failed to connect probably a internet problem'; 
        Gauge1.Progress        := 0; 
      end; 
    end; procedure TForm1.FormCreate(Sender: TObject); 
    begin 
      //App version 
      winsc := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); 
      try 
        old := winsc.ReadInteger('wsc', 'vernfo', 1); 
      finally 
        winsc.Free; 
      end; 
    end; end. {The concept is very simple u download a ini file from your website that contains 
    the version you compare it with the one from your computer and it downloads the 
    file if the versions are Not equal if you find any froblems write me.}
      

  2.   

    代码中已经有了DownLoadNewVersion1Click,自动到网上找啊
      

  3.   


    多个文件需要更新的话,最好建立一张文件更新的映射列表。
    注意多个关联文件的同步更新。
    不推荐采用INI文件,多文件时无法描述文件的层次关系。