Update seiner Software

Alles rund um die Programmierung mit Qt
Antworten
darkshine
Beiträge: 102
Registriert: 20. August 2010 11:39

Update seiner Software

Beitrag von darkshine »

Hallo Forum,

heutzutage ist es ja quasi selbstverständlich, dass es eine automatisches Update gibt, wenn eine neue Version rauskommt.
Das möchte ich auch gerne in meinem Qt-Programm einbauen.
Gibt es hier irgendwelche Vorlagen wie man so etwas am Besten angeht?
Ich habe dazu leider nichts passendes bei Google gefunden
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

Re: Update seiner Software

Beitrag von strige »

Hi,
Nun ich habe sowas selber noch nie gemacht, aber kann mir vorstellen wie das funktionieren könnte:

Hast irgendwo einen Server, auf das dein Programm zugreift und z.B. über eine txt datei die aktuelle ProgrammVersion überprüft.
Dann ganz einfach:

Code: Alles auswählen

if (aktuelleVersion > currentVersion){
   download_installer();
   start_installer();
}
Wäre mein erster Ansatz, vielleicht konnte ich Dir weiterhelfen.
Lg Strige
Naahmi
Beiträge: 3
Registriert: 11. November 2011 10:08

Re: Update seiner Software

Beitrag von Naahmi »

Es gibt viele ansatzweißen ein Updater zu erstellen. Was du machen könntest ist ne Revisionsnummer auf dem Client zu speichern und eine Datei mit der Revisionsnummer die auf einem Webserver liegt. Die Datei lädst du per QNetworkManager runter und ließt sie aus, dann kannst du sie vergleichen wie strige es z.b geschrieben hat.
Das wäre die einfachste art die es gibt. Man kann es natürlich auch erweitern das man eine XML Datei auf dem Server hat, jede dll hat seine eigene revisionsnummer oder md5 hash und man überprüft aller 2 stunden oder pro programmstart die Nummern und entscheidet dann was das Programm tun soll.

Vorlagen im den Sinne gibt es soweit ich weiß keine. Vieleicht gibt es nen Open Source Updater weiß ich leider nicht aber der programmcode an sich ist nicht all zu schwer zu schreiben.

Gruß
Naahmi
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Update seiner Software

Beitrag von franzf »

Gibt es unter Windows nicht das schöne Problem, dass Dateien (insbesondere DLLs), die gerade geladen sind, nicht einfach überschrieben werden können? Falls das noch so ist, wird das ganze problematischer. Man muss dann prüfen obs ein Update gibt, User fragen ob er will, falls ja Programm beenden und aus dem Shutdown heraus den Updater starten, der dann selber das Programm (nach erfolgreichem Update) wieder startet.
Evtl. Willst du auch noch den Zustand vor dem Update speichern (damit der User da weiter machen kann, wo er vor dem Update aufgehört hat).
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: Update seiner Software

Beitrag von RHBaum »

heutzutage ist es ja quasi selbstverständlich, dass es eine automatisches Update gibt, wenn eine neue Version rauskommt.
Für programme die sicherheitsrelevant sind, ja ....
fuer anderes nein !!!

Was nutzt du denn so, was sich automatisch updated, ausser:
- Spiele, die wollen sowieso aus anderen grunden vollzugriff auf dein System haben, da iss autoamtisches update oft nen guter Vorwand ...
- Systemprogramme / Programme die zum OS gehoeren
- Webbrowser und Co ...

Kenn zwar auch paar kandidaten.

Teamspeak 3 .... Aufgrund mangelnder Berechtigung funktioniert das da auch ned, und ich will auch nicht das es funktioniert.
Skype - wie TS3

Also geh nicht davon aus das es jeder will !

- Normal nutzen solche Programme nen Starter ... der zuerst die Updates checkt, ggf Updatet, und dann erst das eigentliche Programm startet ....
- Dlls kann man haendisch laden, d.h. ich kann zuerst die dll versionen checken, updaten und dann erst laden ... die exe krieg ich so natuerlich nicht. aber wennd die exe nur fuers updaten und starten von Code in ner Dll nutzt, brauchst die ned so haeufig zu tauschen ..
- Andere tools verwenden SystemDienste (unter windows) die mit admin rechten laufen und automatisch updaten, unabhaengig vom eigentlichen Programm ... (mozilla neuerdings)
- programme die sich selber updaten muessen/sollen, starten meist nen anderen Prozess /shell der ne Datei ueber die Exe drueberkopiert, in der hoffnung, das der eigene Prozess eher stirbt, als der Copybefehl greift .... bzw. machen andere schmutzige sachen ....

Wohin installierst du dein programm normal ?
in windows unter "Programm Files" ? dann bremst dich das berechtigungs-system bei jeder ernstzunehmenden Installation eh aus ... ^^ Dann kannst ihn lieber nen update zum selber downloaden und manueller installation mit Admin rechten bewegen!

Unter Linux solltest sowas generell dem Packetmanager ueberlassen ...
Und windows ... naja

Ciao ...
Naahmi
Beiträge: 3
Registriert: 11. November 2011 10:08

Re: Update seiner Software

Beitrag von Naahmi »

franzf hat geschrieben:Gibt es unter Windows nicht das schöne Problem, dass Dateien (insbesondere DLLs), die gerade geladen sind, nicht einfach überschrieben werden können? Falls das noch so ist, wird das ganze problematischer. Man muss dann prüfen obs ein Update gibt, User fragen ob er will, falls ja Programm beenden und aus dem Shutdown heraus den Updater starten, der dann selber das Programm (nach erfolgreichem Update) wieder startet.
Evtl. Willst du auch noch den Zustand vor dem Update speichern (damit der User da weiter machen kann, wo er vor dem Update aufgehört hat).
Dazu hat man ja die möglichkeit den Patcher entweder a) standalone zu machen oder b) nen installer bereitzustellen nach dem öffnen des installerst kannst du deine QApplication auch killen somit wird dann keine dll mehr benutzt oder sonstiges =)
chom
Beiträge: 24
Registriert: 13. Januar 2012 20:02

Re: Update seiner Software

Beitrag von chom »

Normalerweise (bei vielen Programmen die ich kenne), ist es so, dass neben dem Programm auch ein Updater existiert (unter Windows, unter Linux ist das unnötig, da macht das der Paketmanager).
Also:
Start -> Programm prüft ob aktuell -> wenn nein -> Updater öffnen und Programm schließen -> Updater lädt neues Programm runter -> Updater öffnet neues Programm und schließt sich selbst.

Was jedoch ist, wenn der Updater geupdetet wird weiß ich nicht ;)

MfG
Zonk
Beiträge: 51
Registriert: 17. September 2006 15:28
Kontaktdaten:

Re: Update seiner Software

Beitrag von Zonk »

Hallo,

Für Qt gibt es ein Projekt names "fervor", welches die in der Mac-Welt durch Sparkle gebotene Autoupdate-Funktionalität in Qt abbildet.
Die benötigte Autoupdate-Funktionalität war aber bisher nicht beinhaltet, nur das gesamte Update Framework drum herum, so habe ich diese dann hinzugefügt.
Meine Änderungen hat der Fervor-Maintainer vorerst unter einem eigenen Branch online gestellt, ich hoffe er integriert es noch in den Master-Branch:
https://github.com/pypt/fervor/tree/autoupdate

Man kann steuern ob man eine Update überspringen, abrechen oder updaten möchte. Es wird dann (falls das Update stattfindet):
1. das update File heruntergeladen und entpackt
2. alle bereits existierenden Dateien welche auhc im Update in neuere Version enthalten sind umbenannt (das ist unter Windows trotz geöffneter Dateien möglich)
3. die Anwendung neu gestartet (dann mit den korrekt benannten aktualisierten Dateien)
4. schlussendlich im Startup-Process der aktualisierten Anwendung alle nun nicht mehr gelockten umbenannten Dateien gelöscht.

Bei mir funktioniert das prima, allerdings habe ich es noch nicht auf anderen Systemen getestet und weiß nicht wie es sich verhält bei Installationen in Systemordner (hinsichtlich UAC)

LG,
Torben
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Re: Update seiner Software

Beitrag von ScyllaIllciz »

Das klingt interssant, danke für die Info!
Antworten