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 14 von 16   « Erste     4121314 1516      
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
 
#131
  Alt 26. Jun 2011, 20:00
Ich fasse mal kurz zusammen, was ich jetzt ausprobiert habe:

Ich habe "Komponente installieren" ausgewählt, Delphi auf die entsprechende Unit "WebUpdate.pas" verwiesen und sollte dann ein Package auswählen.

Bevor ich es in irgendein vorhandenes reininstalliert hätte, dachte ich mir, es wäre einfacher und übersichtlicher, ein neues Package anzulegen.
Also habe ich zunächst in Delphi per "Datei/Neu/Package" ein Package erstellt und direkt so gespeichert, praktisch ohne irgendetwas drin. Nennen wir es "Package1".

Wieder zurück zur installation der Komponente: Ich habe Delphi also gesagt, dass ich WebUpdate.pas in ein vorhandenes Package installieren möchte, also in das, welches ich gerade erstellt hatte (Package1).

So weit lief auch alles gut. Jetzt muss ich nur noch das HTTP-Indy Package in die requires Klause aufnehmen und alles läuft (habe ich gedacht).
Ich habe also mein "Package1" geöffnet. Zunächst habe ich aus der WebUpdate.pas das IdHTTP aus der uses-klausel genommen und im Quelltext des Packages (Package1) in die requires-Klausel geschrieben. Resultat war eine Meldung, dass das Package "IdHTTP" nicht gefunden werden kann. Logo, hab ich gedacht, in der Uses-Klausel stehen ja auch units drin und keine Packages. Also habe ich mich an die Fehlermeldung erinnert in der es hieß: "Package "IndySystem150" kann nciht geladen werden..." als ich die Indy-HTTP-Komponte auf die Form ziehen wollte. Also habe ich im Quelltext von meinem "Package1" in der requires-Klausel das "IdHTTP" durch "IndySystem150" ersetzt. Aber auch hier sagt er, dass das Package nicht gefunden werden kann 8(.. Was will er?

Ich habe also die unit WebUpdate.pas in ein leeres, neues Package installiert. Was muss ich jetzt damit anstellen damit die Komponente normal funktioniert, ohne dass der Konflikt auftritt?

Geändert von thestallion90 (26. Jun 2011 um 20:04 Uhr)
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#132
  Alt 26. Jun 2011, 20:06
Zitat:
Zunächst habe ich aus der WebUpdate.pas das IdHTTP aus der uses-klausel genommen
Dort muss der Verweis aber stehen bleiben.
Der Linker schaut dann, ob er die Unit in einem benötigten Package findet, sonst wird diese implizit in das aktuelle Package gelinkt.
Zitat:
Also habe ich im Quelltext von meinem "Package1" in der requires-Klausel das "IdHTTP" durch "IndySystem150" ersetzt
Das ist richtig so.

Hast du das alte Package Deinstalliert?
Ist Indy aktiv?
Markus Kinzler
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#133
  Alt 26. Jun 2011, 20:18
nein, ich habe an den installierten Packages nicht gemacht. Hier der genaue Wortlaut der Fehlermeldung:

[DCC Fataler Fehler] WebUpdateKomponenteSelber.dpk(28): E2202 Package 'IndySystem150' wird benötigt, konnte aber nicht gefunden werden

Hier der Quellcode des Packages:

Delphi-Quellcode:
package WebUpdateKomponenteSelber;

{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$DEFINITIONINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$IMPLICITBUILD ON}

requires
  rtl,IndySystem150;

end.


Muss ich evtl. irgendwo einen Suchpfad zu dem Package eingeben? Normalerweise müsste er es doch automatisch finden, oder?
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#134
  Alt 26. Jun 2011, 20:22
Ist Indy denn installiert? Es ging ja wegen der Unit nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#135
  Alt 26. Jun 2011, 20:26
wie finde ich das denn heraus?

Habe mal versucht per "Komponente/Package installieren" mein Package auszuwählen. Er zeigt mir das gar nicht an, also die dpk-Datei... Und wenn ich auf "Alle Dateien anzeigen" klicke und die dpk-Datei auswähle sagt er, dass das Package ungültig sei.
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#136
  Alt 26. Jun 2011, 20:27
Und INDY?
Markus Kinzler
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#137
  Alt 26. Jun 2011, 20:28
wie finde ich denn heraus, ob es installiert ist?
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#138
  Alt 26. Jun 2011, 20:32
Unter Komponenten->Packages
Markus Kinzler
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#139
  Alt 26. Jun 2011, 20:34
"Indy 10 Core Entwurfszeit" und "Indy 10 Protokolle Entwurfszeit" sind installiert...
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#140
  Alt 26. Jun 2011, 20:38
Existiert den die Bpl im Suchpfad?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 14 von 16   « Erste     4121314 1516      


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 20:01 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