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 5 von 16   « Erste     345 6715     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 Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#41
  Alt 25. Jun 2008, 12:37
Es wäre auch noch schön, wenn man eine Verzeichnisstruktur komplett updaten könnte, ohne alle einzelnen Dateien anzugeben.
Das würde die Arbeit bei vielen Dateien ernorm vereinfach.
Einfach in der Ini einen Ordner auf dem Webspace angeben, der dann komplett mit der Struktur geupdatet wird.
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#42
  Alt 25. Jun 2008, 12:40
Und ich glaube ich habe noch einen Bug gefunden.
Wenn ich den Neustart nach einem Update aktiviere, dann wird weder der WepUdateDateien-ordner gelöscht noch die Batsch datei.
Fabian E.
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#43
  Alt 25. Jun 2008, 17:07
Hi Assertor,
Zitat von Assertor:
Zitat von Marco Steinebach:
Ein zweiter Schalter
Indy10
ist dazu gekommen. Der Muß gesetzt werden, wenn Indy10 eingesetzt wird.
Tut mir leid, daß das jeder von Hand machen muß, aber ich hab absolut nicht rausfinden können, wie man's Programmseitig ermitteln kann.
{$IFDEF INDY100} Wird in IdGlobal.pas per IdCompilerDefines.inc gesetzt. Also einfach IdGlobal einbinden und per IFDEF prüfen.
Das hab ich auch gedacht, es funktioniert aber nicht.
I IdCompilers.inc wird bei mir
Indy90
definiert.
Aber mein Compiler meckert ...
Hier mal ein Auszug aus der Unit, wo's knallt:
Delphi-Quellcode:
uses
  classes, IdComponent, IdHTTP, IdGlobal;
type
  TOnWorkEvent = procedure(Sender: TThread; AWorkCount: Integer) of object;
  TDownloadThread = Class (TThread)
    private
      procedure InternalOnWork (Sender: TObject; AWorkMode: TWorkMode; {$IFDEF Indy90} const {$ENDIF} AWorkCount: Integer);
...
In Indy9 kommt hier vor dem aWorkCount ein const, in Indy10 ist das weggefallen. Also müßte, ..., es ja eigentlich klappen.
Irgend 'ne Idee, warum es das nicht tut?
Freundliche Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#44
  Alt 27. Jun 2008, 21:34
Zitat von Diamondback2007:
Allerdings vermisse ich sehr einen funktionierenden Fortschritt.
Dass das Progress nicht funktioniert wurde ja schon angesprochen.
Außerdem wäre eine Anzeige der Dateigrößen schön

gruß
Ich will mich ja nicht selber zitieren, aber hast du vor das in nächster Zeit inzubauen? Weil wenn nicht, dann mach ich es selber.
Ist ja nicht besonders schwer. Einfach ein OnDownloadStartEvent, dass die Gesamtgröße mitgibt.

gruß
Fabian E.
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#45
  Alt 28. Jun 2008, 00:19
Huhu Diamondback2007,
Ich weiß nicht, ob ich die nächsten Tage dazu komme. Vielleicht kannst du, wenn du magst, die geänderte Version posten, dann nehm' ich das mit rein?
Ich hänge noch an diesem Downloadfortschritt und diesem Indy9 Indy10 blödsinn!
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von fylo
fylo

 
Delphi 7 Personal
 
#46
  Alt 28. Jun 2008, 11:43
Zitat von Marco Steinebach:
...diesem Indy9 Indy10 blödsinn!
Hallo Marco,
ich hab mir mal den Quellcode angeschaut und ihn wie folgt geändert:
Delphi-Quellcode:
unit WebUpdateThread;

{$i WebUpdate.inc} // hier das Indy-Def gelöscht
{$i IdCompilerDefines.inc} // hier wird die Indy Version definiert
                           // Indy 9 = INDY90 und Indy 10 = INDY100 !

procedure InternalOnWork(Sender: TObject; AWorkMode: TWorkMode;
{$IFDEF INDY100} 
  AWorkCount: Int64
{$ELSE} 
  const AWorkCount: Integer
{$ENDIF}
);
Die gleiche Änderung natürlich auch noch bei der Procedure selbst. Mit diesen Änderunge compiliert mein Delphi 7 (mit Indy 10) den Code ohne Probleme.
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#47
  Alt 28. Jun 2008, 12:55
Soweit ich weiß oder gesehn habe ist es doch so, dass beim start eines Downloades die Gesamtgrößemitübergeben wird oder?damit ließe sich das machn.
Aber ich kann gern mal sehen was ich hinbekomme. Auf Indy 9 müsstest du das aber dann umbauen, hab nur 10. Sollte aber dann ja nicht so schwer sein.
Fabian E.
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#48
  Alt 28. Jun 2008, 23:01
Hi Fylo,
genauso, wie du es oben beschrieben hast, hab ich's auch versucht. Dann ist's irgendein fehler im Setup von Indy oder sonstwo. Eine Frage noch:
Ist bei dir der SourcePath mit im Suchpfad von Delphi angegeben?
In welchem Verzeichnis liegt bei dir die IdCompilerDefines.inc?
Bei mir liegt die im source-Verzeichnis und dhain führt kein Suchpfad. Ich denke, da liegt der Fehler.
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#49
  Alt 29. Jun 2008, 03:00
So, ich glaube jetzt habe ich den Fortschritt fertig. Muss nur noch ein bischen testen.
Was mir aber noch aufgefallen ist, ist dass wenn eine Datei die heruntergeladen werden soll, nicht vorhanden ist, es einen 404 Error gibt. Das sollte man abfangen und schöner machen.
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#50
  Alt 29. Jun 2008, 03:09
So, ich denke das sollte klappen.

Ich hab die Units mal angehangen. Zusätzlich noch ein Formular bei dem man die Verwendung sieht.
Achja auf dem Formular die Komponente pbLoading ist eine extra Komponente aber natürlich durch jede Progressbar ersetzbar.
Angehängte Dateien
Dateityp: zip update_346.zip (6,8 KB, 47x aufgerufen)
Fabian E.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 16   « Erste     345 6715     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 10:19 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