软件网上自动升级问题!
像瑞星一样,让自己的软件可以网上自动升级,希望各位多多发言!

解决方案 »

  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.   

    可以去这里看一看,免费提供,绝对实用:
    http://www.aslike.net