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 4 von 16   « Erste     234 5614     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)
 
Pif
 
#31
  Alt 18. Mai 2008, 21:00
Hallo.
Ich helf dir gerne, nur kann ich die Zeile nicht finden. Bzw sieht sie bei mir anders aus.

So sieht meine WebUpdateThread.pas aus:

Delphi-Quellcode:
unit WebUpdateThread;

interface

uses
  classes, IdComponent, IdHTTP;

type
  TOnWorkEvent = procedure(Sender: TThread; AWorkCount: Integer) of object;
  TDownloadThread = Class (TThread)
    private
      fIdHTTP: TIdHTTP;
      fName: string; // Name einer herunterzuladenden Datei
      fPfad: string; // wohin soll die Datei auf Platte gespeichert werden
      fURL: string; // URL der Datei
      fWorkCount: integer;
      fOnWorkEvent: TOnWorkEvent;
      procedure InternalOnWork (Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
      procedure DoNotifyWork;
    protected
      procedure execute; override;
    public
      property name: string read fName write fName;
      property Pfad: string read fPfad write fPfad;
      property URL: string read fURL write fURL;
      property OnWork: TOnWorkEvent read FOnWorkEvent write FOnWorkEvent;
  end;

implementation

uses
  SysUtils;

procedure TDownloadThread.Execute;
var
  fs: TFileStream;
begin
  fIdHTTP := TIdHTTP.Create(nil);
  fIdHTTP.OnWork := InternalOnWork;
  fs := TFileStream.Create (fPfad + fName, fmCreate or fmShareExclusive);
  try
    fIdHTTP.Get(fURL + fName, fs);
  finally
    fs.Free;
    fIdHTTP.Free;
  end;
end;

procedure TDownloadThread.InternalOnWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
  FWorkCount := AWorkCount;
  Synchronize(DoNotifyWork);
end;

procedure TDownloadThread.DoNotifyWork;
begin
  if Assigned(OnWork) then
    OnWork (Self, FWorkCount);
end;

end.
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#32
  Alt 18. Mai 2008, 21:05
Huhu Pif,
aaah, ich hatte im Beitrag davor, noch 'ne geänderte Version gepostet, aber die vergiß mal.
okay:
Die Zeile heißt
procedure InternalOnWork (Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); das const vor dem aWorkCount muß raus, und unten auch nochmal.
Jetzt sollte es gehen ...
Hoffnungsvolle Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Pif
 
#33
  Alt 18. Mai 2008, 21:10
JAWOLLLLL

Es geht =) n1 Arbeit.

Besten Dank!

MfG Pif
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#34
  Alt 18. Mai 2008, 21:16
Huhu,
Zitat von Pif:
JAWOLLLLL

Es geht =) n1 Arbeit.
Na gottseidank!
Jetzt muß ich's nur noch verallgemeinern.
Viel Spaß beim testen, morgen oder übermorgen sollte es 'ne Version geben, die das schon drin hat.
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Pif
 
#35
  Alt 22. Mai 2008, 20:22
Wie siehtsn mit der neuen Version aus?
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#36
  Alt 22. Jun 2008, 21:40
Hallo zusammen,
... und hier ist V1.01.1.
Neuerungen:
Das Ereignis OnFehler tritt auf, wenn z.B. keine Verbindung zum Internet hergestellt werden kann, oder ein anderer Fehler auftritt.
Ebenso wurden die notwendigen Compiler-Schalter in die WebUpdate.inc ausgelagert.
Ein zweiter Schalter
Indey10
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.
Viel Spaß beim Testen und einen schönen Abend
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Assertor

 
Turbo C++
 
#37
  Alt 22. Jun 2008, 22:30
Hi Marco,

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.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#38
  Alt 23. Jun 2008, 05:03
Also ich muss sagen, deine Komponente gefällt mir richtig gut
Ich habe sie direkt mal in mein aktuelles Projekt eingebaut.
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ß
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#39
  Alt 24. Jun 2008, 23:36
Ein weiteres nettes Feature wäre die Anzeige aller zu downloadeden Dateien und ein Event sobald eine Datei fertig ist. Als Parameter dann den Namen der Datei. Das ganze könnte man dann schön in ein Log einbauen.
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#40
  Alt 24. Jun 2008, 23:55
Ah, ich sehe schon, das mit der Dateiliste gibt es wohl schon, tut mir leid.
Fabian E.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 16   « Erste     234 5614     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 16:18 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