Download via FTP -> Automatisches Software Update mit QT4
Download via FTP -> Automatisches Software Update mit QT4
Hi,
ich bin gerade dabei eine Funktionalitaet zu implementieren, die es meiner Anwendung erlaubt auf einem ftp server nach einer neueren Version zu suchen und gegebenfalls die neue version downloadet.
so weit so gut....
weiss einer wie ich meine aktuelle anwendung durch die neu gedwonloadete ersetzten kann, also aus dem laufenden betrieb..
aktuelles binary ueberscheiben... dann restart der laufenden anwendung... aber wie????
geht das mit QProcess ????
Der user soll z.b auf den Button "Jetzt neu starten" druecken und dann soll die aktuelle anwendung beendet werden aber danach gleich die neue aktuallisierte version gestartet werden...
Gruss,
Nando
ich bin gerade dabei eine Funktionalitaet zu implementieren, die es meiner Anwendung erlaubt auf einem ftp server nach einer neueren Version zu suchen und gegebenfalls die neue version downloadet.
so weit so gut....
weiss einer wie ich meine aktuelle anwendung durch die neu gedwonloadete ersetzten kann, also aus dem laufenden betrieb..
aktuelles binary ueberscheiben... dann restart der laufenden anwendung... aber wie????
geht das mit QProcess ????
Der user soll z.b auf den Button "Jetzt neu starten" druecken und dann soll die aktuelle anwendung beendet werden aber danach gleich die neue aktuallisierte version gestartet werden...
Gruss,
Nando
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Ich schätze, so was geht nur mit einem kleinen Trick, indem du deine eigentliche Anwendlung als Bibliothke schreibst, und dann ein kleines Startprogramm. Wenn du denn die Bibliothek erst zu Laufzeit einbindest, solle es gehen, das du diese mit einer neuen Version überschreibst. Du übergibst denn deinem Hilsprogramm den Pfad, wo die neue Lib Temprät liegt. Dieses beenden denn die Bibliothek, überschreibt sie und starte sie neu. Das sollte mit jedem OS gehen. Hat aber so seine Tücken, da der Nutzer immer Systemreche benötigt. Besser währe es, eine Art Aktualisierungsdienst zu implementieren.
was meinst du denn genau mit Aktualisierungsdienst????
wir machen dass denn die anderen anwendungen???
die laufen ja auch nicht alle mit admin rechten..oder?
idee:
koennte ich nicht eine starter application schreiben,
die beim start einfach die eigentlich anwendung forked ..mit qprocess oder so.... und beim exit der anwendung den exit wert prueft und sich dann entweder kompleet beendet (shutdown) oder aber
die neue gedownloadedete version ueber die aktuelle kopiert und dann neu startet ?????
gruss,
nando
wir machen dass denn die anderen anwendungen???
die laufen ja auch nicht alle mit admin rechten..oder?
idee:
koennte ich nicht eine starter application schreiben,
die beim start einfach die eigentlich anwendung forked ..mit qprocess oder so.... und beim exit der anwendung den exit wert prueft und sich dann entweder kompleet beendet (shutdown) oder aber
die neue gedownloadedete version ueber die aktuelle kopiert und dann neu startet ?????
gruss,
nando
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
wenn du versucht als normale Nutzer nach c:\Programme\ bzw /usr/bin zu schreiben wird das nix. Also haste 2 Möglichkeiten. 1. Als Admin/Root arbeiten(nicht zu empfehlen) oder einen Dienst/Daemon im Hintergrund laufen lassen, der die benötigten Rechte hat. Die eigentliche Anwendung kann denn z.B. via TCP auf 127.0.0.1 kommunizieren. Irgendwo auf den MSDN Seiten gab es mal ein Artikel zu dem Thema. Oder du benutzte unter Windows MSI 3.1 geht aber erst ab Win 2000. Da kannste Aktualisierungen erstellen, die auch normale Nutzer installieren können. Dazu müssen diese denn aber digital signiert sein.(Die Aktualisierungen)
Wie wäre es mit einem Installationsprogramm in deinem Update, welches die laufende Applikation geregelt hinunter fährt? In dem Installationsprogramm könntest du z.B. auch die Benutzerrechte Prüfen und ggf zu einem anderen User wechseln (root, Administrator,...)
Schlimmstenfalls schreibste dem User ne MessageBox bitte alles speichern usw und schießt dann den laufenden Prozess deiner Applikation ab.
Schlimmstenfalls schreibste dem User ne MessageBox bitte alles speichern usw und schießt dann den laufenden Prozess deiner Applikation ab.
Moin,
mir ist immer noch nicht ganz klar, wieso ich als "normaler" user nicht meine Applikation (Binary) ueberschreiben darf??
Ich kann ja auch als "normaler" User die Software installieren...
Also unter Linux gibt es schon mal keine Probleme... Da kommt es eh darauf an, wohin bzw. mit welchen Rechten die Anwendung installiert wurde....
Werde das ganze die Tage unter Windows testen..
Bis jetzt mache ich das folgendermassen:
der user klickt auf 'nach updates suchen',
daraufhin wird eine ftp verbindung (QFtp) aufgemacht und auf einem ftp server eine datei 'version.txt' runtergeladen. darin enthalten ist nur ein versionsstring der aktuellesten version.
dieser wird dann mit der aktuellen (hardcodierten) version ueberprueft....
ist die aktuelle version obsolete, kann der user die neuste version downloaden (wieder mit ftp).....
die gedwonloadete version wird erst einmal unter einem anderen namen gespeichert und der user kann dann auf restart druecken.
der trick ist, ich starte mein programm nicht direkt, sondern ueber einen kleinen "starter"... der quasi den prozess startet und den exit wert beim beenden ueberprueft.... drueckt der user restart wird ein anderer exit werd returned als beim "normalen" beenden und die starter applikation wird dann das programm neu starten.
vor jedem neu start wird ueberprueft, ob eine neuere version (download) vorliegt und gegebenfalls diese auf die original kopiert.....
das funktioniert auch alles schon soweit, allerding hab ich es noch nicht unter windooof probiert...... werde es aber die tage machen und dann bericht erstatten
gruss,
nando
mir ist immer noch nicht ganz klar, wieso ich als "normaler" user nicht meine Applikation (Binary) ueberschreiben darf??
Ich kann ja auch als "normaler" User die Software installieren...
Also unter Linux gibt es schon mal keine Probleme... Da kommt es eh darauf an, wohin bzw. mit welchen Rechten die Anwendung installiert wurde....
Werde das ganze die Tage unter Windows testen..
Bis jetzt mache ich das folgendermassen:
der user klickt auf 'nach updates suchen',
daraufhin wird eine ftp verbindung (QFtp) aufgemacht und auf einem ftp server eine datei 'version.txt' runtergeladen. darin enthalten ist nur ein versionsstring der aktuellesten version.
dieser wird dann mit der aktuellen (hardcodierten) version ueberprueft....
ist die aktuelle version obsolete, kann der user die neuste version downloaden (wieder mit ftp).....
die gedwonloadete version wird erst einmal unter einem anderen namen gespeichert und der user kann dann auf restart druecken.
der trick ist, ich starte mein programm nicht direkt, sondern ueber einen kleinen "starter"... der quasi den prozess startet und den exit wert beim beenden ueberprueft.... drueckt der user restart wird ein anderer exit werd returned als beim "normalen" beenden und die starter applikation wird dann das programm neu starten.
vor jedem neu start wird ueberprueft, ob eine neuere version (download) vorliegt und gegebenfalls diese auf die original kopiert.....
das funktioniert auch alles schon soweit, allerding hab ich es noch nicht unter windooof probiert...... werde es aber die tage machen und dann bericht erstatten
gruss,
nando
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Blödsinn. Bei Win und beim Mac gibt es im $Home-Verzeichnis ein Applikationsverzeichnis, was soll daran verkehrt sein? Irgendwo muss es doch hin. Unter Win finden sich die Programme dann ganz normal im Startmenü, beim Mac müssten sie im Programm-Ordner auftauchen. Ob bei Linux die $Home-Verzeichnisse jetzt etwas aufgeräumter sind, kann ich nicht sagen, hatte schon lange keins mehr unter meinen Fingern 
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten: