Update-Mechanismus ohne Webstart

Status
Nicht offen für weitere Antworten.

P4G0

Mitglied
Hi Folks,

ich möchte gerne für eine Applikation einen Update-Mechanismus ohne Webstart implementieren. Das ganze soll so aussehen, dass bei Programmstart bei einem verfügbaren Update ein Fenster geöffnet werden soll, bei dem der Anwender Update anwenden oder Abbrechen klicken kann.

Bei "Update anwenden" soll die derzeitige .jar-Datei durch die neue ausgetauscht werden, nur wie implementiert man das am besten?

Über eine zweite jar-Datei, die in etwa wie folgt vorgeht?
- Hauptprogramm beenden
- Update herunterladen und ggf. validieren
- jar-Datei des Hauptprogrammes löschen
- neue jar-Datei umbenennen
- neue Version starten

Gibt es dazu eine Art Best-Practise? Und wie startet man am Besten aus einem laufenden Java-Programm eine andere jar-Datei?
 
Zuletzt bearbeitet:

FArt

Top Contributor
Gibt es dazu eine Art Best-Practise?
Nein.

Und wie startet man am Besten aus einem laufenden Java-Programm eine andere jar-Datei?
Am besten die Applikation als Prozess forken.

Ich habe das schon mal gemacht, für Client-Server Installationen mit Backup und Recovery. Ist eigentlich straight forward, vorwiegend Kopierarbeit. Die Komplexität kommt dann mit der Optimierung, z.B. bei kumulativen Updates, vor allem in der Verwaltung der Pakete!
 
G

Gast2

Gast
Moin,

gemacht hatte ich so was mal in .NET ... da hatte ich einen Server der für jedes File ein MD5 berechnet hat ... das wurde an den Client gesendet der selbiges mit seinen Daten machte ... war die MD5 falsch -> Datentausch

das eigentliche Programm hatte ich in eine DLL ausgelagert und nach dem Datenabgleich habe ich die DLL nachgeladen und das eigentliche Programm gestartet ... unter Java müsste es mit UrlClassloader funktionieren

hand, mogel
 

Guybrush Threepwood

Top Contributor
Ich glaube, das wird recht schwierig, wenn es plattformübergreifend funktionieren soll. Spätestens seit Vista kann auf Windows-Plattformen ein Programm nur noch dann ins Programm-Verzeichnis schreiben, wenn es mit Administratorrechten läuft. Es wird also nicht ganz einfach, das überall zum Laufen zu bringen.
Ich mache das mit externen Installern, die ich mit einer modifizierten Version von Java Tips - How to create a download manager in Java downloade. Vorher wird über eine externe Datei auf dem Webserver geprüft, ob eine neuere Version vorliegt als die aktuell installierte. Nach dem Download wird die Datei gestartet und das Programm beendet.
 

Wildcard

Top Contributor
Man kann auch Eclipse Equinox verwenden, das bringt einen Update Manager mit den man programmatisch ansprechen kann. Das setzt allerdings vorraus das man die Sache Eclipse gerecht verpackt (Features + OSGi Bundles).
Für nicht Windows Systeme kann man auch die entsprechenden Pakete für den Paketmanager bauen, die sind dann auch updatefähig (.deb, .rpm,...)
 

P4G0

Mitglied
Hmm... wie mach ich das denn nun am besten...?

Hat denn jemand für Webstart nen gutes Tutorial parat, vllt nutze ich das doch. Wie läuft Webstart denn vom Prinzip her ab? Es wird nicht bei jedem Programmstart das Programm aus dem Netz geladen, oder?
 

Wildcard

Top Contributor
Nein, du baust nur eine JNLP die alle deine Resourcen auflistet und Webstart schaut beim Start nach ob eine dieser Resourcen zwischenzeitlich aktualisiert wurde. Wenn das der Fall ist wird die aktualisierte Resource geladen.
Für den Benutzer ist es kaum von einer normalen Desktopapplikation zu unterscheiden, du kannst sogar automatisch Startmenü und Desktop Verknüpfungen erzeugen lassen und die Applikation funktioniert ohne Internetverbindung (dann natürlich ohne vorherigen Updatecheck)
 

P4G0

Mitglied
Also ich habe mich zwischenzeitlich mit WebStart befasst und gelesen, dass WebStart keine Schreibzugriffe auf die Festplatte zulässt - wie bei Applets eben. Dadurch kommt diese Methode nicht in Frage, da ich Zugriff auf die Festplatte benötige.

Hmm mal abgesehen davon, dass ab Vista nur noch das Schreiben im Programm-Verzeichnis mit Admin-Rechten möglich ist, könnte es wie folgt klappen?

- Beim Programmstart auf neue Version prüfen
- wenn Update vorhanden kleines Fenster anzeigen
- bei einem Klick auf "aktualisieren" wird eine neuere Version heruntergeladen
- diese starte ich, lasse das "alte Programm" schließen und dann löschen
- die neue Version wird dupliziert und umbenannt, sodass das jar-File wieder den richtigen Namen hat
- kopierte Version starten und dann temporäre Version schließen und löschen
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
Also ich habe mich zwischenzeitlich mit WebStart befasst und gelesen, dass WebStart keine Schreibzugriffe auf die Festplatte zulässt - wie bei Applets eben. Dadurch kommt diese Methode nicht in Frage, da ich Zugriff auf die Festplatte benötige.
Wie bei Applets bekommst du Vollzugriff wenn du deine Anwendung signierst.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Applet Selbstsignierte Applets in Java 7 Update 51 Tools - Maven, Gradle, Ant & mehr 19
Guybrush Threepwood Deployment auf Mac: Update von App Bundles Tools - Maven, Gradle, Ant & mehr 3
S Webstart JNLP Update Element - kein Info-Fenster über Updates? Tools - Maven, Gradle, Ant & mehr 7
C Webstart Auto update Tools - Maven, Gradle, Ant & mehr 5
C Webstart Fehler (verifizierung) nach update auf 1.5 Tools - Maven, Gradle, Ant & mehr 4
H Maven NetBeans Java Application ohne Manifest-Datei Tools - Maven, Gradle, Ant & mehr 7
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
R Webstart Java 11 ohne Web Start Tools - Maven, Gradle, Ant & mehr 5
K Eine ausführbare exe ohne installiertes JRE möglich? Tools - Maven, Gradle, Ant & mehr 4
G Maven site-deploy per SSH ohne Benutzereingabe Tools - Maven, Gradle, Ant & mehr 1
S Installer ohne JAR Tools - Maven, Gradle, Ant & mehr 6
reibi Maven Build ohne netz Tools - Maven, Gradle, Ant & mehr 2
M Versionierung mit GIT ohne online Repository Tools - Maven, Gradle, Ant & mehr 6
F Problem beim Kompilieren ohne IDE Tools - Maven, Gradle, Ant & mehr 5
-horn- Pures JRE ohne Ballast? Für BOINC-Projekt Tools - Maven, Gradle, Ant & mehr 4
A Applet Maus Koordinaten ohne MouseMotionListener Tools - Maven, Gradle, Ant & mehr 3
S Javachats nutzen ohne Websites zu betreten Tools - Maven, Gradle, Ant & mehr 3
G Chat ohne ständig laufenden Chatserver Tools - Maven, Gradle, Ant & mehr 5
M Alternativtext bei Browser ohne Java? Tools - Maven, Gradle, Ant & mehr 3
S Applet signieren ohne Jarsigner Tools - Maven, Gradle, Ant & mehr 2
C Java Bean ohne BeanBuilder Tools - Maven, Gradle, Ant & mehr 5

Ähnliche Java Themen

Neue Themen


Oben