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 7 von 16   « Erste     567 89     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)
 
Marco Steinebach

 
Delphi 5 Enterprise
 
#61
  Alt 3. Jul 2008, 21:29
Zitat von Pif:
Wenn ich ein neues PAckage mache und die 3 units einfüge und es dann installieren will bekomme ich nen error:

requires
vclx,
vcl,
rtl;

was muss ich da machen? wo bekomme ich diese dateien her?
Ähm, steht da wirklich:
requires
vclx,
...
Willst du denn wirklcih 'n neues Package machen, oder die Kompo im Borland-Anwenderkomponenten-Package installieren, das Delphi schon mitbringt?
Was für'n Delphi und Indy fährst du?
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Pif
 
#62
  Alt 3. Jul 2008, 21:51
JO da steht

requires
vclx,
vcl,
rtl;


Ich habs bis jetzt immer so installiert. datei-> neu -> package
dann die units rein dann das package installiert. fertig.
Ich bin net sod er delphi experte, deshalb kenn ich nur den weg.

Ich hab delphi 2007 und glaub indy10
  Mit Zitat antworten Zitat
Cronen

 
Delphi 10.3 Rio
 
#63
  Alt 3. Jul 2008, 21:55
Ich hab die Komponente jetzt bei mir in einem Projekt ausprobiert.
Alle anderen Update-Lösungen waren mir zu aufwendig oder zu kostspielig.
Also Danke Marco
Zum Erstellen der Info-Datei habe ich mir ein kleines Tool geschrieben.
Bitte testen.
Exe benötigt keine Installation, Source ist beigefügt.

Marco:
Kannst du der Komponente einen individuelleren Namen geben.
"TWebUpdate" wird von mehren anderen Herstellen auch verwendet
und Delphi meckert daher bei jeder Installation.
Ich nenne sie immer in TDPWebUpdate um (DP=DelphiPraxis)
Angehängte Dateien
Dateityp: zip webupdatfilegen_933.zip (306,8 KB, 58x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

 
Delphi 2007 Professional
 
#64
  Alt 4. Jul 2008, 08:25
Naja okay dann lade ich mal meinen Update Creator hoch.
Man muss nur die Dateien auswählen und evtl. noch den Pfad einstellen und dann wird die Info-datei erzeugt und alles auf einen FTP-Server hochgeladen.
Mit Doppelklick auf eine Datei in der Liste kann man noch mal den Pfad ändern und angeben ob die Datei Start=1 bekommt.

Ihr müsst nur in der Settings.ini noch eure FTP-Daten eintragen.
Angehängte Dateien
Dateityp: zip update_creator_173.zip (351,2 KB, 68x aufgerufen)
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von fylo
fylo

 
Delphi 7 Personal
 
#65
  Alt 4. Jul 2008, 09:32
Zitat von Pif:
requires
vclx,

Ich habs bis jetzt immer so installiert. datei-> neu -> package
dann die units rein dann das package installiert. fertig.
Hallo,

das mach ich auch immer so. Ich hab in der Unit WebUpdate.pas in der Uses-Anweisung nach Implementation die Unit FileCtrl gelöscht und man braucht kein vclx mehr.
  Mit Zitat antworten Zitat
Svenkan

 
Delphi 7 Enterprise
 
#66
  Alt 8. Jul 2008, 20:10
Zitat von Cronen:
Ich hab die Komponente jetzt bei mir in einem Projekt ausprobiert.
Alle anderen Update-Lösungen waren mir zu aufwendig oder zu kostspielig.
Also Danke Marco
Zum Erstellen der Info-Datei habe ich mir ein kleines Tool geschrieben.
Bitte testen.
Exe benötigt keine Installation, Source ist beigefügt.
Hey! Dein Tool sieht schonmal toll aus! Wenn ich allerdings den Source öffnen will, dann springt mein Delphi aus allen Wolken und fährt sich komplett fest (100% Auslastung). Und das find ich doch etwas sehr unpassend.
Sven Kannenberg
  Mit Zitat antworten Zitat
Pif
 
#67
  Alt 20. Jul 2008, 15:35
fIdHTTP.OnWork := InternalOnWork; [DCC Fehler] WebUpdateThread.pas(49): E2009 Inkompatible Typen: 'Liste der Parameter ist unterschiedlich


selbes Problem wie früher schon einmal. taucht wieder auf ... :/
  Mit Zitat antworten Zitat
Marco Steinebach

 
Delphi 5 Enterprise
 
#68
  Alt 20. Jul 2008, 15:38
huhu,
Zitat von Pif:
fIdHTTP.OnWork := InternalOnWork; [DCC Fehler] WebUpdateThread.pas(49): E2009 Inkompatible Typen: 'Liste der Parameter ist unterschiedlich


selbes Problem wie früher schon einmal. taucht wieder auf ... :/
hast du die WebUpdate.inc angepaßt? Also, wenn du Indy10 einsetzt, was der Fall sein dürfte, dann muß die Zeile mit Indy10 so aussehen:
{$DEFINE Indy10}
Du mußt also den Punkt forne wegnehmen, dann sollte es klappen.
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Pif
 
#69
  Alt 20. Jul 2008, 15:57
Funktioniert =) DANKE

MfG
  Mit Zitat antworten Zitat
Cronen

 
Delphi 10.3 Rio
 
#70
  Alt 20. Jul 2008, 21:18
Ich habe einen Wizard mit der Komponente gebastelt und dabei immer Fehlermeldungen bekommen.
Nach ca. zwei Stunden probieren und Scheuklappen vor den Augen habe ich den Fehler gefunden:

Fehler:
Ich hab die Methode CheckforUpdates 2x aufgerufen (wurde benötigt um im Wizard die Seiten zu wechseln und eine Fortschrittsanzeige zu realisieren. Beim Ermitteln von AllFileSize und beim Download gabs dann Fehlermeldungen.

Ursache:
fFiles enthielt mehr Dateien als in der Steuerdatei angegeben (und zwar am Ende mit leeren Dateinamen).
Da es Leernamen waren griff die Fehlerroutine nicht.

Lösung:
fFiles muß beim Aufruf von CheckforUpdates geleert werden. Hier der Code dazu:

Delphi-Quellcode:
procedure TWebUpdate.CheckForUpdates;

  ...

  ini := TIniFile.Create (fTempDir + IniName);
  ma := ini.ReadInteger ('Version', 'Major', 0);
  mi := ini.ReadInteger ('Version', 'Minor', 0);
  re := ini.ReadInteger ('Version', 'Release', 0);
  bu := ini.ReadInteger ('Version', 'Build', 0);

  SetLength (fFiles,0); // <-- Diese Zeile neu eingefügt

  SectionCount := 1;
  FileCount := 0;
  while Ini.SectionExists ('File'+null(SectionCount, 3)) do
  begin
    s := ini.ReadString ('File'+null(SectionCount, 3), 'Name', '');
    if LinkExists (fUpdateURL + s) then
    begin
      SetLength (fFiles, Length(fFiles)+1);
      with fFiles[FileCount] do
      begin
        name := s;
        Path := ini.ReadString ('File'+null(SectionCount, 3), 'Path', '');
        if ((Path <> '') and
            (copy (Path, Length(Path)-1, 1) <> '\')) then
          Path := Path + '\';
        if fStartname = 'then
          if ini.ReadBool ('File'+null(SectionCount, 3), 'Start', false) then
            fStartname := name;
      end;
      FileCount := FileCount + 1;
    end
    else
      if Assigned (OnError) then
        OnError (self, TWU_FileNotFound, s);
    SectionCount := SectionCount + 1;
  end;
  ini.Free;

  ...
Jetzt funktionierts prima.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 16   « Erste     567 89     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 14:02 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