AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte SJ Updater Utils 0.6 beta 1 - Updater für eigene Projekte
Thema durchsuchen
Ansicht
Themen-Optionen

SJ Updater Utils 0.6 beta 1 - Updater für eigene Projekte

Ein Thema von jaenicke · begonnen am 23. Aug 2009 · letzter Beitrag vom 9. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von jaenicke
jaenicke
Registriert seit: 10. Jun 2003
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 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
Angehängte Dateien
Dateityp: zip SJUpdaterUtils0.6beta1.zip (366,1 KB, 52x aufgerufen)
Dateityp: zip SJUpdaterUtils0.6beta1_src.zip (64,0 KB, 50x aufgerufen)

Geändert von jaenicke (27. Mär 2011 um 22:59 Uhr)
 
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#2
  Alt 26. Aug 2009, 21:50
Hallo Sebastian

Woran liegt es, dass es derzeit noch inkompatibel zu XP (/2000) ist?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#3
  Alt 26. Aug 2009, 22:20
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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#4
  Alt 20. Sep 2009, 17:04
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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#5
  Alt 11. Mai 2010, 08:49
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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#6
  Alt 11. Mai 2010, 09:01
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#7
  Alt 11. Mai 2010, 09:12
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).
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#8
  Alt 11. Mai 2010, 09:22
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?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#9
  Alt 11. Mai 2010, 09:35
Argh, danke, mein Releaseskript nimmt den Textmodus bei Textdateien zum Upload (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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#10
  Alt 12. Mai 2010, 21:00
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.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:16 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