Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Delphi Einfaches Online Update 2 (https://www.delphipraxis.net/139549-einfaches-online-update-2-a.html)

AlexII 31. Aug 2009 15:37


Einfaches Online Update 2
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nach dem ich sehr sehr lange nach einer Update Lösung für mein Programm gesucht habe und nichts vernünftiges gefunden hab, außer Einfaches Online Update, hab ich mich entschlossen auf dieser Basis ein modifiziertes Online Update 2 zu schreiben.

Und so funktioniert es: Vom Webserver wird eine Datei runtergeladen wo die Infos zu der neuen Version stehen, es wird verglichen, ob diese Version schon installiert ist und wenn nicht wird die neue zum Downloaden angeboten.

Hier der Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, URLMon, StdCtrls, ExtCtrls, ShellApi;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Timer2: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Version: Integer=200;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var Datei, Ziel: PChar;
begin
Timer1.Enabled:=False;
  try
    Datei := 'http://www.meineseite/Datei.txt';
    Ziel := 'C:\test\Datei.txt';
    UrlDownloadToFile(nil, Datei, Ziel, 0, nil);
  except
  end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
List: TStrings;
begin
Timer2.Enabled:=False;
if FileExists('C:\test\Datei.txt') then
begin
List := TStringList.Create;
try
  List.LoadFromFile('C:\test\Datei.txt');
  if List.Count>0 then
    if StrToInt(List[0]) > Version then
    if MessageDlg('Neue Version ' + List[1] + ' ist verfügbar!' + CHR(13) + CHR(13) +
    'Neu in dieser Version: ' + CHR(13) +
    List[3] + CHR(13) + CHR(13) +
    'Möchten Sie diese runterladen?', mtInformation, [mbYes, mbNo], 0) = mrYes then
    begin
    ShellExecute(Application.Handle, 'open', PChar(List[2]), nil, nil, SW_SHOWNORMAL);
    end else Timer2.Enabled:=False;
finally
  List.Free;
end;
end;
end;

end.
Die Datei.txt muss so aussehen:
1. Zeile := Die Version ohne einen Punkt in der Mitte damit man Sie mit < bzw. > dann später vergleichen kann
2. Zeile := Die Version so, wie Sie der User dann sehen wird um dann zu entscheiden ob er ein Update will oder nicht
3. Zeile := Die Datei, die gedownloadet werden soll
4. Zeile := Die Beschreibung warum ein Update gemacht werden soll bzw. die Update- Erneuerungen

Ein Beispiel:
Zitat:

230
2.3.0
http://meineseite.de/Prog.exe
Die Beschreibung warum ein Update gemacht werden soll..
Was sagt ihr dazu, bitte eure Meinung.

Larsi 3. Sep 2009 12:03

Re: Einfaches Online Update 2
 
Wo genau liegt jetzt der Unterschied zu meinem bescheidenem Online Update?

DeddyH 3. Sep 2009 12:12

Re: Einfaches Online Update 2
 
Zitat:

Delphi-Quellcode:
if List.Count>0 then

Weiter unten greifst Du aber auf List[3] zu. Vielleicht sollte man daher die Abfrage etwas ändern :zwinker:

Larsi 3. Sep 2009 12:21

Re: Einfaches Online Update 2
 
Ich oder er?

DeddyH 3. Sep 2009 12:23

Re: Einfaches Online Update 2
 
Wessen Quelltext steht denn da oben?

generic 3. Sep 2009 14:47

Re: Einfaches Online Update 2
 
von beiden etwas

DeddyH 3. Sep 2009 14:57

Re: Einfaches Online Update 2
 
Dann sollten auch beide einmal nachsehen :zwinker:

inherited 3. Sep 2009 15:08

Re: Einfaches Online Update 2
 
Außerdem speichert man nicht nach C:\Irgendwas hardgecodetes, für sowas nimmt man ein temporäres Verzeichnis.
Fehlerbehandlung fehlt auch

generic 3. Sep 2009 22:15

Re: Einfaches Online Update 2
 
Zitat:

Zitat von inherited
nimmt man ein temporäres Verzeichnis.

Eigentlich nimmt man DAS Temp.Verzeichnis des Users.

GreenHorn3600 3. Sep 2009 22:59

Re: Einfaches Online Update 2
 
hallo AlexII,

kannst du mir noch erklären, für was die zwei Timer benötigt werden? Ich blicke da nicht ganz durch :?:

Das GreenHorn


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz