Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   TMSWebUpdate - eine neue WebUpdate-Komponente (https://www.delphipraxis.net/109301-tmswebupdate-eine-neue-webupdate-komponente.html)

Diamondback2007 25. Jun 2008 11:37

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Es wäre auch noch schön, wenn man eine Verzeichnisstruktur komplett updaten könnte, ohne alle einzelnen Dateien anzugeben.
Das würde die Arbeit bei vielen Dateien ernorm vereinfach.
Einfach in der Ini einen Ordner auf dem Webspace angeben, der dann komplett mit der Struktur geupdatet wird.

Diamondback2007 25. Jun 2008 11:40

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Und ich glaube ich habe noch einen Bug gefunden.
Wenn ich den Neustart nach einem Update aktiviere, dann wird weder der WepUdateDateien-ordner gelöscht noch die Batsch datei.

Marco Steinebach 25. Jun 2008 16:07

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Hi Assertor,
Zitat:

Zitat von Assertor
Zitat:

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.

Delphi-Quellcode:
{$IFDEF INDY100}
Wird in IdGlobal.pas per IdCompilerDefines.inc gesetzt. Also einfach IdGlobal einbinden und per IFDEF prüfen.

Das hab ich auch gedacht, es funktioniert aber nicht.
I IdCompilers.inc wird bei mir
Indy90
definiert.
Aber mein Compiler meckert ...
Hier mal ein Auszug aus der Unit, wo's knallt:
Delphi-Quellcode:
uses
  classes, IdComponent, IdHTTP, IdGlobal;
type
  TOnWorkEvent = procedure(Sender: TThread; AWorkCount: Integer) of object;
  TDownloadThread = Class (TThread)
    private
      procedure InternalOnWork (Sender: TObject; AWorkMode: TWorkMode; {$IFDEF Indy90} const {$ENDIF} AWorkCount: Integer);
...
In Indy9 kommt hier vor dem aWorkCount ein const, in Indy10 ist das weggefallen. Also müßte, ..., es ja eigentlich klappen.
Irgend 'ne Idee, warum es das nicht tut?
Freundliche Grüße
Marco

Diamondback2007 27. Jun 2008 20:34

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Zitat:

Zitat von Diamondback2007
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ß

Ich will mich ja nicht selber zitieren, aber hast du vor das in nächster Zeit inzubauen? Weil wenn nicht, dann mach ich es selber.
Ist ja nicht besonders schwer. Einfach ein OnDownloadStartEvent, dass die Gesamtgröße mitgibt.

gruß

Marco Steinebach 27. Jun 2008 23:19

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Huhu Diamondback2007,
Ich weiß nicht, ob ich die nächsten Tage dazu komme. Vielleicht kannst du, wenn du magst, die geänderte Version posten, dann nehm' ich das mit rein?
Ich hänge noch an diesem Downloadfortschritt und diesem Indy9 Indy10 blödsinn!
Viele Grüße
Marco

fylo 28. Jun 2008 10:43

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Zitat:

Zitat von Marco Steinebach
...diesem Indy9 Indy10 blödsinn!

Hallo Marco,
ich hab mir mal den Quellcode angeschaut und ihn wie folgt geändert:
Delphi-Quellcode:
unit WebUpdateThread;

{$i WebUpdate.inc} // hier das Indy-Def gelöscht
{$i IdCompilerDefines.inc} // hier wird die Indy Version definiert
                           // Indy 9 = INDY90 und Indy 10 = INDY100 !

procedure InternalOnWork(Sender: TObject; AWorkMode: TWorkMode;
{$IFDEF INDY100} 
  AWorkCount: Int64
{$ELSE} 
  const AWorkCount: Integer
{$ENDIF}
);
Die gleiche Änderung natürlich auch noch bei der Procedure selbst. Mit diesen Änderunge compiliert mein Delphi 7 (mit Indy 10) den Code ohne Probleme.

Diamondback2007 28. Jun 2008 11:55

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Soweit ich weiß oder gesehn habe ist es doch so, dass beim start eines Downloades die Gesamtgrößemitübergeben wird oder?damit ließe sich das machn.
Aber ich kann gern mal sehen was ich hinbekomme. Auf Indy 9 müsstest du das aber dann umbauen, hab nur 10. Sollte aber dann ja nicht so schwer sein.

Marco Steinebach 28. Jun 2008 22:01

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Hi Fylo,
genauso, wie du es oben beschrieben hast, hab ich's auch versucht. Dann ist's irgendein fehler im Setup von Indy oder sonstwo. Eine Frage noch:
Ist bei dir der SourcePath mit im Suchpfad von Delphi angegeben?
In welchem Verzeichnis liegt bei dir die IdCompilerDefines.inc?
Bei mir liegt die im source-Verzeichnis und dhain führt kein Suchpfad. Ich denke, da liegt der Fehler.
Viele Grüße
Marco

Diamondback2007 29. Jun 2008 02:00

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
So, ich glaube jetzt habe ich den Fortschritt fertig. Muss nur noch ein bischen testen.
Was mir aber noch aufgefallen ist, ist dass wenn eine Datei die heruntergeladen werden soll, nicht vorhanden ist, es einen 404 Error gibt. Das sollte man abfangen und schöner machen.

Diamondback2007 29. Jun 2008 02:09

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich denke das sollte klappen.

Ich hab die Units mal angehangen. Zusätzlich noch ein Formular bei dem man die Verwendung sieht.
Achja auf dem Formular die Komponente pbLoading ist eine extra Komponente aber natürlich durch jede Progressbar ersetzbar.

fylo 29. Jun 2008 10:29

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Zitat:

Zitat von Marco Steinebach
Eine Frage noch:
Ist bei dir der SourcePath mit im Suchpfad von Delphi angegeben?
In welchem Verzeichnis liegt bei dir die IdCompilerDefines.inc?

Hallo Marco,

ich nutze die Subversion-Version von Indy 10. Bei dieser ist die Datei IdCompilerDefines.inc in den Unterverzeichnissen Core, System und Protocols enthalten. Diese drei Verzeichnisse sind bei mir in meinem Delphi 7 auch im Suchpfad eingetragen. Ich weiß aber nicht mehr, ob dass das Indy-Setup gemacht hat oder ob ich es selber gemacht hab :gruebel:

Svenkan 1. Jul 2008 13:48

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Hallo Marco,

nach anfänglichen Problemen funktioniert nun auch bei mir alles wunderbar!
Wie wäre es aber noch mit einer Möglichkeit, dass bspw. in ein Edit-Feld eintragen kann, welche Dateien bereits heruntergeladen wurden? Oder irgendwie anders kenntlich machne, dass der Download noch läuft? ;)

Marco Steinebach 1. Jul 2008 16:29

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Hallo Listers,
Es gibt, mal wieder, ‚ne neue Version:

Neuerungen in TWebUpdate V1.10.0 vom 01.07.2008:
Als erstes möchte ich mich für das kommende im voraus entschuldigen. All diejenigen, die TwebUpdate bereits eingebunden haben, müssen nämlich ein paar Zeilen code ändern, denn:
TWebUpdate, jedenfalls der Code und die Info-Datei, sind ab sofort in englisch. Die englische Doku läßt noch ein wenig auf sich warten.
Aber keine Angst, es wird nicht wieder deutsch, also wer jetzt ändert, braucht das nicht nochmal machen. ;-)
Das heißt: die eigenschaften bleiben gleich, SucheNachUpdates ist zu CheckForUpdates geworden, und die ereignisse entsprechen allesamt dem Standard.

Als weiteres gibt es eine Fehlerbehandlung (OnError), die verschiedene Fehlercodes interprätieren kann. Bitte auch das Demo und TwebUpdate.pas hierzu anschauen.

Ein herzliches Dankeschön an DiamondBack2007 für die Erstellung eines Zählers, der es ermöglicht, die Größe aller herunterzuladenden Dateien zu bestimmen.

Auf die anderen Vorschläge gehe ich gesondert ein, kann ein, zwei Tage dauern.
Das Demo wird auch nochmal erweitert, – damit es ein bißchen aussagekräftiger wird.

Viel Spaß mit der neuen Version und immer her mit Ideen, Lob, Kritik und sowas!

Einen schönen Abend!
Marco

shmia 1. Jul 2008 17:41

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Hier sind bestimmt noch Units drin, die nicht gebraucht werden (z.B. Graphics, Controls)
Delphi-Quellcode:
unit WebUpdate;
interface
{$i WebUpdate.inc}
// Diverse Compilerschalter.
// bitte dringend überprüfen, ob diese euren Anforderungen gerecht werden.,
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Und noch ne Idee:
Man sollte die Update-Komponente vom Downloader trennen.
Soll heisen, es wäre gut, wenn man Indy ganz einfach durch etwas anderes austauschen könnte.
Der Downloader hat ja nicht anderes zu tun, als eine URL herunterzuladen und in einer best. Datei abzulegen.
Dabei soll er aber nach Möglichkeit OnProgress Event unterstützen, damit man ggf. eine ProgressBar ansteuern kann.
Delphi-Quellcode:
TDownloader = class(TObject)
public
   procedure DownloadURL(const URL, DestFilename : string); virtual;
   property OnProgress: TProgressEvent;
end;
Davon könnte man konkrete Klassen ableiten: TIndy9Downloader, TIndy10Downloader und TSimpleDownloader.
TSimpleDownloader benötigt kein Indy, sondern verwendet die Funktion URLDownloadToFile aus Unit UrlMon.
Dafür kann der TSimpleDownloader keine ProgressEvents erzeugen; aber das kann man verschmerzen.
Wenn ein Downloader eine URL nicht runterladen konnte, dann wirft er eine Exception.

Svenkan 1. Jul 2008 18:28

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
*** Vorherigen Satz bitte vergessen (falls gelesen)! Hab meine INI nicht bearbeitet. :wall: ***

Ich wollte mal gerne wissen, an welcher Stelle ich 'AllFileSize' anwenden kann. Denn bisher bekomme ich (Prozedur 'UpdateFound') nur eine 0 ausgegeben.

Marco Steinebach 1. Jul 2008 18:34

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Zitat:

Zitat von Svenkan
Also ich habe mir grad das Update installiert, allerdings funktioniert der Download nun nicht mehr.
Sobald ich den Download des Updates bestätige, bekomme ich einen Zugriffsfehler.

Eine Exception oder wie?
Läßt du das Proggi unter der IDE laufen, so daß die Delphi-Exceptions ausgelöst werden?


Zitat:

Zitat von Svenkan
Desweiteren wollte ich mal gerne wissen, an welcher Stelle ich 'AllFileSize' anwenden kann. Denn bisher bekomme ich (Prozedur 'UpdateFound') nur eine 0 ausgegeben.

AllFileSize ist dafür gedacht, die ProgressBar vernünftit berechnen zu können. Wenn eine neue Programmversion gefundne wurde, also bevor DownloadStart loslegt, ist die Eigenschaft AllFileSize mit der Gesamtgröße aller herunterzuladender Dateien gefüllt.
Schau dir mal die prograssbar im Demoprogramm an.
Viele Grüße
Marco

Svenkan 1. Jul 2008 18:42

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Zitat:

Zitat von Marco Steinebach
Zitat:

Zitat von Svenkan
Also ich habe mir grad das Update installiert, allerdings funktioniert der Download nun nicht mehr.
Sobald ich den Download des Updates bestätige, bekomme ich einen Zugriffsfehler.

Eine Exception oder wie?
Läßt du das Proggi unter der IDE laufen, so daß die Delphi-Exceptions ausgelöst werden?

Siehe Post-Edit :D


Zitat:

Zitat von Marco Steinebach
Zitat:

Zitat von Svenkan
Desweiteren wollte ich mal gerne wissen, an welcher Stelle ich 'AllFileSize' anwenden kann. Denn bisher bekomme ich (Prozedur 'UpdateFound') nur eine 0 ausgegeben.

AllFileSize ist dafür gedacht, die ProgressBar vernünftit berechnen zu können. Wenn eine neue Programmversion gefundne wurde, also bevor DownloadStart loslegt, ist die Eigenschaft AllFileSize mit der Gesamtgröße aller herunterzuladender Dateien gefüllt.
Schau dir mal die prograssbar im Demoprogramm an.

Dankeschön! Funktioniert wunderbar!

Kann man eigtl. 2 Dateien nach dem Update starten lassen? (z.B. Programm und Readme)
Ich habe mal testweise bei zweien das Attribut 'Start' auf '1' gesetzt, allerdings wird nur die erste geöffnet.

Pif 1. Jul 2008 21:32

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
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?

MfG Pif

Svenkan 1. Jul 2008 23:03

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
/edit: Sry, hab mich verlesen. Ich sollte jetzt echt mal ins Bett gehen. ^^

Diamondback2007 3. Jul 2008 02:28

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Hey,

also erst mal finde ich es super, dass jetzt alles in Englisch ist :) :thumb:
Ich bin gerade dabei einen UpdateCreator zu erstellen, wenn der fertig, kann ich den ja hier mal posten.
Als Anregungen. Du könntest noch implementieren, dass auf dem Server Ordner mit den einzelnen Dateien liegen. Diese würden dann genauso heißen wie später nach dem Download. Du würdest also praktisch die gesamte Ordnerstruktur auch auf dem Server haben. Das schafft Ordnung.

Und wenn du Lust hast, könntest du auch noch eine Backupmöglichkeit einbauen. Bei einem neuen Update könntest du die zu ersetzenden Dateien einfach in einen Backupordner kopieren und bei Bedarf wiederherstellen.

gruß

Marco Steinebach 3. Jul 2008 20:29

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Zitat:

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

Pif 3. Jul 2008 20:51

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
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

Cronen 3. Jul 2008 20:55

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
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)

Diamondback2007 4. Jul 2008 07:25

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

fylo 4. Jul 2008 08:32

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Zitat:

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. :thumb:

Svenkan 8. Jul 2008 19:10

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Zitat:

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. ;)

Pif 20. Jul 2008 14:35

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Delphi-Quellcode:
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 ... :/

Marco Steinebach 20. Jul 2008 14:38

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
huhu,
Zitat:

Zitat von Pif
Delphi-Quellcode:
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

Pif 20. Jul 2008 14:57

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Funktioniert =) DANKE

MfG

Cronen 20. Jul 2008 20:18

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
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.

Diamondback2007 21. Jul 2008 10:27

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Kleiner Tipp zur Optmierung noch, ist mir grade so beim Durchlesen aufgefallen:
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;

  ...
Hier setzt du dir sage und schreibe 4 Mal den Wert für
Delphi-Quellcode:
'File'+null(SectionCount, 3)
neu zusammen. Speicher ihn doch in einer Variablen, dann hast dus einfacher und schneller ists auch noch. :)

Marco Steinebach 21. Jul 2008 11:31

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Hallo zusammen,
keine Angst, ich leb noch und auch TWebUpdate noch. ;-)
Ich werd' die ganzen Vorschläge einbauen, ich hoffe, daß ich im Laufe der Woche dazu komme.
Also:
Code-Optimierung,
Den Fehler mit dem SetLength (FFiles)...
der Name wird sich übrigens in TMSWebUpdate ändern, das ist dann hoffentlich die letzte Änderung bei der man mehr tun muß als das Package neu zu kompilieren,
und mal schauen zu was, von den anderen guten Vorschlägen, ich komme.
Bis dahin viele Grüße
Marco

Diamondback2007 21. Jul 2008 11:43

Re: TWebUpdate - eine neue WebUpdate-Komponente
 
Super :)

Marco Steinebach 21. Jul 2008 17:42

Re: TMSWebUpdate - eine neue WebUpdate-Komponente
 
Hallo zusammen,
Als erstes möchte ich mich für die vielen Anregungen und Verbesserungsvorschläge ganz herzlich bedanken.

etwas früher als erwartet, hier die Version 1.10.1 vom 21.07.2008.

Neuerungen in V1.10.1 vom 21.07.2008

Die gute alte TwebUpdate heißt jetzt TMSWebUpdate (MS, wer hätte es gedacht, für Marco Steinebach), damit sie leichter von anderen Komponenten unterscheidbar ist. Ich hoffe, jetzt gibt’s nur noch Updates, bei denen es damit getan ist, einfach das Package neu zu kompilieren. ;-)

Ein neues Ereignis
OnNextFile
ist dazugekommen. Es wird ausgelöst, wenn die nächste Datei, wirklich, heruntergeladen wird. Im Fehlerfall wird es nicht ausgelöst. Dem Ereignis werden die Nummer der Datei, die heruntergeladen wird, beginnend bei 0, und ihr Name mitgegeben.

Das Demoprogramm wurde erweitert, um das o.b. Verhalten zu verdeutlichen.

Das Problem mit mehrfachem Aufruf, wurde beseitigt.

Einiges an Code-Optimierungen durchgeführt.

Überflüssige Unit-Aufrufe raus!

Wenn Dateien in ein Unterverzeichnis auf der Festplatte downgeloaded werden sollen, müssen sie auf dem FTP-Server im gleichen Unterverzeichnis liegen.
Also: in der Info-Datei der Demo-Version wird die Datei Testdatei.txt heruntergeladen, und auf platte ins Verzeichnis Verschiedenes, unterhalb des Programmverzeichnisses, gepackt. Damit das geht, muß sie auf dem FTP-Server im Unterordner „Verschiedenes“ liegen, der unterhalb des von UpdateURL angegebenen Verzeichnisses liegt.
UpdateURL: www.odissa.de/programme/updates/UpdateTest (also das Hauptverzeichnis).
Testdatei.txt liegt in
http://www.odissa.de/programme/updat.../Verschiedenes.

Bitte achtet UNBEDINGT darauf, dass ihr, wenn ihr einen Unix-FTP-Server habt, die Groß-/Kleinschreibung beachten müsst.

Viel spaß und, wie immer, her mit Lob, Kritik und Anregungen.
Herzliche Grüße
Marco

Svenkan 26. Jul 2008 11:46

Re: TMSWebUpdate - eine neue WebUpdate-Komponente
 
Hallo Marco,

ich habe soeben auf die neue Version geupdated. Allerdings erhalte ich beim Abrufen der aktuellen Version nun die Fehlermeldung:

Zitat:

Im Projekt vplan_update.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: ''' ist kein gültiger Integerwert.'
Ich habe einfach die Komponenten ausgetauscht und am Code weiter nichts verändert.

Marco Steinebach 26. Jul 2008 12:22

Re: TMSWebUpdate - eine neue WebUpdate-Komponente
 
Hallo,
Schickst du mir mal deine Info-Datei? Vielleicht hab ich was bei der Updatebeschreibung vergessen zu schreiben? ...
Viele Grüße
Marco

Svenkan 26. Jul 2008 12:49

Re: TMSWebUpdate - eine neue WebUpdate-Komponente
 
Kein Problem: http://kallage.de/vplan/vplan/update_plus/update.ini

Marco Steinebach 26. Jul 2008 13:40

Re: TMSWebUpdate - eine neue WebUpdate-Komponente
 
Huhu,
Tja, die Datei sieht, wie erwartet, so aus, wie sie soll.
Okay, dann anders:
kannst du mal per (einzelne Anweisung) schauen, wo der Fehler, wann auftritt?
Also welche prozedur, bei welcher Codezeile, oder bei welchem Ereignis?
Viele Grüße
Marco

Svenkan 26. Jul 2008 21:07

Re: TMSWebUpdate - eine neue WebUpdate-Komponente
 
Hallo Marco,

das Problem tritt in der Unit WebUpdate Zeile 402/403

Delphi-Quellcode:
procedure TMSWebUpdate.CheckForUpdates;

....

  ma := StrToInt (copy(lv, 1, pos('.',lv)-1));
  delete (lv, 1, pos('.', lv));

...
auf.

In der Demo klappt der Download soweit wunderbar, bis auf die Zeitüberschreitung, die ich beim ersten Update-Versuch erhalte.

Marco Steinebach 26. Jul 2008 23:11

Re: TMSWebUpdate - eine neue WebUpdate-Komponente
 
Huhu Svenkan,
Hast du bei dir unter
Projekt / Optionen / Versionsinfo / Versionsnummer ins Projekt übernehmen
aktiviert?
Gruß
Marco


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.
Seite 2 von 4     12 34      

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