10 Stimmen

Autoupdate-Funktion in einer Java Swing Desktop-Anwendung

Ich habe eine Swing-Desktop-Anwendung entwickelt und überlege, wie ich die Autoupdate-Funktion am besten realisieren kann. Ich weiß, dass JavaWebStart dies bietet, aber ich denke, dass es nicht meinen Bedürfnissen entspricht, weil ich lokale Dateien lesen muss, so dass ich das Jar signieren müsste. Außerdem erfordert JWS zusätzliche Arbeit für die Bereitstellung auf dem Server, während ich jetzt nur das .jar hochladen muss.

Ich habe über diesen Ansatz nachgedacht:

  • Ein erstes JAR (das nie aktualisiert werden muss) lädt den Splashscreen, überprüft die aktuelle Version in einer config.xml und vergleicht sie mit der config.xml des Servers.

  • Wenn die Serverversion neuer ist, fragen Sie den Benutzer, ob er eine Aktualisierung wünscht. In diesem Fall laden Sie die neue "main.jar", die neue "config.xml" und das neue Splash/Icon herunter, prüfen MD5SUM und ersetzen die alten Dateien durch die neuen.

  • Starten Sie "main.jar".

Ich weiß nicht, ob ich versuche, das Rad neu zu erfinden, oder ob es ein besseres Muster gibt als das, das ich oben beschrieben habe.

5voto

Yishai Punkte 87548

Wir haben etwas Ähnliches gemacht. Wir haben es einfach über https bekommen und das jar heruntergeladen. Um zu wissen, ob man ein neues braucht, überprüfen wir einfach die Größe des Streams. Theoretisch mag das nicht funktionieren, aber in der Praxis hat es funktioniert. Wir sind sogar noch schlauer geworden, indem wir die Verzeichnisliste, in der sich die Jars befinden, analysiert und jedes Jar heruntergeladen haben, so dass der Name des Jars auch nicht hart kodiert war. Allerdings gibt es ein paar unschöne Punkte.

Erstens war das Starten eines neuen JVM-Prozesses, um das neue Jar zu starten, nicht so einfach.

Zweitens müssen Sie darauf achten, dass Sie Ihr Jar nicht beschädigen, wenn die Aktualisierung mittendrin fehlschlägt.

Schließlich gibt es keine Möglichkeit, das Bootstraping-Gefäß mit diesem Verfahren zu aktualisieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X