Auto-Update programmieren!

Elias177

Mitglied
Hey zusammne,

ich bin gerade dabei eine Software zu entwickeln und möchte in diese gerne einbauen das die Software automatisch geupdaded wird und da ich in diesen bereich kaum kenntnisse habe wäre es sehr hilfreich wenn mir das vlt. jemand erklären könnte oder mir einen link schicken könnte in dem es gut erklärt wird da ich auf Google nichts hilfreiches gefunden habe.(Ich weiß nicht wo ich dieses Thema einordnen soll)

MFG
Elias177

P.S. Meine Rechtschreibung ist nicht die Beste!
 

Thallius

Top Contributor
Wo ist das problem?

Du brauchst halt einen Server aufxdem die Updates liegen, dann schaust du bei jedem Programmstsrt nach ob auf diesem Server eine neue Version liegt und wenn ja, dann lädst du sie herunter unter installierst sie

Kompliziert wird dann nur die Sache zu sichern, so dass sich z.B. kein MIT dazwischen hängen kann und die eine Fake Software übermittelt

Gruss

Claus
 

Elias177

Mitglied
Okay,
Nur wie stelle ich das an ? Ich möchte ja auch das nur neue Dateinamen heruntergeladen werden und nicht alles neu.

(Vlt. Könnte mir jemand einen Beispiel Code senden )
 

Dompteur

Top Contributor
Stell einfach eine Info-Datei auf den Server, die die aktuelle Versionsnummer deiner Anwendung beinhaltet.
Die Info-Datei kann zusätzlich noch eine Liste aller Filenamen, die die Version benötigt enthalten. Sie sollte daher nur ein paar 100 Byte groß sein.

Diese Info-Datei liest du bei jedem Programmstart von Server und vergleichst sie mit der Version des laufenden Programms.
Wenn am Server etwas neues liegt, holst du dir die angeführten Files.
 

Elias177

Mitglied
Okay so weit alles gut nur ich habe leider keine Idee wie ich das programmieren soll da ich das noch nie gemacht habe und dies mein erstes mal ist.
 

Thallius

Top Contributor
Vielleicht solltest du erstmal 5 Schritte zurück gehen und dich mit Webservices beschäftigen. Sprich HTTP Requests, Authentifizierungen etc. Wenn Du davon überhaupt keine Ahnung hast kannst du dich damit erstmal ein paar Wochen beschäftigen bevor du wieder zu deinem Update Problem zurück kommst.
 

mihe7

Top Contributor
@Elias177 Dafür brauchst Du nicht unbedingt einen eigenen Server zu schreiben. Stell einfach zwei Dateien über einen stinknormalen Web-Server zur Verfügung: latest.txt und latest.zip. In latest.txt schreibst Du einfach die Versionsnummer rein. Zur Überprüfung, ob eine neue Version vorliegt, rufst Du natürlich latest.txt ab, liest die Versionsnummer aus und vergleichst diese mit der Versionsnummer Deiner Anwendung. Stellst Du fest, dass ein Update vorliegt, lädst Du latest.zip herunter und entpackst es. Thema erledigt.
 

Thallius

Top Contributor
@Elias177 Dafür brauchst Du nicht unbedingt einen eigenen Server zu schreiben. Stell einfach zwei Dateien über einen stinknormalen Web-Server zur Verfügung: latest.txt und latest.zip. In latest.txt schreibst Du einfach die Versionsnummer rein. Zur Überprüfung, ob eine neue Version vorliegt, rufst Du natürlich latest.txt ab, liest die Versionsnummer aus und vergleichst diese mit der Versionsnummer Deiner Anwendung. Stellst Du fest, dass ein Update vorliegt, lädst Du latest.zip herunter und entpackst es. Thema erledigt.

Naja man sollte schon zumindest ein wenig auf Sicherheit achten. Also das mindeste ist, dass in der Versionsdatei noch ein Hash mit einem Secret Key über die u downloadende Datei enthalten ist , der von der update Methode nach dem download gegen geprüft wird um sicher zu stellen, dass auch wirklich das Paket beim User angekommen ist, welches du auf deinen Server gelegt hast.
 

Elias177

Mitglied
Sollte ich dafür lieber eine extra .jar datei schreiben dann kann ich es so machen ich kann beim Start der Hauptsoftware das Update Programm starten und in der zeit zeit die Hauptsoftware schließen so dass wenn es ein update gibt es keine probleme gibt bei laufenter anwendung daten zu ändern ! Oder habt ihr andere ideen ?
Ich habe bis jetzt das auf einem Server eine Datei liegt in der die Version steht und ein Ordner wo die Update datei drinne ist die dann heruntergeladen wird.
 

Neumi5694

Top Contributor
Was das Versionsmanagement angeht …
Hast du schon über SVN nachgedacht?

Damit werden Dateiversionen mit dem Server abgeglichen und du sparst dir einen Haufen Arbeit. Das Rad muss nicht neu erfunden werden.


Schau dir mal TortoiseSVN an, installier dir einen Server und spiel etwas damit herum. Du kannst dann ja deinen eigenen (unsichtbaren) Client schreiben, der beim Endbenutzer die Daten abgleicht, ohne welche zurück auf den Server zu schreiben.
Für ein reines Java Programm ist das vielleicht etwas Overkill, aber es funktioniert. Schau eventuell mal nach, was die Jungs von JDownloader verwenden. Da lädst du ebenfalls nur eine Jar runter, die sich dann den ganzen Rest zieht (auch die Jar selbst kann upgedatet werden). So oder so musst du nicht alles selbst entwickeln unddich mit Hashes und was weiß ich was rumschlagen. Gerade in dem Bereich gibt's genug existierende Lösungen.

https://www.java.com/de/download/faq/deployment_toolkit.xml
 
Zuletzt bearbeitet:
Irgendwie muß das Programm ja mal zum "Kunden" gekommen sein. Über welchen Vertriebskanal kriegt es denn der Zielrechner? Lädt sich der Anwender das einfach irgendwo runter? Gibt ja schon massig vorhandene Möglichkeiten, ein Programm aktuell zu halten, die fast alle nichts mit Java zu tun haben.

Wenns nur drum geht, dem Benutzer anzuzeigen "Du mußt jetzt ein Update laden" oder gar das einigermaßen automatisiert in Java zu erledigen, dann gibts hier ja schon genügend schlaue Vorschläge.

Ansonsten wäre eine genauere Problembeschreibung gut - vor allem, auf welcher Ebene du ansetzen willst. ("Ich suche eine library, die das für mich erledigt!" oder "Ich will Debian-Pakete bauen!" oder "Ich will das von Hand implementieren, und zwar ungefähr so:" oder "Also mein EIGENTLICHES Problem ist, daß ich verteilte Pakete habe, die miteinander synchron gehalten werden müssen!")
 

Ähnliche Java Themen

Neue Themen


Oben