AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TMSWebUpdate - eine neue WebUpdate-Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

TMSWebUpdate - eine neue WebUpdate-Komponente

Ein Thema von Marco Steinebach · begonnen am 27. Feb 2008 · letzter Beitrag vom 11. Aug 2013
Antwort Antwort
Seite 6 von 16   « Erste     456 78     Letzte »    
Marco Steinebach
Registriert seit: 4. Aug 2006
Hallo Listers,
vor gut einer Woche hatte ich entgültig die Nase voll. Ich suchte eine Komponente für ein automatisches WebUpdate, Internet-Update, ganz wie ihr wollt.
Entweder es gab lauter teures Zeug, oder Freeware, die zwar gut, aber meist recht wenig anpassbar war, dann noch ein paar Schnipsel hier, ein Textchen da, ein Code-Teilchen wo anders....
Also gut, selber schreiben...
Und hier ist das Ergebnis.

TMSWebUpdate ist ganz sicher nicht neu, aber
- Freeware mit Source
- Einfach zu integrieren
- Anpassbar, also keine Formulare die schon mit dabei sind
- Flexibel, was die Anzahl der runterzuladenden Dateien angeht
- Flexibel beim format der Steuerdatei auf dem Server.
- Nicht erst ab Delphi 2006 enterprise lauffähig.
- Auf Indy basierend, also geht ab Delphi 5.


Webupdate schaut auf einem Server in einer Infodatei nach, ob eine neuere Version, als die aktuelle, vorhanden ist. Falls ja, können eine, oder mehrere Dateien, heruntergeladen, und ggf. eine davon als Update ausgeführt werden.

Dazu einfach die Komponente auf die form.
Die zwei eigenschaften
UpdateURL und IniName müssen natürlich ausgefüllt werden.
UpdateUrl ist die Adresse zur ini-datei also z.B.
www.meine-seite.de/Software
(http und / am ende werden automatisch ergänzt)
IniName ist der Name der Datei, in der die Infos über ein evtl. Update stehen, also beispielsweise
MeinProg_Update.html

Und MeinProg_Update.html könnte dann ungefähr so aussehen:
[Version]
Major=1
Minor=0
Release=0
Build=99

[File001]
Name=MeinProg_Update.exe
Start=1

[File002]
name=EinSound.wav
Path=sounds

[New]
Ein Fehler beim entgültigen löschen von Dateien wurde beseitigt.

Mehrere kleine Sachen sind jetzt leider kaput. Ich bin noch dran!
...

Alles was nach dem Schlüsselwort
[New]
steht, wird gnadenlos als WhatsNew angezeigt, dann zu finden in der WhatsNewListe der Komponente.

Ach ja, die Anweisung zur Prüfung heißt
CheckForUpdates.
Das war’s schon, und 6 Ereignisse
OnUpdatefound
OnNoUpdateFound
OnDownloadProgress
OnDownloadComplete
OnNextFile und
OnError
Gibt’s natürlich auch noch.

So. und nun wünsche ich viel spaß beim ausprobieren, testen, einsetzen, was auch immer. Ich würde mich über verbesserungsvorschläge, wünsche, anregungen, kritik, besonders über Lob, natürlich sehr freuen. Wenn bedarf ist, können wir auch gerne ein Projekt daraus machen.

Viele Grüße
Marco
Angehängte Dateien
Dateityp: zip tmswebupdate_v1.10.1_174.zip (24,9 KB, 799x aufgerufen)
 
Benutzerbild von fylo
fylo

 
Delphi 7 Personal
 
#51
  Alt 29. Jun 2008, 11:29
Zitat von Marco Steinebach:
Eine Frage noch:
Ist bei dir der SourcePath mit im Suchpfad von Delphi angegeben?
In welchem Verzeichnis liegt bei dir die IdCompilerDefines.inc?
Hallo Marco,

ich nutze die Subversion-Version von Indy 10. Bei dieser ist die Datei IdCompilerDefines.inc in den Unterverzeichnissen Core, System und Protocols enthalten. Diese drei Verzeichnisse sind bei mir in meinem Delphi 7 auch im Suchpfad eingetragen. Ich weiß aber nicht mehr, ob dass das Indy-Setup gemacht hat oder ob ich es selber gemacht hab
  Mit Zitat antworten Zitat
Svenkan

 
Delphi 7 Enterprise
 
#52
  Alt 1. Jul 2008, 14:48
Hallo Marco,

nach anfänglichen Problemen funktioniert nun auch bei mir alles wunderbar!
Wie wäre es aber noch mit einer Möglichkeit, dass bspw. in ein Edit-Feld eintragen kann, welche Dateien bereits heruntergeladen wurden? Oder irgendwie anders kenntlich machne, dass der Download noch läuft?
Sven Kannenberg
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#53
  Alt 1. Jul 2008, 17:29
Hallo Listers,
Es gibt, mal wieder, ‚ne neue Version:

Neuerungen in TWebUpdate V1.10.0 vom 01.07.2008:
Als erstes möchte ich mich für das kommende im voraus entschuldigen. All diejenigen, die TwebUpdate bereits eingebunden haben, müssen nämlich ein paar Zeilen code ändern, denn:
TWebUpdate, jedenfalls der Code und die Info-Datei, sind ab sofort in englisch. Die englische Doku läßt noch ein wenig auf sich warten.
Aber keine Angst, es wird nicht wieder deutsch, also wer jetzt ändert, braucht das nicht nochmal machen.
Das heißt: die eigenschaften bleiben gleich, SucheNachUpdates ist zu CheckForUpdates geworden, und die ereignisse entsprechen allesamt dem Standard.

Als weiteres gibt es eine Fehlerbehandlung (OnError), die verschiedene Fehlercodes interprätieren kann. Bitte auch das Demo und TwebUpdate.pas hierzu anschauen.

Ein herzliches Dankeschön an DiamondBack2007 für die Erstellung eines Zählers, der es ermöglicht, die Größe aller herunterzuladenden Dateien zu bestimmen.

Auf die anderen Vorschläge gehe ich gesondert ein, kann ein, zwei Tage dauern.
Das Demo wird auch nochmal erweitert, – damit es ein bißchen aussagekräftiger wird.

Viel Spaß mit der neuen Version und immer her mit Ideen, Lob, Kritik und sowas!

Einen schönen Abend!
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
shmia

 
Delphi 5 Professional
 
#54
  Alt 1. Jul 2008, 18:41
Hier sind bestimmt noch Units drin, die nicht gebraucht werden (z.B. Graphics, Controls)
Delphi-Quellcode:
unit WebUpdate;
interface
{$i WebUpdate.inc}
// Diverse Compilerschalter.
// bitte dringend überprüfen, ob diese euren Anforderungen gerecht werden.,
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Und noch ne Idee:
Man sollte die Update-Komponente vom Downloader trennen.
Soll heisen, es wäre gut, wenn man Indy ganz einfach durch etwas anderes austauschen könnte.
Der Downloader hat ja nicht anderes zu tun, als eine URL herunterzuladen und in einer best. Datei abzulegen.
Dabei soll er aber nach Möglichkeit OnProgress Event unterstützen, damit man ggf. eine ProgressBar ansteuern kann.
Delphi-Quellcode:
TDownloader = class(TObject)
public
   procedure DownloadURL(const URL, DestFilename : string); virtual;
   property OnProgress: TProgressEvent;
end;
Davon könnte man konkrete Klassen ableiten: TIndy9Downloader, TIndy10Downloader und TSimpleDownloader.
TSimpleDownloader benötigt kein Indy, sondern verwendet die Funktion URLDownloadToFile aus Unit UrlMon.
Dafür kann der TSimpleDownloader keine ProgressEvents erzeugen; aber das kann man verschmerzen.
Wenn ein Downloader eine URL nicht runterladen konnte, dann wirft er eine Exception.
Andreas
  Mit Zitat antworten Zitat
Svenkan

 
Delphi 7 Enterprise
 
#55
  Alt 1. Jul 2008, 19:28
*** Vorherigen Satz bitte vergessen (falls gelesen)! Hab meine INI nicht bearbeitet. ***

Ich wollte mal gerne wissen, an welcher Stelle ich 'AllFileSize' anwenden kann. Denn bisher bekomme ich (Prozedur 'UpdateFound') nur eine 0 ausgegeben.
Sven Kannenberg
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#56
  Alt 1. Jul 2008, 19:34
Zitat von Svenkan:
Also ich habe mir grad das Update installiert, allerdings funktioniert der Download nun nicht mehr.
Sobald ich den Download des Updates bestätige, bekomme ich einen Zugriffsfehler.
Eine Exception oder wie?
Läßt du das Proggi unter der IDE laufen, so daß die Delphi-Exceptions ausgelöst werden?


Zitat von Svenkan:
Desweiteren wollte ich mal gerne wissen, an welcher Stelle ich 'AllFileSize' anwenden kann. Denn bisher bekomme ich (Prozedur 'UpdateFound') nur eine 0 ausgegeben.
AllFileSize ist dafür gedacht, die ProgressBar vernünftit berechnen zu können. Wenn eine neue Programmversion gefundne wurde, also bevor DownloadStart loslegt, ist die Eigenschaft AllFileSize mit der Gesamtgröße aller herunterzuladender Dateien gefüllt.
Schau dir mal die prograssbar im Demoprogramm an.
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Svenkan

 
Delphi 7 Enterprise
 
#57
  Alt 1. Jul 2008, 19:42
Zitat von Marco Steinebach:
Zitat von Svenkan:
Also ich habe mir grad das Update installiert, allerdings funktioniert der Download nun nicht mehr.
Sobald ich den Download des Updates bestätige, bekomme ich einen Zugriffsfehler.
Eine Exception oder wie?
Läßt du das Proggi unter der IDE laufen, so daß die Delphi-Exceptions ausgelöst werden?
Siehe Post-Edit


Zitat von Marco Steinebach:
Zitat von Svenkan:
Desweiteren wollte ich mal gerne wissen, an welcher Stelle ich 'AllFileSize' anwenden kann. Denn bisher bekomme ich (Prozedur 'UpdateFound') nur eine 0 ausgegeben.
AllFileSize ist dafür gedacht, die ProgressBar vernünftit berechnen zu können. Wenn eine neue Programmversion gefundne wurde, also bevor DownloadStart loslegt, ist die Eigenschaft AllFileSize mit der Gesamtgröße aller herunterzuladender Dateien gefüllt.
Schau dir mal die prograssbar im Demoprogramm an.
Dankeschön! Funktioniert wunderbar!

Kann man eigtl. 2 Dateien nach dem Update starten lassen? (z.B. Programm und Readme)
Ich habe mal testweise bei zweien das Attribut 'Start' auf '1' gesetzt, allerdings wird nur die erste geöffnet.
Sven Kannenberg
  Mit Zitat antworten Zitat
Pif
 
#58
  Alt 1. Jul 2008, 22:32
Wenn ich ein neues PAckage mache und die 3 units einfüge und es dann installieren will bekomme ich nen error:

requires
vclx,
vcl,
rtl;

was muss ich da machen? wo bekomme ich diese dateien her?

MfG Pif
  Mit Zitat antworten Zitat
Svenkan

 
Delphi 7 Enterprise
 
#59
  Alt 2. Jul 2008, 00:03
/edit: Sry, hab mich verlesen. Ich sollte jetzt echt mal ins Bett gehen. ^^
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#60
  Alt 3. Jul 2008, 03:28
Hey,

also erst mal finde ich es super, dass jetzt alles in Englisch ist
Ich bin gerade dabei einen UpdateCreator zu erstellen, wenn der fertig, kann ich den ja hier mal posten.
Als Anregungen. Du könntest noch implementieren, dass auf dem Server Ordner mit den einzelnen Dateien liegen. Diese würden dann genauso heißen wie später nach dem Download. Du würdest also praktisch die gesamte Ordnerstruktur auch auf dem Server haben. Das schafft Ordnung.

Und wenn du Lust hast, könntest du auch noch eine Backupmöglichkeit einbauen. Bei einem neuen Update könntest du die zu ersetzenden Dateien einfach in einen Backupordner kopieren und bei Bedarf wiederherstellen.

gruß
Fabian E.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 16   « Erste     456 78     Letzte »    


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 04:40 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