Delphi-PRAXiS

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

GreenHorn3600 3. Sep 2009 23:01

Re: Einfaches Online Update 2
 
Zitat:

Zitat von generic
Zitat:

Zitat von inherited
nimmt man ein temporäres Verzeichnis.

Eigentlich nimmt man DAS Temp.Verzeichnis des Users.

Hallo Generic,

weshalb DAS Verzeichnis des Users? Das verstehe ich nicht ganz :stupid:

Das GreenHorn

jaenicke 4. Sep 2009 05:01

Re: Einfaches Online Update 2
 
Zitat:

Zitat von GreenHorn3600
weshalb DAS Verzeichnis des Users? Das verstehe ich nicht ganz :stupid:

Es gibt ja nur ein Temp-Verzeichnis des Benutzers und welches das ist, teilt einem Windows ja freundlicherweise mit.
Damit dort keine Dateileichen zurückbleiben können, benutze ich dort immer selbstlöschende temporäre Dateien.

Zitat:

Zitat von AlexII
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.

Und wie funktioniert das dann? Es wird ein Setup heruntergeladen und dann ausgeführt?
Oder können auch die Dateien selbst direkt aktualisiert werden?

Auf jeden Fall solltest du den Download vielleicht selbst übernehmen und nicht einfach ShellExecute aufrufen. Ich bin nicht so sicher, dass das immer funktionieren wird, was wenn die Verknüpfung mit dem Browser oder der Download im Browser es nicht macht wie es soll? :gruebel:

Mein kleiner embedded Updater funktioniert soweit ja bereits, wenn auch im Moment nur ab Vista, aber unter älteren Systemen muss ich nur noch die Rechte richtig umsetzen. Dazu komme ich erst am Wochenende, sprich ab heute Abend vielleicht.

StevenArt 24. Okt 2009 10:58

Re: Einfaches Online Update 2
 
Also ich kann nichmal des DemoProgramm ausführen... Da kommt sofort ne Trojaner meldung und des Programm wird gelöscht ....

Die Muhkuh 24. Okt 2009 11:36

Re: Einfaches Online Update 2
 
Liegt an der generischen Erkennung, da wohl irgendwelche Internetfunktionen verwendet werden, und da scheint der Virenscanner anzuschlagen.

jaenicke 24. Okt 2009 11:49

Re: Einfaches Online Update 2
 
Sieht man ja auch schon dran welche Programme das als Virus erkennen, ist doch eh nur Antivir und sowas. Darauf braucht man ja eh nicht mehr zu achten, das erkennt ja fast alles als Virus (und nen echten hat es wiederum bei einem Bekannten nicht erkannt :wall: ).

Zum Updater:
Gibt es eigentlich irgendwann eine neue Version mit mehr Funktionen?

DP-Maintenance 24. Okt 2009 12:40

DP-Maintenance
 
Dieses Thema wurde von "fkerber" von "Tutorials und Kurse" nach "Open-Source" verschoben.
Das passt hier wohl etwas besser ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.

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