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 11 von 16   « Erste     91011 1213     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)
 
Svenkan

 
Delphi 7 Enterprise
 
#101
  Alt 5. Jan 2009, 20:44
Gibt es eine Möglichkeit Einbauen zu können, dass bestimmte Dateien nur bis zu einer bestimmten Version runtergeladen werden? Spart bei neueren Versionen des Programms Traffic!
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

 
Delphi 2007 Enterprise
 
#102
  Alt 13. Feb 2009, 22:29
entferne einfach überall {$IFNDEF Indy10} const {$ENDIF} , dann gehts
Philippe Wechsler
  Mit Zitat antworten Zitat
Svenkan

 
Delphi 7 Enterprise
 
#103
  Alt 20. Feb 2009, 17:29
Und das bringt mir genau was?
Meine Idee: man gubt für jede Dateinin der INI mit an, bis zu welcher Programmversion diese mitgeliefert werden soll. Oder es sollte einen Parameter geben, bei dem man einstellen kann, dass eine vorhandene Datei (z.B. Readme) nicht erneut heruntergeladen werden soll (Prüfung per FileExists?).
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

 
Delphi 7 Professional
 
#104
  Alt 24. Feb 2009, 13:05
Hallo Marco,

ich habe mir deine Kompoponente zwar nicht angeschaut habe aber paralellen zu meinem " alten Updater" gefunden. Also habe ich ihn rausgekramt und weiter verbessert.
Folgendes Ergebnis ist dabei rausgekommen.
Ich habe zwar auch mit einer ini. ähnlichen Datei gearbeitet diese ist aber nicht mehr wirklich notwendig.

Folgenden Ansatz habe ich bereits umgesetzt:

- Container geschrieben der die "neuen Dateien aufnimmt und in eine Datei packt, Inhalt wird per MD5 verifiziert"
- Upgrader alias (Update.exe) geschrieben. Dieser packt die Containerdatei aus und verteilt diese an die Anwendung.

Funktion:

- Der Download des Updates ( der Containerdatei ) erfolgt über das Hauptprogramm.
- Update wird heruntergeladen, dieses beinhaltet eine Containerdatei.
- Das Hauptprogramm startet den Upgrader alias Update.exe und beendet sich selbst.
- Upgrader alias Update.exe verteilt, löscht bzw überschreibt die alten Dateien oder aktualisiert sich selbst.

Vorteile:

- Den Upgrader kann man individuell ans Programmdesign anpassen da der Code immer gleich bleibt.
- Der Upgrader alias (Update.exe) kann sich selbst updaten.
- Updatekomponente wird wie gehabt ins normale Projekt aufgenommen.
- Man hat nur noch eine Containerdatei auf dem Webspace.
- Die Version des aktuellen Programms wird mittels einer version.dat vom Upgrader verteilt. Und vom Hauptprogramm abgefragt. Somit erübrigt sich die ini-änliche datei auf dem Space.
- Man benötigt nur für den Upgrader Adminrechte nicht fürs Hauptprogramm

Das Modul läuft übrigens schon in eines meiner aktuellen Projekte

Würde mein Wissen und Lösungsansatz gern mit dir Teilen.
Wenn du Interesse hast kannst du dich ja mal per Pm melden.

Mfg Net7
Marko
  Mit Zitat antworten Zitat
ChEeTaH

 
Delphi XE2 Architect
 
#105
  Alt 26. Feb 2009, 18:39
Hallo,
beim Kompilieren kommt dieser Error:

[DCC Fehler] WebUpdateThread.pas(48): E2010 Inkompatible Typen: 'Int64' und 'Integer'

Delphi-Quellcode:
procedure TDownloadThread.Execute;
var
   fs: TFileStream;
begin
   fIdHTTP := TIdHTTP.Create(nil);
   fIdHTTP.OnWork := InternalOnWork; //-> Hier kommt der Error
   fs := TFileStream.Create (fPath + fName, fmCreate or fmShareExclusive);
   try
      fIdHTTP.Get(fURL + fName, fs);
   finally
      fs.Free;
      fIdHTTP.Free;
   end;
end;
Help pls
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

 
Delphi 7 Professional
 
#106
  Alt 1. Mär 2009, 14:33
Hi,

Zitat von ChEeTaH:
Hallo,
beim Kompilieren kommt dieser Error:

[DCC Fehler] WebUpdateThread.pas(48): E2010 Inkompatible Typen: 'Int64' und 'Integer'

Delphi-Quellcode:
procedure TDownloadThread.Execute;
var
   fs: TFileStream;
begin
   fIdHTTP := TIdHTTP.Create(nil);
   fIdHTTP.OnWork := InternalOnWork; //-> Hier kommt der Error
   fs := TFileStream.Create (fPath + fName, fmCreate or fmShareExclusive);
   try
      fIdHTTP.Get(fURL + fName, fs);
   finally
      fs.Free;
      fIdHTTP.Free;
   end;
end;
Help pls

hab zwar nicht den Komponentencode aber:

OnWork ist vom Typ TWorkEvent der ist so definiert.

TWorkEvent = procedure(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer) of object;
Nun die Frage: Wie ist InternalOnWork definiert etwas so?


InternalOnWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: INT64); Dann wird das wohl daran liegen ...


Mfg Net7
Marko
  Mit Zitat antworten Zitat
youuu

 
Delphi 2010 Professional
 
#107
  Alt 9. Aug 2009, 11:51
Kann einer weiter helfen bei dem Problem?


[DCC Fehler] WebUpdateThread.pas(49): E2010 Inkompatible Typen: 'Int64' und 'Integer'

Delphi-Quellcode:
      procedure InternalOnWork (Sender: TObject; AWorkMode: TWorkMode;
                {$IFNDEF Indy10} const {$ENDIF} AWorkCount: Integer);
ist meines wissen's richtig?
Steven
  Mit Zitat antworten Zitat
9. Aug 2009, 15:35
Dieses Thema wurde von "TBx" von "Freeware" nach "Open-Source" verschoben.
Quellen dabei, also Opensource
Benutzerbild von Net7
Net7

 
Delphi 7 Professional
 
#109
  Alt 10. Aug 2009, 11:52
Zitat von youuu:
Kann einer weiter helfen bei dem Problem?


[DCC Fehler] WebUpdateThread.pas(49): E2010 Inkompatible Typen: 'Int64' und 'Integer'

Delphi-Quellcode:
      procedure InternalOnWork (Sender: TObject; AWorkMode: TWorkMode;
                {$IFNDEF Indy10} const {$ENDIF} AWorkCount: Integer);
ist meines wissen's richtig?

Ist es auch.

Tipp, mal versucht die an den Compilereinstellungen zu fummeln?? Bereichsprüfung zur Laufzeit ect. ?
Marko
  Mit Zitat antworten Zitat
Real-TTX

 
Delphi 2007 Enterprise
 
#110
  Alt 10. Aug 2009, 12:41
Soweit ich weiß, liegt es an einer alten Indy Version. Ich hatte das Problem auch einmal. Ein altes Projekt von mir, wurde nicht mehr compiled. Hatte zuvor eigentlich nur ein Indy Update gemacht...

Gruß, Real-TTX
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 11 von 16   « Erste     91011 1213     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 06:17 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