Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   SJ Updater Utils 0.6 beta 1 - Updater für eigene Projekte (https://www.delphipraxis.net/139102-sj-updater-utils-0-6-beta-1-updater-fuer-eigene-projekte.html)

jaenicke 23. Aug 2009 22:44


SJ Updater Utils 0.6 beta 1 - Updater für eigene Projekte
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo!

Nach den SJ Config Utils zur Konfiguration von eigenen Projekten stelle ich dieses Projekt vor, mit dem man die eigenen Anwendung einfach aktualisieren kann. Ohne zusätzliche Exe und mit korrekter Umsetzung mit der UAC unter Vista / 7.

Wichtig:
Sicherheitsmerkmale sind noch nicht vorhanden. Die downgeloadeten Updates werden also noch nicht geprüft!

Features:
  • Direkte Integration in die Exe ohne zusätzliche DLLs oder Exe-Dateien.
  • Anzeige des UAC-Prompts unter Vista
  • Fortschrittsanzeige (noch nicht ganz flüssig)
  • Demo-Projekt inkl. Update-Demo auf meinem Server
  • Versionsangabe, damit Dateien nur bei Bedarf geladen werden
Lizenz:
MPL 1.1 oder LGPL 2.1 oder GPL 2.0 (oder höher)

Installation und Verwendung:
Die Zip-Datei auspacken und die Units dem Projekt hinzufügen. Dann die AppGuid in der Unit SJUpdaterUtils.pas ändern und die unter "Formatdefinitionen - Dateiliste online" beschriebene Updatedatei erstellen und hochladen, zusätzlich eine Datei mit der aktuellen Versionsnummer.

Dann muss nur noch wie im Demoprojekt eine Instanz der Klasse TSJAutoUpdater erstellt werden und die Eigenschaften zugewiesen werden. CheckForNewVersion prüft auf eine neue Version, StartUpdate startet dann das Update.

Meine Beispieldateien für die Demo sehen so aus (zum Test einfach einmal z.B. die Readme.txt löschen):
Zitat:

Zitat von versioninfo
1.6

Getestete Delphiversionen:
Delphi 2006 / Turbo Delphi, Delphi 2007 (andere Versionen funktionieren derzeit definitiv nicht!)
Indy 10 wird benötigt!

Getestete Windowsversionen:
2000, XP, Vista, 7
Windows 9x/ME wird definitiv nicht unterstützt. Der Aufwand aufgrund der unterschiedlichen Architektur wäre zu groß.

Bekannte Probleme:
  • Es werden kaum Fehlerprüfungen und keine Sicherheitsprüfungen durchgeführt!

Das Projekt habe ich auch hier vorgestellt:
http://www.delphi-forum.de/viewtopic.php?p=575428
http://forum.delphi-treff.de/showthread.php?p=198233

Schönen Gruß,
Sebastian

toms 26. Aug 2009 20:50

Re: SJ Updater Utils 0.5 alpha 1 - Updater für eigene Projek
 
Hallo Sebastian

Woran liegt es, dass es derzeit noch inkompatibel zu XP (/2000) ist?

jaenicke 26. Aug 2009 21:20

Re: SJ Updater Utils 0.5 alpha 1 - Updater für eigene Projek
 
Dass ich XP auf keinem Rechner mehr richtig installiert habe und es deshalb im virtuellen PC gerade erst gemerkt habe. Anscheinend klappt die alte Rechteverwaltung nicht so wie ich es für Vista gemacht habe, denn es kommt ein "Zugriff verweigert", ich weiß noch nicht genau wo. Ich werde das dann in einem virtuellen PC mit Turbo Delphi noch näher untersuchen.

Das heißt ich werde es natürlich noch so anpassen, dass es ab zumindest Windows 2000 funktioniert. Im Moment habe ich aus beruflichen Gründen allerdings wenig Zeit. Deshalb ziehen sich alle Projekte stark in die Länge. Aber ich kümmere mich noch darum.

jaenicke 20. Sep 2009 16:04

Re: SJ Updater Utils 0.5 alpha 1 - Updater für eigene Projek
 
Es gibt eine neue Version.

Neuerungen:
  • Windows 2000 und XP werden auch voll unterstützt.
  • Die Meldungen während des Updates können angepasst werden
  • Die Anwendungsspezifische Guid funktioniert jetzt auch, wenn die Units zentral für mehrere Projekte verwendet werden
  • Unterstützung von Delphi 2007 wurde erfolgreich getestet
  • Durch eine Versionsangabe kann man jetzt erreichen, dass Dateien nur dann erneut geladen werden, wenn diese sich seit der installierten Version geändert haben (Idee von Nersgatt aus dem DF)
  • Das Anlegen und Löschen von Ordnern funktioniert jetzt korrekt
Ach ja: Und nebenbei habe ich Redundanzen entfernt und den Code etwas überarbeitet und übersichtlicher gestaltet. Zudem habe ich den Code besser kommentiert.

jaenicke 11. Mai 2010 07:49

Re: SJ Updater Utils 0.5 alpha 4 - Updater für eigene Projek
 
Es gibt wieder eine neue Version. Neue Features gibt es nicht, es sind aber einige Fehler korrigiert.

Es werden jetzt nicht unnötig viele Fenster beim Update angezeigt. Außerdem läuft der Updater ein wenig flüssiger (wenn auch noch nicht so wie es sein sollte).

Zwei Probleme sind noch nicht gelöst:
Erstens hängt das Programm, wenn die Internetverbindung schlecht ist und beim Update abbricht.
Zweitens werden Textdateien nicht "as-is" heruntergeladen sondern kommen (bei meinem Server) mit UNIX-Zeilenumbrüchen an.

Ich plane allerdings ohnehin gepackte Updatedateien zu verwenden, das erschlägt dann gleich mehrere Probleme (CRC-Check + unveränderte Dateien). Wann ich dazu komme weiß ich allerdings noch nicht.

himitsu 11. Mai 2010 08:01

Re: SJ Updater Utils 0.5 alpha 4 - Updater für eigene Projek
 
Zitat:

Zitat von jaenicke
Zweitens werden Textdateien nicht "as-is" heruntergeladen sondern kommen (bei meinem Server) mit UNIX-Zeilenumbrüchen an.

Ich hab jetzt nicht nachgesen, welche Internetkomponenten du verwendest, aber wenn du alle Dateien strikt als "Binär" runterlädst, dann sollten die Zeilenumbrüche erhalten bleiben.

jaenicke 11. Mai 2010 08:12

Re: SJ Updater Utils 0.5 alpha 4 - Updater für eigene Projek
 
Indy, IdHttp, das ist es ja was mich wundert. Eigentlich sollte das da gar nicht passieren, ich bin noch dabei zu untersuchen was da eigentlich passiert. Denn es kann ja sein, dass das nur am Webserver liegt und der das so ausliefert. Deshalb die Betonung auf meinen Webserver.

Ich weiß allerdings nicht, ob ich das irgendwie durch Accept-Parameter des Requests oder sowas ändern kann. Letztlich ist aber die einzige sicherere (und ohnehin sinnvollste) Variante gepackte Dateien zu verwenden. Ich bin bisher nur noch nicht dazu gekommen eine Open Source Packlösung zu integrieren (oder direkt die von Indy zu benutzen, mal sehen).

himitsu 11. Mai 2010 08:22

Re: SJ Updater Utils 0.5 alpha 4 - Updater für eigene Projek
 
Diese Änderung selber führt der Server durch, obwohl ich sowas eigentlich eher von FTP kenn, als von HTML ... wenn da eine Datei im "Textmodus" versendet/empfangen wird, dann ließt der Server diese Datei Zeilenweise aus und fügt seine eigenen Zeilenumbrüche wieder ein.

Hast du mal nachgesehn, ob die Dateien auch wirklich mit deinem Windows-Zeilenumbruch hochgeladen wurden?

jaenicke 11. Mai 2010 08:35

Re: SJ Updater Utils 0.5 alpha 4 - Updater für eigene Projek
 
Argh, danke, mein Releaseskript nimmt den Textmodus bei Textdateien zum Upload :wall: (ein Klick und das Projekt wird neu erstellt, das Setup und die Pakete erstellt und alles hochgeladen). Das habe ich bisher nur bei keinem Projekt bemerkt, weil da nie Textdateien dabei waren.

Also alles ok, es funktioniert. Bleibt nur noch das Problem mit dem Abbrechen der Internetverbindung. Dazu muss ich auch diesen Vorgang "parallelisieren" in einem eigenen Thread, das ist dann schon alles.

jaenicke 12. Mai 2010 20:00

Re: SJ Updater Utils 0.5 beta 1 - Updater für eigene Projekt
 
Es gibt eine neue Version, jetzt mit recht flüssiger Fortschrittsanzeige, ein Bug bei der Abstimmung via IPC ist behoben, außerdem gibt es komplette Unterstützung der aktuellsten Indy Version (alte ab Version 10 gehen über einen Compilerschalter aber weiterhin auch). Diese Version veröffentliche ich als Beta 1, da diese soweit stabil läuft auf den angegebenen Plattformen und mit den angegebenen Delphiversionen.

Die Beta 2 wird dann alle geplanten Features wie eine Packfunktion und parallelisierte Downloads enthalten.

Leider konnte ich auch nach längerer Fehlersuche den Fehler unter Delphi 2010 nicht finden. Es funktioniert also derzeit mit Delphi 2009 und 2010 nicht. Ich kann nur vermuten, dass da irgendetwas am Speicher oder bei der Threadsynchronisation schief geht. Das untersuche ich noch, kann aber keine rasche Lösung in Aussicht stellen, da ich wirklich noch keine Idee habe was das Problem ist.

Was passiert: Die erste Instanz stürzt ab nachdem das Update eigentlich bereits durch ist. Beim Beenden gibt es dann eine Exception beim Aufräumen nach OnDestroy des Formulars. Zudem gibt es einen Zugriffsfehler bei den Updateroutinen, wenn diese bei Indy aktiviert sind, vermutlich beim Zugriff auf die Fortschrittsanzeige. Das lässt mich auf die genannten beiden Probleme als mögliche Ursache tippen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr.
Seite 1 von 2  1 2      

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