AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte WebUpdate System (FC III)
Thema durchsuchen
Ansicht
Themen-Optionen

WebUpdate System (FC III)

Ein Thema von WebUpdate System · begonnen am 16. Aug 2009 · letzter Beitrag vom 27. Nov 2009
Antwort Antwort
Seite 1 von 3  1 23      
WebUpdate System
Registriert seit: 11. Aug 2009
Die FC (Feature Complete) Versionen sind lauffähig, jedoch noch nicht fehlerbereinigt oder optimiert. Diese dienen zum Test und zur Weiterentwickling des Systems. Die FC Versionen liegen als .EXE, .DLL oder als Komponentenversion für D2009 und D2010 vor. Sie verfügen über die Möglichkeit Archive zu erstellen (Composer), diese zu laden, zu validieren, zu prüfen ob eine neuere Version vorliegt und diese zu Installieren und ggf. ein weiteres Programm im Anschluss (z. B. Installer oder die Applikation) aufzurufen.

Für die Weiterentwicklung sind gerne Mitarbeiter gesucht, welche Codebeiträge liefern, Fehler korrigieren, die Portierung nach D2007, D2006, D7, D6 vornehmen und C/C++ Header für die .DLL bereitstellen. Anregungen und Wünsche sind jederzeit Willkommen.

Das WUS (WebUpdate System) soll es auf einfache Art und Weise ermöglichen, die eigene Anwendung auf dem laufenden zu halten. Dazu kann das WUS Lizenzkostenfrei und ohne Nennung in eigene Anwendungen integriert werden. Wir schliessen jedoch die Gewährleistung und Haftung aus und erwarten, daß; Weiterentwicklungen, Fehlerkorrekturen, etc. wieder in das Projekt zurückfließen, damit das WUS insgesamt verbessert wird und jeder etwas davon hat, welcher das WUS einsetzt.

http://web-update-system.googlecode....20Complete.zip (ca. 3 MB)

Die aktuelle Version ist noch recht Q&D, aber Dank Eurer Hilfe und Kritik werden wir das WUS schon zu der Ultimativen WebUpdate Komponente weiterentwickeln.

Version 20091115[*] DLL Demo an D2006 angepasst[*] Die DLL Funktionen beginnen nun mit einem Underscore "_"
[+] Demo ergänzt um Abfrage ob WUS DLL vorhanden ist[*] DLL auf dynamsiche Linkung Funktionsaufruf umgestellt. DLL muss nun nicht mehr zwingend vorhanden sein
[+] Im Composer wird nun die URL des Archives geprüft[*] Layout des Composers nun auf Tabstrips umgestellt
[+] Mussfelder im Composer nun farbig unterlegt


Aktualisierung 6.9.2009
[+] Manifest der .exe und .dll hinzugefügt[*] ActionDownloadFile gegen URLDownloadToFile getauscht
[+] Bei fehlerhaften Update, werden die Änderungen wieder zurückgenommen[*] Warnungen, neues Threadhandling (D2010) beseitigt[*] Hilfe erweitert
[+] Demo zum WebUpdate und Installation erstellt
[+] Bei der Installation werden nun auch nichtvorhandene Verzeichnisse angelegt
[+] Im Composer "Speichern Unter" Dialog implementiert
[+] Berechtigungsprüfung in .DLL Interface integriert


Aktualisierung 4.9.2009[*] Neue Basisklasse für das WUS eingeführt
[+] Die Archive werden nun nach dem herunterladen, direkt entpackt[*] Binärformat der Archivdatei
[+] Überprüfung der Archivintegrität integriert
[+] Entschlüsselung der Archive beim Download hinzugefügt
[+] Einfache Prüfung der Versionshistorie implementiert[*] Der Executor wurde überarbeitet, es werden neu die ReturnCodes zurückgeliefert[*] Hilfe erweitert um die Updateszenarien[*] Dekomprimierung der Streams auch unter D2006 ermöglicht[*] Schalter für automatischen Download aus Updatemgr, wieder entfernt
[+] Implementation des externen Updates als .EXE, inkl. Dokumentation
[+] Das WUS läuft jetzt auch unter D2010[*] Verschiedene Optimierungen an der internen Struktur des Updaters[*] Fehler im Composer (Fortschreiben und Anzeige des Dateinamens im Archiv) beseitigt
[+] Im Installer den Executor (zur Ausführung von Dateien) implementiert
[+] .DLL Schnittstelle für das WUS implementiert


Aktualisierung 26.8.2009
[+] Der Executor wurde implementiert, aktuell noch ohne Einbindung in den Installer
[+] Hashcode für die Dateien Implementiert
[+] Für das Archiv wird jetzt auch eine Prüfsumme gebildet[*] Die Mengentypen TWUSUpdateModes und TWUSVersionsNumberGets gegen die einfachen Typen ersetzt.
[+] Die Releasenummer als Updatekriterium integriert[*] Routinen welche die Unit Windows verlangen in eine eigene Unit verlagert[*] Aktualisierte CSV Unit für Unicode eingebunden
[+] Loggingklassen implementiert
[+] Logging implementiert
[+] Wird jetzt ebenfalls die Updatelise komprimiert
[+] Dem Archiv wird der Zeitstempel der Updateliste hinzugefügt
[+] Prüfung auf Verfügbarkeit des Internets beim UpdateCheck und Download integriert[*] Es werden nur definierte Dateinamen vergeben[*] Weitere Anpassungen an D2006/TD vorgenommen (Elimation impliziter TypeCasts)[*] Verschiedene Hinweise und Warunungen im Updater beseitigt[*] Verschiedene Optimierungen an der internen Struktur des Updaters

Aktualisierung 19.8.2009
[+] Der Updater kann nun wieder unter D2006/TD kompiliert werden
[+] Die Versionsermittlung über das Erstellungsdatum wird nicht mehr automatisch unterstützt
[+] Statusanzeige für den Logger eingeführt

Aktualisierung 17.8.2009
[+] Die Archive werden nun Komprimiert abgespeichert
[+] Die Logginginformationen auf Ressourcestrings umgestellt
[+] Hilfe in den Composer integriert[*] Dateistruktur angepasst (Versionsinformationen sind nun separat)[*] Bei der Execute Option, können nun auch mehrere Startparameter hinterlegt werden, diese sind durch <RETURN> zu trennen.
 
Benutzerbild von sx2008
sx2008

 
Delphi 2007 Professional
 
#2
  Alt 16. Aug 2009, 19:22
Etwas zum Logger.
Ich würde daraus 3 Klassen machen:
* eine abstracte Basisklasse mit virtuellen Methoden
* eine FileLogger Klasse
* eine NullLogger KLasse

Delphi-Quellcode:
TWUSLogger = class
  protected
   fLogOpen: boolean;
   procedure WriteMsg(const aMessage: String); virtual;abstract;
  public
   constructor Create;
   destructor Destroy; override;
   procedure LogOpen; virtual;
   procedure LogClose; virtual;
   procedure LogWrite(const aMessage: String);
 end;

TWUSFileLogger = class
  strict private
  fLogfile: String;
  fLogStream : TStream;
  protected
   procedure WriteMsg(const aMessage: String); override;
  public
   procedure LogOpen; override;
   procedure LogClose; override;
   property LogFile: String read fLogfile write SetLogfile;
 end;

TWUSNullLogger = class
  protected
   procedure WriteMsg(const aMessage: String); override; // leere Methode
end;
Damit lässt sich das Logging System später leicht ausbauen.
  Mit Zitat antworten Zitat
WebUpdate System
 
#3
  Alt 16. Aug 2009, 19:33
Hallo sx2008,

könntest Du vielleicht eine Implementierung der drei Klassen vornehmen, ich würde diese dann in der Unit entsprechend austauschen.

Btw: für was sind diese drei Klassen gedacht und welche müsste Wissen, wie zu loggen ist?

Aber die Idee ist nicht schlecht, mit dem Empty Logger, so braucht man die Execute Methode nur einmalig zu implementieren und Sie kann auch die aktuelle Applikation mit Benutzerrechten restarten, ohne einen speziellen Logeintrag zu erzeugen.
  Mit Zitat antworten Zitat
WebUpdate System
 
#4
  Alt 17. Aug 2009, 23:48
Das Update III des WUS ist nun Verfügbar. Die folgenden Neuerungen wurden implementiert. Der Downloadlink wurde im 1. Post aktualisiert. Hilfreiche Hände, welche gerne mitentwicklen möchten um das Projekt zum Erfolg zu führen, sind gerne gesehen und können sich jederzeit melden.

Aktualisierung 17.8.2009
[+] Die Archive werden nun Komprimiert abgespeichert
[+] Die Logginginformationen auf Ressourcestrings umgestellt
[+] Hilfe in den Composer integriert[*] Dateistruktur angepasst (Versionsinformationen sind nun separat)[*] Bei der Execute Option, können nun auch mehrere Startparameter hinterlegt werden, diese sind durch <RETURN> zu trennen.
  Mit Zitat antworten Zitat
WebUpdate System
 
#5
  Alt 19. Aug 2009, 22:25
Hallo Zusammen,

anbei die aktualisierte Version 20090819 des WUS. Folgendes hat sich geändert:

[+] Der Updater kann nun wieder unter D2006/TD kompiliert werden
[+] Die Versionsermittlung über das Erstellungsdatum wird nicht mehr automatisch unterstützt
[+] Statusanzeige für den Logger eingeführt

Das kompilieren, heißt kompilieren. Es wurde nicht darauf getestet, daß die Widestrings und Ansistrings auch zwischen den Umgebungen funktionieren. Vielleicht könnte dies jemand machen und für etwas D2006/TD kompatibilität sorgen. Der Composer (als .EXE) ist übrigens unter D2009 kompiliert und damit voll Unicodefähig.


Könnte jemand den untenstehenden Code bitte prüfen und verbessern? Er soll aus dem Applikationsdirektory und dem Pfad der neuen Datei den Zielordner ermitteln und zur Verfügung stellen. Beispiel:
AppDir = 'c:\programme\mycompany\mysoftware'
NewFile = 'bin\myNew.Exe'

soll zu
'c:\programme\mycompany\mysoftware\bin\myNew.Exe'

werden. Die Ermittlung des Updatepfads ist ja eine grundlegende Funktion, bitte mal zu prüfen und, falls Fehler, zu berichten und zu verbessern (und hier in diesen Thread posten) danke.

Delphi-Quellcode:
function CombineDirectory(aDirectory, aRelativePath: String): String;
var
  LD: integer;
begin
  result := '';
  while copy(aRelativePath, 1, 3) = '..\do
  begin
    aDirectory := ExcludeTrailingPathDelimiter(aDirectory);
    ld := LastDelimiter('\', aDirectory);
    Delete(aDirectory, ld+1, length(aDirectory) - ld);
    aRelativePath := copy(aRelativePath, 4, length(aRelativePath) - 3);
  end;

  aDirectory := ExcludeTrailingPathDelimiter(aDirectory);
  if copy(aRelativePath, 1, 2) = '.\then
    result := aDirectory + '\' + copy(aRelativePath, 3, length(aRelativePath) - 2)
  else
    if not (aRelativePath[1] in ['\', '.']) then
      result := IncludeTrailingPathDelimiter(aDirectory) + aRelativePath
    else
      if aRelativePath[1] = '\then
        result := aDirectory + aRelativePath;
end;

Der Updatelink, wurde im 1. Post angepaßt.
  Mit Zitat antworten Zitat
HiWieGehts

 
Delphi 10.4 Sydney
 
#6
  Alt 20. Aug 2009, 08:29
Hallo WUSler,
schaffe es im Moment zeitlich nicht hier mitzuentwickeln möchte aber das Ganze weiterverfolgen.
Ein paar Ideen/Anregungen:
- In der Hilfe wird empfohlen, die Kongfig-Datein unter .cfg zu speichern. Diese Erweiterung wird aber schon von anderen Programmen verwendet. Mein Vorschlag: z. B. .wus als Erweiterung verwenden. Damit kann diese Erweiterung registriert und durch einen Klick/Doppelklick (je nach Systemeinstellung) im Explorer auf eine KonfigDatei der Composer gestartet werden. Im zugehörigen OpenDlg sollte diese Erweiterung ebenfalls angegeben werden.
- Der Name der aktuellen Konfig-Datei sollte angezeigt werden (z. B. Fenstertitel).
- Dzt. gibt es ein herrliches Durcheinander von Englisch und Deutsch. Vielleicht sollte gleich eine mehrsprachige Entwicklung durchgeführt werden und eine Umschaltung zwischen den Sprachen möglich sein.
- Die beiden Fenster WUS Options und WUS Archive sollten in WUS Composer als TabControl integriert werden und nach Open Config bzw. New Config angezeigt bzw. mit den Daten gefüllt werden.

Das wars vorerst einmal - muss leider abbrechen und mich anderen Dingen zuwenden - z. B. defekter Wasserhahn.

LG
  Mit Zitat antworten Zitat
WebUpdate System
 
#7
  Alt 20. Aug 2009, 22:22
Hallo HiWieGehts,

yep, hab ich mir schon gedacht. Das ganze Projekt leidet etwas, an habe keine Zeit. Mir geht es da leider nicht anders. Aber ich möchte halt mein anderes Projekt mit einer Updatefunktion ausstatten, deswegen bin ich hier noch am rödeln...

Ja, ich empfehle die Endung .CFG für die Konfig Dateien, dies ist aber Geschmackssache und ich möchte hier den Entwickler nicht in seiner Freiheit einschränken. Aber dies kann man selbstverständlich diskutieren. Wenn man ein neues Updatepackage erstellt, empfielt es sich, ein neues Verzeichnis hierfür anzulegen, da die Erstellung der Archive und des Updatefiles in das selbe Direktory kopiert werden. Aber das ist auch dem Entwickler überlassen. Wir können aber gerne über eine solche Funktion, inkl. Registrierung der Dateiendung diskutieren und vielleicht findet sich auch jemand, der dies Implementiert. Also, ich bin in dieser Richtung auch offen.

Aktuell darf man auch nicht vergessen, daß auch die Updateliste (i.a.R.) eine Erweiterung braucht, hierführ nehme ich dann schon mal gern die Endung .WUS .

Habe auch überlegt, ob es nicht Sinnvoll ist, das Versionsdatum in der Titelleiste mitzuführen. Für die Konfiguration, sehe ich aktuell keinen großen bedarf, da man sich ja hinsetzt um eine spezielle Konfiguration zusammenzustellen, welche man gerne verteilen möchte. Und hier, weiß man doch was man konfigurieren möchte... oder? Wenn jemand findet, daß dies Sinnvoll ist, ist er gerne eingeladen einen entsprechenden Codebeitrag zur Verfügung zu stellen. Alternativ kann dann auch ein neuer, peppiger Composer gepostet werden.

Tja, das Denglish, habe schon angefangen, die Ressourcenstrings in die WUSConstants auszulagen, ist aber noch nicht fertig. Da müsste ja dann auch noch das setzen der Texte erfolgen. Vielleicht könnte dies ja jemand übernehmen und den geänderten Code für den Composer zur Verfügung stellen. Ich bin aktuell am Executor, eines der Herzstücke neben der Routine CombineDirectory. Also aktuell ändert sich am Composer von meiner Seite eher nichts.

Die Umschaltung zwischen verschiedenen Sprachen finde ich eher für den Updater (bei Fehlermeldungen) Sinnvoll, da hier der Endanwender mit den Meldungen konfrontiert wird. Denke für den Entwickler, welcher nur die Konfiguration erstellt und sie dann zur Verfügung stellt, ist es leicher zuzumuten, daß er den Dialog nicht in seiner Muttersprache serviert bekommt, als den Enduser, den das ganze unvorbereitet trifft. Aber natürlich hab ich hier nichts gegen, nur mir fehlt die Zeit und möchte gerne die Grundfunktionalitäten langsam auf die Reihe bekommen.

Stimmt dies wäre eine Idee, die Dialoge in ein PageControll zu packen. Aber ehrlich, ich komme aktuell nicht dazu.

Schöne Grüße
  Mit Zitat antworten Zitat
WebUpdate System
 
#8
  Alt 26. Aug 2009, 23:26
Die aktuelle Gamma V bietet einiges an Verbesserungen, wenn auch noch einiges fehlt. Viel wurde im Bereich des Updates gemacht, vorallem einiges an Codeverbesserungen von den Hauptklassen. Der Installer, als Klasse fehlt noch, ebenso wie die .EXE und .DLL Version. Implementiert wurde bspw. die Komprimierung der Dateien und die Hinterlegung eines passenden Hashcodes. Der Timestamp wird zur Verifizierung ebenso in die Archive mit integriert. Der Downloadlink befindet sich im ersten Post.

Aktualisierung 26.8.2009
[+] Der Executor wurde implementiert, aktuell noch ohne Einbindung in den Installer
[+] Hashcode für die Dateien Implementiert
[+] Für das Archiv wird jetzt auch eine Prüfsumme gebildet[*] Die Mengentypen TWUSUpdateModes und TWUSVersionsNumberGets gegen die einfachen Typen ersetzt.
[+] Die Releasenummer als Updatekriterium integriert[*] Routinen welche die Unit Windows verlangen in eine eigene Unit verlagert[*] Aktualisierte CSV Unit für Unicode eingebunden
[+] Loggingklassen implementiert
[+] Logging implementiert
[+] Wird jetzt ebenfalls die Updatelise komprimiert
[+] Dem Archiv wird der Zeitstempel der Updateliste hinzugefügt
[+] Prüfung auf Verfügbarkeit des Internets beim UpdateCheck und Download integriert[*] Es werden nur definierte Dateinamen vergeben[*] Weitere Anpassungen an D2006/TD vorgenommen (Elimation impliziter TypeCasts)[*] Verschiedene Hinweise und Warunungen im Updater beseitigt[*] Verschiedene Optimierungen an der internen Struktur des Updaters

Nach wie vor, werden noch Freiwillige gesucht, welche gerne mitarbeiten, optimieren und testen möchten. Damit das WUS einfach in eigene Anwendungen integriert werden kann und es stabil und zuverlässig läuft.
  Mit Zitat antworten Zitat
waldforest

 
Delphi XE3 Enterprise
 
#9
  Alt 27. Aug 2009, 07:16
Hallo,
finde das Thema interessant, nutze aber noch delphi7.
Kann (wenn wie) WebUpdate auch unter Delphi7 genutzt werden ?
Ist dies überhaupt
mfg
  Mit Zitat antworten Zitat
WebUpdate System
 
#10
  Alt 27. Aug 2009, 21:18
Hallo Waldforest,

prinzipjell sollte es mit wenig Aufwand auch an D7 anpassbar sein. Die Regions müssten entfernt werden, plus eine Routine, welche auf einen Record aufsetzt angepasst werden (Besonderheiten von D2006). Sonst noch, die Externen Standardmodule anpassen (Indy und ZLIB) an jeweils zwei stellen mit einer Compilerdirektive versehen, dann sollte es funktionieren.

So lange nur der Standardzeichensatz verwendet wird, sollte Unicode keine große Rolle spielen. Aber innerhalb von DACH, sollte dies auch nicht relevant sein.

Dann kannst Du es prinzipjell auch für D7 verwenden. Es wurde sonst keine (mir bekannte) Besonderheit von D2006 oder D2009 verwendet, welche das portieren erschwert.

Wenn Du es gerne anpassen möchtest, würd ich dich bitten uns die zugehörigen Anpassungen zur Verfügung zu stellen, damit auch andere das WUS unter D7 verwenden können. Ich selber bin nicht im Besitz von D7 (auch nicht von D2007), so daß ich hier kaum unterstützen kann.

Würde mich freun, wenn das WUS auch unter D7 läuft.

PS: Ansonsten über die .EXE, damit kannst Du dann Unabhängig vom Entwicklungssystem die Updatefunktion benutzen. Zuerst schaue ich aber, daß die Komponentenversion fertig wird
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 11:05 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