Automatische Updates Logik

TomGrill

Mitglied
Hi,

wie funktioniert eigentlich Software, die sich automatisch selbst updatet.

So ichs mir denke (vereinfacht):

CheckUpdate- prüft ob Updates vorliegen
DownloadUpdates- lädt updates runter
StartUpdate- entpackt den Download und kopiert die Files etc. überschreibt alte Files etc.

Was aber wenn ich jetzt StartUpdate überschreiben will. Das wird wohl nicht funktioniere, weil die Datei gerade ausgeführt wird. Also bräuchte ich quasi eine StartUpdateFürStartUpdate oder sowas, die genau diesen Einzellfall behandelt.

---

Und wie läuft das ab wenn ich die Main updaten will. Ich müßte ja aus der Main raus den Updater starten und die Main dann beenden, und der Updater muss weiterlaufen.

Vieleicht könnt ihr mir helfen wie das so von der Logik her gelöst wird. Danke.
 
G

Gast2

Gast
Wenn mans selber machen will und nichts fertiges nutzen möchte wäre das einfachste wohl folgendes, zwei jar files:
- Programm: Die Anwendung selbst
- Starter: Prüft und lädt ggf. eine neue Version des ersten jars runter, startet danach das Programm
 

Clayn

Aktives Mitglied
So ein Problem hat ich auch mal. Ich habs folgendermaßen gelöst was auch funktionier:

Ich lad die neue Datei runter mit noch dem zusatz .tmp aber das ist variabel solange sie nicht gleich heißt.

Wenn der Download abgeschlossen ist, lese ich die bytes aus der neuen datei und schreibe sie in die alte also einfach nen neuen
Code:
BufferedOutputStream
auf die alte Datei.

Wenn das erfolgreich war, lösch ich die runtergeladene Datei.
Hoffe das war verständlich

MFG
Clayn
 

OSBI_Fan

Mitglied
Hallo TomGrill,

einen Update- Mechanismus sowie weitere interessante Anregungen findest Du oftmals im Sourcecode von Open-Source Projekten.

Hier mal ein Beispiel für eine Java Swing-basierte Anwendung:

Projekt Yapbam:
Yapbam Home Page

Sourcecode:
SourceForge.net: Yapbam: SCM

P.S. Yapbam ist ein Kontenverwaltungsprogramm - "Yet another personal bank account manager".

Grüße
OSBI_Fan

OSBI = Open Source Business Intelligence
 

Network

Top Contributor
Also mit dem Problem habe ich mich auch schon sehr oft auseinandergesetzt.
Meine Programme bestehen Standardmäßig immer zusätzlich aus einer "intelligenten Verknüpfung" (Ein sehr einfaches Programm, dass das die Anwesenheit des eigentlichen Programmes vortäuscht).

- Die Verknüpfung ruft das eig. Programm auf
- Das Programm überprüft auf eine neue Version und lädt diese herunter
- Nach dem herunterladen in den selben Ordner beendet es sich mit "System.exit(2)"
- Die Verknüpfung empfängt jetzt die Exitvalue und ersetzt die neue Jar mit der alten sowie ruft das Programm wieder auf.

Gruß
Net
 

Empire Phoenix

Top Contributor
Also du brauchste mindestens 2 teile, da (zumindest inner windows welt) es sehr schwer sit eine datei während diese benutzt wird auszutauschen.

-> Launcher, läd die richtige anwendung runter, und startet diese
-> answendung, läd beim start neue version des lanuchers runter soweit benötigt.

Alternativ funktioniert recht gut
-> Webstart für den updater
-> updater läd dann die richtige anwendung
 

Robokopp

Bekanntes Mitglied
Ich hab mein Programm in verschiedene libs unterteilt:

Die Main jar, die nur eine Main klasse enthält.
Eine jar die das eigentliche Programm enthält
Eine updaterklasse mit eigener Main Methode.
Jetzt kann ich aus meinem Hauptprogramm den updater starten wobei das Hauptprogramm dafür beendet wird. Dann führe ich das update durch und nach Abschluss wird das Hauptprogramm mit den neuen libs wieder geladen.

Funktioniert optimal und das Programm lässt sich durch zusätzliche libs über den updater erweitern. Das gute ist, dass ich eigentlich im Falle des veröffentlichens nur den updater ausliefern müsste und der das komplette Programm dann runterläd und startet :)

Gesendet von meinem GT-I9100 mit Tapatalk 2
 

Ähnliche Java Themen

Neue Themen


Oben