Update-Klasse

Alles rund um die Programmierung mit Qt
Antworten
ireas
Beiträge: 13
Registriert: 24. Juni 2010 13:50

Update-Klasse

Beitrag von ireas »

Hi!

Ich denke, jeder, der eine etwas umfangreichere, aber nicht zu große (Open-Source-)Anwendung entwickelt, hat das Problem: Wie verkaufe ich meinem Anwender Aktualisierungen? Ich würde mir hierzu eine Klasse wünschen, die folgende Funktionalität bietet.
  • Im Konstruktor gebe ich an, von welcher URL, in welchen Format, etc. pp. die Änderungen geholt werden sollen.
  • Eine Funktion checkForUpdates() überprüft, ob ein Update bereitsteht (inkl. Informationen wie Anzahl zu ändernder Dateien, Downloadgröße etc.).
  • Eine Funktion doUpdates() aktualisiert die Installation. (Dabei müssen eventuell sudo oder ähnliche systemspezifische Anwendungen verwendet werden.)
Einfacher wäre das natürlich über ein VCS, aber ich kann von meinem Otto-Normaluser nicht eine Git-Installation erwarten. Deshalb meine Fragen: Gibt es so eine (freie ;)) Klasse schon? Wenn nein, gibt es Standards, an denen ich mich für Neuimplementierung orientieren könnte? Oder muss ich alles von Grund auf neu machen? Auch wenn es letztendlich nicht so kompliziert sein sollte, stelle ich mir die Implementierung zeitaufwendig vor.

Grüße,
Robin
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Welche (Open-Source)-Anwendung macht so etwas?

Du willst einen Installer für Windows(XP-?!?), Mac, Linux (Debian, RedHat, Ubutunu...) usw. schreiben?

Tut es ein einfacher Hinweis nicht auch?
guenni81
Beiträge: 134
Registriert: 29. Juli 2006 02:22

Beitrag von guenni81 »

Hallo,
zumindest unter Linux wirst du dir hiermit keine Freunde machen. Dort sollte es wenn es richtig gemacht werden soll über das Paket System laufen.
Hier gab es mal vor einiger Zeit ein Projekt, aber in welchem Zustand dies sich befindet bzw. überhaupt funktioniert wie es soll kann ich dir nicht sagen. Hier mal der Link: http://sourceforge.net/projects/qupdater/
mfg
Günni
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Was spricht dagegen die neue Binary runterzuladen und einfach die alte zu ersetzen? Entsprechende Rechte kann man sich ja von Benutzer holen. Problem ists nur, wenn installierten Libs zu alt sind. Aber das kann man ja vorher pruefen.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ich würde es nicht passiv im Hintergrund machen (also unbemekrt am User vorbei), sondern bei Programmstart (wie es z.B. firefox für seine Erweiterung macht) nach Aktualisierungen suchen, und dann dem User eine Mitteilung geben, dass eine neue Version vorhanden ist.
Ich würde jedoch 2 Optionen zum Deaktivieren einbauen, ich kenne mindestens einen User, der das abschalten können wollte :P
1) In den Programmoptionen
2) Direkt per configure-Option beim Kompilieren, damit man nicht belästigt wird, wenn man das ganze über ein Paketverwaltungssystem installiert.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Was spricht dagegen die neue Binary runterzuladen und einfach die alte zu ersetzen? Entsprechende Rechte kann man sich ja von Benutzer holen. Problem ists nur, wenn installierten Libs zu alt sind. Aber das kann man ja vorher pruefen.
Das es ziemlich kompliziert ist, und sich Distributoren für ernstzunehmende OS da scho gedanken drueber gemacht haben wie das zu lösen ist.

Weiterhin, wenn dein prgramm weniger bekannt ist, sollte bei jeder so einer Aktion auf nem halbwegs auf Sicherheit bedachten System die Alarmfunktionen ansprechen.

Um ueberhaupt festzustellen, ob ein update vorhanden ist, muss die App sich die Information beschaffen. Aka, sie telefoniert nach hause ! Userfreundliche Programme wuerden das eh nur nach Useraufforderung tun ("auf Updates prüfen" Menupunkt o.ä), trotzdem wär ned gewaehrleistet, das die anfrage durch die FW durchkommt.

Weiterhin brauchen Programme, die sowas untertützen, priviligierte Rechte ....

Unter Linux wär das elegant zu loesen ueber das Distributionseigene update System. Selbst für wichtige System-Updates muss der User da dieses System bemuehen, warum soll ein popliges Userprogramm dann den anspruch haben sich aus nichtpflegbaren Quellen selbst updaten zu wollen ?
Besser, nen repository für die SW pflegen, wenn das der user in seinen quellen einpflegt, setzt das eh vorraus das er dir vertraut.

Windows iss nen bissi ein anderes Kaliber, da gibts sowas ned ...
windows selber datet sich selbstaendig up wenn es kann ... ok.
Fuer Applikationen iss so nen system überhaupt ned vorgesehen. Da gibts noch ned mal nen richtiges Abhaengigkeits-Managment :-) Da fliegen teilweisse auch richtig Professionelle SW Anbieter auf die Nase.

Hier aktuelles Beispiel - nen Anbieter von Messoftware hat nen update rausgebracht und bei uns ueber Medien (CD's) verteilt.

Doof nur, das ding war gegen neue c++ runtimes gelinkt. Diese wurden zwar für normaluser scho laengst ueber das windowsupdate ausgeliefert, aber bei uns im system wurde dieses update geblockt, bzw wir kriegen eh eigene. Das installieren neuer runtimes ueber Installroutinen war auch geblockt, zumindest auf den meisten Rechnern :-) (Policies)
Man kann sich vorstellen, wieviel Freude die User, bzw dannach die Hotline hatten, nachdem die leute das Prog von der CD installieren wollten und dabei ganz lustige Meldungen kamen ^^

Also bei windows musst wahrscheinlich strikt nach der Zielgruppe unnerscheiden. Bedienst Du Professionelles Publikum, kannst dir so ne automatische updatefunktion eh sonstwohin stecken, dafuer wuerdest du nie ne Freigabe bekommen.

Bedienst du eher Privates Publikum, koennst du eh auf vertrauen pochen und deine User dann ausspionieren und verkaufen :-) Solltest aber auch damit rechnen, wenn du das updaten erzwingst, oder gar unsichtbar im hintergrund machst, dass es bei den Usern ned so gut ankommt.

Lieber einfach updates bauen und auf nem server zur verfügung stellen. Das sind die user gewoehnt, und macht am wenigsten Arbeit.

Ciao ...
ireas
Beiträge: 13
Registriert: 24. Juni 2010 13:50

Beitrag von ireas »

Moin!

Erstmal danke für eure zahlreichen Antworten. :)

@upsala: Auf jeden Fall Firefox. Da ich meine Software i. d. R. über APT installiere, bekomme ich das bei den anderen nicht direkt mit, aber bestimmt gibt es auch noch andere.

@guenni81: Ja, allerdings will ich mein Programm plattformübergreifend verbreiten. Das Programm sieht auf den ersten Blick so ähnlich aus, wie ich das vorgehabt hätte.
RHBaum hat geschrieben:Lieber einfach updates bauen und auf nem server zur verfügung stellen. Das sind die user gewoehnt, und macht am wenigsten Arbeit.
Gut, dann werde ich das wohl für die Windows-Nutzer etc. so und für APT-kompatible Linuxer über ein Launchpad-Repository machen.

Grüße,
Robin
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

@RHBaum jup stimme ich dir zu. Nach Hause telefonieren klingt immer verdächtig, ist aber die einzige Möglichkeit immer bei allen Rechnern auf den aktuellsten Stand mit der Software zu bleiben. Nicht alle User kümmern sich um ihre Updates.

Das Problem kann man übrigends auch von der anderen Seite lösen. Du als Softwareanbieter hast Zugang zu allen Rechner und installierst oder löschst deine Software wie es gebraucht wird. Wer ein paar IT News verfolgte weis was ich meine ;)



Aber ja, mach es über das Packetmanagement deiner Distrie.
Antworten