Seite 1 von 1

Update seiner Software

Verfasst: 19. Juni 2012 14:25
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

Re: Update seiner Software

Verfasst: 26. Juni 2012 11:26
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

Re: Update seiner Software

Verfasst: 27. Juni 2012 19:06
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

Re: Update seiner Software

Verfasst: 27. Juni 2012 20:37
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).

Re: Update seiner Software

Verfasst: 28. Juni 2012 15:19
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 ...

Re: Update seiner Software

Verfasst: 29. Juni 2012 15:03
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 =)

Re: Update seiner Software

Verfasst: 30. Juni 2012 19:51
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

Re: Update seiner Software

Verfasst: 23. Juli 2012 09:52
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

Re: Update seiner Software

Verfasst: 24. Juli 2012 11:56
von ScyllaIllciz
Das klingt interssant, danke für die Info!