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 15 von 16   « Erste     5131415 16      
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)
 
thestallion90

 
Delphi XE Starter
 
#141
  Alt 26. Jun 2011, 22:06
Ich hab einen neuen Suchpfad zum Ordner Embarcadero\RAD Studio\8.0\bin eingetragen. Da liegt die bpl drin. Funzt aber immernoch nicht..
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#142
  Alt 26. Jun 2011, 22:41
Nur für mein Verständnis:

weil die WebUpdateKomponente die HTTP-Indy Komponente braucht und sich in der Uses-Klausel darauf bezieht, wird die aktuelle Version entsprechende Unit in das Package der WebUpdateKomponente "eingebaut". Und wenn icih dann die HTTP-Indy Komponente und die WebUpdate Komponente parallel verwenden will gibt es zwei versionen der entsprechenen Unit. Das gibt den Fehler.
Wenn ich in der WebUpdateKomponente das HTTP-Infy_Package in die requires-Klausel aufnehme wird keine neue Version von der Unit angelegt. Folglich dürfte das Problem behoben sein, oder?
Oder hab ich da irgendwo einen kompletten Denkfehler drin?
Wäre es vllt einfach die Unit, die in der WebUpdateKomponete enthalten ist umzubenennen? Damit es keine zwei Versionen der namensgleichen unit gibt? Das müsste doch auch funktionieren. Oder?
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#143
  Alt 26. Jun 2011, 22:57
Ja im prinzip stimmt es so. Der Linker schaut, ob die benötigten Units in referenzierten Packages vorhanden sind, sonst bindet er sie direkt ein.
Jede Unit darf nur einmal vorhanden sein.
Markus Kinzler
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#144
  Alt 26. Jun 2011, 23:08
und was passiert, wenn ich die WebUpdateKomponente einfach in das Package der HTTP-Indy Komponente installiere? Dann ist doch alles im gleichen Package und das Problem dürfte auch behoben sein. Oder? Ich frage sicherheitshalber mal, bevor danach gar nichts mehr funktioniert..
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#145
  Alt 27. Jun 2011, 00:39
WHOOOO!

*räusper*

Habs hinbekommen. Der Name des Packages in der requires-Klausel war falsch. Habe mal per windows-Suche nach einem der anderen Packages, die standardmäßig in der requires klausel stehen (in meinem fall "designide") gesucht und die Datei "designide.dcp" gefunden. Daraufhin habe ich im selben Ordner der gefundenen Datei (designide.dcp) nach etwas Indy-ähnlichem Gesucht und die Dateien "indycore.dcp" und "indyprotocols.dcp" gefunden. Wenn ich die qequires-Klausel um diese beiden Packages erweitere (natürlich ohne die Dateiendung) läuft alles wie geschmiert.

Lösungsweg für die korrekte Installation der WebUpdateKomponente. Für alle, die das gleiche Problem haben, also die Update Komponente mit den anderen Indy Komponenten verträglich machen wollen:

1. Package erstellen:
In Delphi auf "Datei/Neu/Package" gehen. Dann passiert erstmal herzlich wenig, es öffnet sich keine Form oder sonstiges. Einfach direkt im Anschluss auf "Datei/Projekt speichern". Am besten dafür einen neuen Ordner anlegen (wegen der Übersichtlichkeit), ich habe das Package "WebUpdateKomponenteEigen" genannt. In dem Ordner sollte dann die Projektdatei (dpr) und die Package-Datei (dpk) liegen.

2. Komponente aus der gelieferten unit installieren
In Delphi auf "Komponente/Komponente installieren" gehen. Dann die Unit "WebUpdate.pas" auswählen. Im nächsten Schritt dann Option "in vorhandenes Package installieren" anwählen und zu dem gerade eben abgespeicherten Package (WebUpdateKomponenteEigen.dpk) navigieren. Normalerweise sagt Delphi dann etwas wie: "Die Komponente wurde erfolgreich installiert".

3. Package bearbeiten, sodass die eben installierte Komponente mit den Indy-Komponenten verträglich ist.
In Delphi auf "Datei/Öffnen" und zu der eben angelegten Projektdatei navigieren. In meinem Fall "WebUpdateKomponenteEigen.dpr". Wahrscheinlich öffnet sich dann wieder nichts erkennbares, das ist aber in Ordnung. In Delphi XE (ich weiß nicht, ab welcher Version diese Funktion verfügbar ist) ist oben ganz links ein Button in der Menüleiste, der eine Übersicht aller Units, die dem Projekt angehören, öffnet. Wenn man diese Übersicht öffnet müsste die Datei "WebUpdate.pas" als einzige in dieser Liste stehen, weil wir sie ja eben in das vorher noch leere Package installiert haben.
Über "Projekt/Quelltext anzeigen" erreicht man den Quellcode des Packages/Projektes. Hier muss jetzt die requires-Klausel um zwei Packages ergänzt werden (zwei, weil ich nicht genau weiß welches der beiden relevant ist):

Delphi-Quellcode:
package WebUpdateKomponenteEigen;

{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}

{...}

requires
  rtl,
  designide,
  vcl,
  vclactnband,
  vclx,
  xmlrtl,
  indycore, //<--muss ergänzt werden
  indyprotocols; //<--muss ergänzt werden

contains
  WebUpdate in '..\tmswebupdate_v1.10.1_174\WebUpdate.pas';

end.
Wenn ihr das Package so speichert, sollte die Komponente ab sofort problemlos zusammen mit anderen Indy-Komponenten auf die Form zu ziehen sein.


Danke an mkinzler für seine Unterstützung!

Geändert von thestallion90 (27. Jun 2011 um 01:15 Uhr)
  Mit Zitat antworten Zitat
süden

 
Delphi 2007 Professional
 
#146
  Alt 8. Apr 2013, 20:47
Hallo,
die Kompo funktioniert super.

Ich würde gerne nur noch eine Setupdatei (Inno) zum laufen (=ausführen nach Download) bringen.
Geht das?

Und noch was:
Wenn ich auf meinen Download-Button klicke, tut sich erstmal eine Weile gar nichts. Viel Benutzer sind nicht daran gewöhnt, mehrere Sekunden zu warten, bevor eine Reaktion kommt.
Mein Versuch, die Funktion mit "Cursor X Finally Cursor y" einzuschließen hat nix gebracht trotz Application.Prozes...

Aber sonst ... vielen Dank.
Ich hatte es vorher mit TMSWebupdate (TMSSoftware) probiert, aber kein Source usw. und etliche Fehler.

Gruß aus dem Süden - süden
  Mit Zitat antworten Zitat
süden

 
Delphi 2007 Professional
 
#147
  Alt 11. Apr 2013, 11:27
Das Update funktioniert, wenn das Programm nicht auf C:\Programme installiert ist (WIN7pro).
Gibt es eine Möglichkeit es irgendwie doch zu machen?

In meiner letzten Frage habe ich schon geragt, wie ist eine Setup ans Laufen bekomme. Das wäre wohl eine Lösung, funktioniert aber auch nicht.

Über eine Hilfe würde ich mich sehr freuen, aber der Thread ist wohl tot?!

Gruß süden

PS: Die Komponente gleichen Namens von TMS-Software habe ich schon probiert, hat mir aber nicht so gefallen (kein Code ...).

Gibt es evtl. noch eine Alternative?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

 
Delphi XE8 Enterprise
 
#148
  Alt 11. Apr 2013, 12:18
PS: Die Komponente gleichen Namens von TMS-Software habe ich schon probiert, hat mir aber nicht so gefallen (kein Code ...).
Suche mal in dem Blog von TMS Sofwtare. Ich weiß, dass es da mal einen Beitrag gab.
Rolf Warnecke
  Mit Zitat antworten Zitat
Darlo

 
Delphi 10.2 Tokyo Enterprise
 
#149
  Alt 11. Apr 2013, 14:15
PS: Die Komponente gleichen Namens von TMS-Software habe ich schon probiert, hat mir aber nicht so gefallen (kein Code ...).
Ich nutze die Komponente und wenn das Ding kaufst hast Du auch den Source-Code. Habe den Source bisschen bearbeitet damit es auch unter FM Anwendungen für Windows läuft.
Philip
  Mit Zitat antworten Zitat
süden

 
Delphi 2007 Professional
 
#150
  Alt 13. Apr 2013, 19:38
Hallo,
danke für die Antworten. aber das triffts nicht.
Ich würde gerne die Komponentze von Marco zum laufen bringen.

Da steckt jetzt schon einige Arbeit drin und bevor ich jetzt noch mal mit dem Namensgleichen von TMS-Software anfange und Zeit und Geld investiere möcht ich wissen, wie ich die "Schranke" des Systemverzeichnissen C:\... umgehen kann.

Gruß süden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 15 von 16   « Erste     5131415 16      


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:28 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