AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Delphi Einfaches Online Update 2
Thema durchsuchen
Ansicht
Themen-Optionen

Einfaches Online Update 2

Ein Thema von AlexII · begonnen am 31. Aug 2009 · letzter Beitrag vom 24. Okt 2009
Antwort Antwort
Seite 2 von 2     12   
AlexII
Registriert seit: 28. Apr 2008
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.
Angehängte Dateien
Dateityp: zip demo_212.zip (205,4 KB, 37x aufgerufen)
 
GreenHorn3600
 
#11
  Alt 3. Sep 2009, 23:01
Zitat von generic:
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

Das GreenHorn
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#12
  Alt 4. Sep 2009, 05:01
Zitat von GreenHorn3600:
weshalb DAS Verzeichnis des Users? Das verstehe ich nicht ganz
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 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?

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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
StevenArt
 
#13
  Alt 24. Okt 2009, 10:58
Also ich kann nichmal des DemoProgramm ausführen... Da kommt sofort ne Trojaner meldung und des Programm wird gelöscht ....
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

 
Delphi 2009 Professional
 
#14
  Alt 24. Okt 2009, 11:36
Liegt an der generischen Erkennung, da wohl irgendwelche Internetfunktionen verwendet werden, und da scheint der Virenscanner anzuschlagen.
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#15
  Alt 24. Okt 2009, 11:49
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 ).

Zum Updater:
Gibt es eigentlich irgendwann eine neue Version mit mehr Funktionen?
Sebastian Jänicke
  Mit Zitat antworten Zitat
24. Okt 2009, 12:40
Dieses Thema wurde von "fkerber" von "Tutorials und Kurse" nach "Open-Source" verschoben.
Das passt hier wohl etwas besser
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
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