Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Einfaches Online Update (https://www.delphipraxis.net/107541-einfaches-online-update.html)

Larsi 29. Jan 2008 15:14


Einfaches Online Update
 
Hi,
bitte nicht so hart mit mir sein, denn das ist mein erster Beitrag für die Code-Lib! :)
Mithilfe dieser Anleitung ist es möglich ein kleines aber feines Online- Update zu realisieren!
Der Grundgedanke ist, dass man eine Textdatei auf einem Server downloadet, diese ausliest und dann prüft ob ein Update notwendig ist und gegebenfalls downloaden!
Dies sollte in gut einer halben Stunde zu schaffen sein. Kein wirklich großer Aufstand, da eine Update- Funktion ja gar nicht so schwer sein muss :)
Anleitung:
Zuerst downloadet man sich ja die Textdatei:
Delphi-Quellcode:
uses
  URLMon;

procedure TForm1.Button1Click(Sender: TObject);
var
  Datei,Ziel:PChar;
begin
  try
    Datei := 'http://www.DieSeite/DieDatei.txr';
    Ziel := 'C:\Windows\Desktop\DieDatei.txt';
    UrlDownloadToFile(nil, Datei, Ziel, 0, nil);
     
  except
ShowMessage('Ein Fehler ist aufgetreten! Programm wird beendet!');
Form1.Close;
  end;
end;
end;
Dies kann man entweder so wie gerade beschrieben oder halt über die Indys tun!
Bei "Datei" die Textdatei auf deinem Server eintragen, bei "Ziel" das Ziel^^
Ich würde euch empfehlen, die Datei im Ordner deiner Anwendung zu downloaden. Und vergesst nicht, sie am Schluss wieder zu löschen, den sonst entsteht Datenmüll:
Delphi-Quellcode:
DeleteFile('Pfad der Textdatei.txt');
Die Textdatei würde ich wie folgt aufbauen: GANZ WICHTIG: Die Beschrieung darf nur eine Zeile in Anspruch nehmen, da wir ja gleich die einzelnen Zeilen auslesen, aber auch eine Zeile kann ja ziemlich viele Buchstaben enthalten...!
Zur Erklärung:
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

Dann noch in eurem Programm die Textdatei öffnen:
Delphi-Quellcode:
var
List: TStrings;
begin
List := TStringList.Create;
try
  List.LoadFromFile('C:\UpdateDatei.txt');
  if List.Count>0 then
    Edit1.Text:=List[0];
finally
  List.Free;
end;
end;
Das Edit1.text := List[0] list die erste Zeile aus wenn ihr da [1] reinschreibst halt die 2. Zeile und immer so weiter.

Wenn ihr das so für alle vier Zeilen gemacht hast, steht im ersten Edit die Version im 2. Edit die Version mi nem Punkt in der Mitte zur Übersicht und so weiter...
Dann könnt ihr ja ein Label auf euer Form ziehen in dem z.B.: 31(für Version 3.1) drinnen steht und das vergleichst du dann mit Edit1.text:
Die Überprüfung ob ein Update von Nöten ist (in diesem Fall nämlich nicht!):
Delphi-Quellcode:
if StrToInt(Edit1.text) > StrToInt(Label1.caption) then
ShowMessage('Es ist ein Update möglich!')
else
ShowMessage('Es ist kein Update nötig! Die Software ist auf dem neusten Stand'!);

Wenn ein Update möglich ist dann macht ihr wieder die Download Procedur mit dem Link aus deiner gedownloadeten Textdatei!
Was ich euch noch empfehlen kann ist ein Vorschau- Fenster wo noch Beschreibung und so drinnen steht:
Gehen wir mal davon aus, das das Vorschau Form den Namen Form2 :) trägt und sich auf diesem ein paar Labels und ein Memo- Feld befinden, dann müsste man ja nurnoch mit der Textfeld- Laden Procedur die einzelnen Zeilen auslesen und Fertig! Das mit dem Memo würde ich empfehlen für die Beschreibung, da diese in einem einzigen Label wohl kaum Platz finden könnte!
Außerdem sollte die alte Version des Programmes dann selbst gelöscht werden nach Nachfrage!
Auch eine ProgressBar für dein Fortschritt kann man einbauen, ist aber bei kleineren Dateien sinnlos:
Dafür wurde von BullsEye ein Thread aufgemacht, der euch bestimmt weiterhelfen kann.


Solltest ihr noch Fragen haben, stellt sie einfach!
Hoffe ich konnte euch damit helfen!

Falls Ihr euch das Update und so mal angucken wollt, dann downloadet doch einfach meinen Passwort Saver, denn dort ist GENAUS DAS VERFAHREN drinnen!
MFG Lars Wiltfang

[edit=Matze]Dieses Thema reicht nicht ganz aus, um in die Code-Library aufgenommen zu werden. MfG, Matze[/edit]

BullsEye 29. Jan 2008 19:41

Re: Einfaches Online Update
 
Ich kann nur bestätigen, das es funktioniert hab damit selbst nen Update Programm geschrieben bzw bin noch dabei.
Allerdings hab ich das 'Problem' mit zwei Textdatein gelöst. Und zwar eine wo die Nummer drin steht, damit sie verglichen wird und die andere, wo ich die Änderungen(wie bereits erwähnt) in einem Memofeld ausgeben lasse.

Es ist noch nicht ganz fertig aber so die Grundfunktionen (Runterladen der Textdateien, prüfen und runterladen der Datei selbst) gehen soweit fehlen nur noch ein paar "Schönheitsfehler"

Larsi 29. Jan 2008 19:52

Re: Einfaches Online Update
 
warum das problem. es gibt doch mit der einen keine oder??? :)

BullsEye 29. Jan 2008 20:04

Re: Einfaches Online Update
 
Mit das "Problem" meinte ich des Update an sich selbst ;)
Weiß nicht, ich fande es so irgendwie besser.^^
EDIT: Vllt kannst du deinen Code ja noch mit dem Löschen der Datei o.ä. erweitern ;)

Larsi 31. Jan 2008 12:38

Re: Einfaches Online Update
 
gut dann setzte ich mich jez gleich noch mal dran und füg noch n bisschen hinzu :) aber irgendwie kapier ich nicht warum du gleich 2 textdateien downloaden willst???

Die Muhkuh 31. Jan 2008 13:28

Re: Einfaches Online Update
 
Wie sieht das dann aus, wenn Du mehr als eine Datei updaten musst? ;)

Pro Datei eine Textdatei?

Larsi 31. Jan 2008 13:35

Re: Einfaches Online Update
 
ja dann fängt das einfach inder 5. zeile von vorne an dachte ich :)

Die Muhkuh 31. Jan 2008 13:37

Re: Einfaches Online Update
 
Dachtest Du, aber funktioniert ja nicht so, zumindest nicht mit Deinem Ursprungs-Code.

Larsi 31. Jan 2008 13:48

Re: Einfaches Online Update
 
kla funktioniert das :) hab doch beschrieben das wie man jede einzelne zeile ausliest und dann is das doch wohl kla oder? außerdem habe ich es ja auch EINFACHES ONLINE UPDATE genannt! Die meißten delphi anfänger wollen sowiso nicht mehr :) und wer mehr daten vergleichen will kann sich das bestimmt daraus entschließen :)

Flips 31. Jan 2008 13:49

Re: Einfaches Online Update
 
Und wer mehr Dateien auf einmal Updaten will kann dann auf XML / INI aufbauen ;-)

Die Muhkuh 31. Jan 2008 13:51

Re: Einfaches Online Update
 
Zitat:

Zitat von Larsi
kla funktioniert das :)

Wie gesagt, mit Deinem Code, den man oben hat, funktioniert es nicht ohne Anpassung. ;)

Phillip, glaub mir, ich hab schon das eine oder andere Online-Update geschrieben, dass mehrere Dateien etc. pp. aktualisieren kann. ;)

Es sollte eigentlich eine kleine Anregung für Lars sein. Auch wenn es ein einfaches Update ist, hat man schnell mal mehr als eine Datei zum Updaten. ;)

Flips 31. Jan 2008 13:55

Re: Einfaches Online Update
 
Ja klar ich versteh schon was du meinst.
Ich sag ja nur das ICH es mit XML lösen würde.;-)
Oder von mir aus auch CSV, was dem oben geposteten Beispiel vll ein klein wenig näher kommt.

Neutral General 31. Jan 2008 14:02

Re: Einfaches Online Update
 
Hi Lars,

Ich denke mal es ist ja in Ordnung wenn du diese Methode benutzt für deine Programme. Da sagt niemand was gegen aber es ist eben so das du noch nicht viel Erfahrung mit Delphi hast. Ich will nicht sagen das ich ein super toller Programmierer bin aber ich wusste damals als Anfänger das mein Code nicht gut war. Tut mir Leid wenn ich das so offen sage aber das hier ist es absolut nicht wert in die CodeLib aufgenommen zu werden.
Ich würde nicht mal behaupten das ich es sooo viel besser machen würde aber deswegen stelle ich es auch nicht hier rein.

Das ganze soll dich jetzt nicht entmutigen aber ich schlage vor du übst noch ein bisschen, machst etwas mehr Erfahrungen mit Delphi. Denn es bringt absolut nichts wenn jemand Tutorials oder CodeLib Einträge verfasst von Dingen von denen er keine Ahnung hat. :?

Gruß
Neutral General

BullsEye 31. Jan 2008 14:11

Re: Einfaches Online Update
 
Vllt mag es bessere Lösungen geben. Aber solange keiner eine soviel besser Lösung preis gibt o.ä. finde ich ist es das durchaus Wert, vor allem für Leute die keine Ahnung davon haben aber so etwas brauchen. !!!!

Neutral General 31. Jan 2008 14:13

Re: Einfaches Online Update
 
Zitat:

Zitat von BullsEye
Vllt mag es bessere Lösungen geben. Aber solange keiner eine soviel besser Lösung preis gibt o.ä. finde ich ist es das durchaus Wert, vor allem für Leute die keine Ahnung davon haben aber so etwas brauchen. !!!!

Wenn Leute soetwas brauchen dann können sie es ja versuchen und gegebenenfalls in der DP hier nachfragen. Aber ich denke die Einträge für die CodeLib und den Tutorial-Bereich sollten doch schon eine gewisse Qualität besitzen.

Aurelius 31. Jan 2008 14:25

Re: Einfaches Online Update
 
Für die CodeLib ist eine solche einfache Version wirklich nichts. Aber als Tutorial (dazu noch überarbeitet) wäre es doch gut geeignet.

DeddyH 31. Jan 2008 14:50

Re: Einfaches Online Update
 
Zitat:

Zitat von xX0815Xx
Für die CodeLib ist eine solche einfache Version wirklich nichts. Aber als Tutorial (dazu noch überarbeitet) wäre es doch gut geeignet.

Du sprichst mir aus der Seele.

Larsi 31. Jan 2008 14:52

Re: Einfaches Online Update
 
also die dp is doch immer wieder ermutigend :(
ich setzte mich nur für andere user die das gleiche problem haben wie bullseye fast ne dreiviertelstunde hin und dann bekommt man hier von den anderen so ermutigende beiträge wie dein beitrag ist wirklich zu schlecht oder so...
bei meinem password saver (der hat auch son online update :) ) gab es sofort 2 leute die mich fragten wie sie so ein online update hinbekommen also gibt es wohl doch n paar leute die damit was anfangen könnten aber wenn es für euch nichts wert ist dann vergisst es :(


MFG Lars Wiltfang


Edit: Mir ist grad aufgefallen dass es ja echt die sparte tutorials und kurse gibt (wusste ich gar nicht :) ), dann stell ich das da mal rein oder muss man das da auch noch vorschlagen? :)

DeddyH 31. Jan 2008 14:54

Re: Einfaches Online Update
 
Da musst Du nichts vorschlagen, sondern kannst es einfach dort posten ;)

[edit] Oder frag doch lieber einen OP, ob er den Thread für Dich verschiebt. [/edit]

Die Muhkuh 31. Jan 2008 14:54

Re: Einfaches Online Update
 
Eine Dreiviertel Stunde? Sorry, aber das da oben ist echt ein Werk von maximal 15 Minuten.

Natürlich kannst Du es reinstellen, aber dann überarbeite es nochmal und schreib es ein bisschen besser und mehr Erklärungen. Dann könnte doch noch etwas draus werden.

Larsi 31. Jan 2008 14:56

Re: Einfaches Online Update
 
okay ne dreiviertelstunde war vielleicht n bisschen übertrieben :) :) :)

AlexII 7. Jul 2008 21:24

Re: Einfaches Online Update
 
Hallo

Wollte fragen ist dieses Tutorial aktuell oder gibt's irgendwo eine bessere, überarbeitet Version?

BullsEye 7. Jul 2008 21:46

Re: Einfaches Online Update
 
Sicher wirst du irgendwie irgendwo was besseres finden!
Aber hiermit läufst du eigentlich recht gut, wenn du noch nicht so viel Erfahrung damit hast bzw dir extra die Mphe machen willst nen neues Programm zu schreiben ;)

AlexII 7. Jul 2008 22:06

Re: Einfaches Online Update
 
Ne ich meine in diesem Forum eine neue Version, es wurde ja irgendwas über Überarbeiten geredet, deswegen dachte ich....

AlexII 7. Jul 2008 23:31

Re: Einfaches Online Update
 
Kann mir vllt jemand sagen wieso in dem ersten Code die Fehlerbehandlungsroutine nicht abgearbeitet wird? Hab absichtlich die txt Datei auf dem Server falsch benannt, sie wurde dementsprechend nicht runtergeladen und das Programm war still, die Fehlermeldung die in
Delphi-Quellcode:
Except
steht kam nicht. :gruebel:

Larsi 8. Jul 2008 11:05

Re: Einfaches Online Update
 
Kann ich dir leider nicht sagen aber ansonsten kannst du ja auch überprüfen ob die Datei heruntergeladen wurde:

Delphi-Quellcode:
if FileExists('C:\Update.txt') then
else begin
ShowMessage('Download- Fehler. Programm wird beendet!');
Form1.Close;
end;
Hoffe das hilft dir!


MFG Lars Wilfang

littleDave 8. Jul 2008 11:31

Re: Einfaches Online Update
 
Aber ich kann dir sagen, warum die Exception nicht ausgelöst wird :mrgreen:

Windows API-Funktionen werfen bei Fehlern keine Exception! Daher haben die meisten Funktionen einen Return-Wert. Die Funktion URLDownloadToFile() kann laut MSDN folgende Werte zurückgeben
Code:
S_OK                   The download started successfully.
E_OUTOFMEMORY           The buffer length is invalid, or there is insufficient memory to complete the operation.
INET_E_DOWNLOAD_FAILURE The specified resource or callback interface was invalid.
Du könntest die Zeile so umschreiben:
Delphi-Quellcode:
if UrlDownloadToFile(nil, Datei, Ziel, 0, nil) <> S_OK then
  raise Exception.Create('UrlDownloadToFile failed!');

Poseidon 11. Jul 2008 13:46

Re: Einfaches Online Update
 
Super Tutorial :thumb:
Werd ich gleich morgen ausprobieren.

gmc616 11. Jul 2008 14:10

Re: Einfaches Online Update
 
Zitat:

Zitat von Larsi
Ich würde euch empfehlen, die Datei im Ordner deiner Anwendung zu downloaden.

Was sagt den VISTA dazu? Kanns nicht probieren, hab kein VISTA.

Und wie updatest du das Online-Update?

Larsi 11. Jul 2008 14:30

Re: Einfaches Online Update
 
Zitat:

Zitat von gmc616
Zitat:

Zitat von Larsi
Ich würde euch empfehlen, die Datei im Ordner deiner Anwendung zu downloaden.

Was sagt den VISTA dazu? Kanns nicht probieren, hab kein VISTA.

Und wie updatest du das Online-Update?


Was meinst du mit dem letzten Satz?

SaFu 11. Jul 2008 14:32

Re: Einfaches Online Update
 
Mit Vista funktioniert das ganze auch habe es bei mir eingebaut und funktioniert wunderbar

DeddyH 11. Jul 2008 14:32

Re: Einfaches Online Update
 
Auch bei aktiver UAC?

Die Muhkuh 11. Jul 2008 14:33

Re: Einfaches Online Update
 
Larsi: Er meinte, wie Du das Programm updatest, dass das Online-Update macht. :zwinker:

SaFu 11. Jul 2008 14:44

Re: Einfaches Online Update
 
Naja da ich bei mir die UAC ausgeschaltet habe kann ich das nicht beantworten, aber ich denke in einem Öffentlichen Ordner geht das bestimmt.

Das Programm Date ich bei mir dann so up, das ich das Programm nach dem Updaten schließe ein anderes vorher starte, das dafür verantwortlich ist,das neue Update von dem Updateordner in Ordner zu Kopieren wo das alte leigt und das alte wird vorher gelöscht.

Larsi 11. Jul 2008 15:36

Re: Einfaches Online Update
 
Zitat:

Zitat von Die Muhkuh
Larsi: Er meinte, wie Du das Programm updatest, dass das Online-Update macht. :zwinker:

Das muss man doch nicht updaten.

Die Muhkuh 11. Jul 2008 15:39

Re: Einfaches Online Update
 
Es geht drum, wenn Du es mal updaten musst. URL ist ne andere, neue Oberfläche, neue Lokalisierung, whatever.

Poseidon 11. Jul 2008 16:45

Re: Einfaches Online Update
 
Also ich würde das somachen:

Es ird die ubdate seite mit shellexecute geöffnet, die URL ist www.updatevonmeinemprogramm.zip wen die seite geöffnet wird
startet der download automatisch. Man kann in das Update programm in oncreate noch reinschreiben, wenn die alte version noch da ist (C:\Programme\Delphiprogramm) es gelöscht wird wenn es nicht da ist passiert nichts. Denn Code hab ich mir mal gespart, ihr wisst ja alle hoffentlich was ich meine. Mit Delphi, Zip und HTML leicht zu realisieren.

gmc616 11. Jul 2008 16:59

Re: Einfaches Online Update
 
Wenn ich mit shellexecute die URL www.updatevonmeinemprogramm.zip rufe, öffnet sich mein Browser und fragt mich wo ich die Datei hin speichern möchte. Dann lädt er das Zip runter und da bleibt es liegen.

Was hat das mit einem Online-Update zu tun? Dann könnte ich mir ja gleich die neue Programmversion downloaden und per Hand dahin kopieren wo sie hin soll.

Was hat eigentlich der Test unter VISTA mit aktiven UAC und "Datei im Ordner deiner Anwendung ... downloaden" ergeben?
Tät mich mal interessieren.

Poseidon 11. Jul 2008 17:03

Re: Einfaches Online Update
 
Ok, mach auch www.updatevonmeinemprogramm.zip einfach www.updatevonmeinemprogramm.exe und das Installationsprogramm (Inno setup oder was ihr auch verwendet) startet.

gmc616 11. Jul 2008 17:07

Re: Einfaches Online Update
 
Dann liegt halt ne EXE irgendwo auf meinem Rechner rum.

Irgendwer muss die doch starten. Ich tu's nicht, da ich erwarte, dass das Online-Update das tut. :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr.
Seite 1 von 2  1 2      

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