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 13 von 16   « Erste     3111213 1415     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)
 
shmia

 
Delphi 5 Professional
 
#121
  Alt 13. Mai 2011, 13:48
@gneric: nicht uninteressant aber leider fehlt noch etwas in Richtung OOP.
Hier ein Ausschnitt aus dem Code:
Delphi-Quellcode:
type
  TDownloadActionLoadUrl = class
  public
    class procedure Download(ziel, downloadurl: string; DownloadFeedback:TDownloadProgressEvent);
  end;
....
  TDownloadBits = class
  public
    class procedure DownloadForground(ziel, downloadurl: WideString; DownloadFeedback:TDownloadProgressEvent);
    class procedure DownloadBackground(ziel, downloadurl, ExeName, Params: WideString);
    class procedure CompleteJob(JobId: WideString);
  end;
Hier müsste es natürlich eine gemeinsame Basisklasse mit einer virtuellen, abstrakten Methode geben. DownloadFeedback müsste ein Event sein (anstelle eines Parameters).
Andreas
  Mit Zitat antworten Zitat
generic

 
Delphi XE5 Professional
 
#122
  Alt 13. Mai 2011, 15:48
Wie bei allen Vorträge und Artikeln gilt:
Es handelt sich hier um Beispiele wie etwas gelöst werden kann.
Das die Quellen nicht der Weisheit letzter Schluss sind, sollte jedem klar sein. Der Quelltext ist nur für Demozwecke und muss natürlich für "production use" ausgearbeitet werden.

Ja, du hast Recht - wenn man den Downloader austauschen will, müssten gleiche Interfaces her.
Allerdings sollte dann auch die gleiche Downloadtechnik für das herunterladen der XML genutzt werden.
Das läuft in der Demo komplett über MSXML.

Vorteil von einer einheitlichen Lösung ist u.a. die Konfiguration von Web-Proxies. Idealerweise nimmt man die in Windows hinterlegten Einstellungen.
Ich denke ich würde den BITS mit eine, hohen Prioritätsdownload verwenden. Dieser müsste nicht extra in der Firewall freigeschaltet werden.
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#123
  Alt 25. Jun 2011, 18:31
Hey Leute, hab wieder mal ein kleines Problem.
Die WebUpdate Komponente enthält ja den HTTP-Indy-Client. Jetzt brauche ich diesen aber auch noch seperat in meinem Programm. Sobald ich die Komponete auf die Form ziehen möchte kommt folgende Meldung:

Package "IndySystem150" kann nciht geladen werden. Es enthält die Unit "IdWship6", die auch im Package "WebUpdateKompontente" enthalte ist.

Klar, das Problem ist schon mehrfach diskutiert worden. Besonders interessant finde ich den Ansatz, dass eine Package (in diesem Fall das IdHTTP-Package) einfach in die Requires-Klausel aufzunehmen. Das hat wohl den gleichen effekt wie die uses-Klausel, danach gehts aber wohl. Nur wo ist in der Unit der WebUpdateKomponente die requires Klausel? Das ist wohl eine Klausel die nur in einem Package deklariert werden kann und nicht in einer Unit. Wie auch immer, ich stehe wie der Ochs vorm Berg. Ich weiß zwar welche Unit den Fehler verursacht, aber wie kann ich diese aus der WebUpdateKomponente auslagern so dass siese noch funktioniert UND ich IdHTTP noch seperat benutzen kann?

Hat jemand eine Idee? Vllt wie ich mit der requires-Klausel weiter komme? Kann ich diese auch in der Unit der WebUpdateKomponente deklarieren?

lg,
thestallion90
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#124
  Alt 25. Jun 2011, 18:34
In der Projektdatei.
Markus Kinzler
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#125
  Alt 25. Jun 2011, 21:52
In der Projektdatei der Komponente? Also der TUpdateKomponete? Wie komme ich denn da hin? Die Komponente liegt ja wie alle anderen auch in der Tool-Leiste. Oder liegt auf der Form, je nachdem.. Wenn ich mir zB die Deklaration eines Events der Komponente anzeigen lasse öffnet sich die betreffende unit der Komponente. Aber wie komme ich auf die Projektdatei?

lg,
thestallion90
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#126
  Alt 25. Jun 2011, 22:00
Zu Erstellung wurde aber ein Projekt verwendet ( .dpr)
Markus Kinzler
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#127
  Alt 26. Jun 2011, 02:18
Aber wenn ich das richtig sehe liegt mir das Projekt nicht vor, oder übersehe ich da irgendetwas? 8( Es geht mir ja darum, dass ich das Problem beheben kann...
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#128
  Alt 26. Jun 2011, 09:17
Doch diese Datei muss ja vorhanden sein, da ja die Komponente im Quelltext ohne Package vorliegt.
Irgendwo muss WebUpdateKompontente.dpr vorhanden sein
Markus Kinzler
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#129
  Alt 26. Jun 2011, 17:08
Ja, die Komponente liegt als Unit vor. Und ich habe sie in Delphi per "Komponete/Komponente installieren/Unit auwählen" installiert. Ich habe also nur die Unit ausgewählt und hatte keine dpr-Datei. Kann ich vllt einfach eine neue Kompoentente erstellen und dann den Code aus der vorhandenen Unit reinkopieren? Dann weiß ich nicht, von welcher Komponente ich meine neue ableiten soll damit es funktioniert (das muss man ja auswählen, wenn man auf "Komponente erstellen" geht)...

PS: warum bekomme ich eigentlich keine eMail-Benachrichtigung mehr wenn es hier was neues gibt?
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#130
  Alt 26. Jun 2011, 17:21
An dieser Stelle hast du die Wahl ein neunes (Package-)Projekt anzulegen oder die Unit einem vorhandenen hinzuzufügen.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 13 von 16   « Erste     3111213 1415     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 08:31 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