Ich habe eine Desktop-Swing-App entwickelt und überlege mir, wie Sie die Autoupdate-Funktion am besten bereitstellen können. Ich weiß, dass JavaWebStart dies bietet, aber ich denke, dass es meinen Bedürfnissen nicht entspricht, da 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 die .jar hochladen muss.
Ich habe über diesen Ansatz nachgedacht:
Eine erste JAR (die nie aktualisiert werden muss) lädt den Splashscreen, prüft die aktuelle Version in einer config.xml und vergleicht sie mit dem Server config.xml.
Wenn die Serverversion neuer ist, fragen Sie den Benutzer, ob er aktualisieren möchte. Laden Sie in diesem Fall die neue "main.jar", die neue "config.xml" und das neue Splash / Symbol herunter, markieren Sie MD5SUM und ersetzen Sie die alten Dateien durch die neuen.
Starten Sie "main.jar".
Ich weiß nicht, ob ich das Rad neu erfinden möchte oder ob es ein besseres Muster gibt als das, das ich oben angegeben habe.
Wir haben eine ähnliche Sache gemacht. Wir haben es gerade über https bekommen und das Glas heruntergeladen. Um zu wissen, ob Sie eine neue benötigen, überprüfen wir einfach die Größe im Stream. Theoretisch mag das nicht funktionieren, aber in der Praxis hat es funktioniert. Wir sind noch schicker geworden, indem wir das Verzeichnis, in dem sich die Gläser befanden, auflisten, analysieren und jedes Glas herunterladen, so dass der Name des Glases auch nicht fest codiert war. Es gibt jedoch ein paar hässliche Punkte.
Zuerst wurde ein neuer jvm-Prozess gestartet, um das neue Glas zu starten, ist nicht so einfach.
Zweitens müssen Sie sicher sein, dass Sie Ihr Jar nicht beschädigen, wenn Ihr Update in der Mitte fehlschlägt.
Schließlich gibt es keine Möglichkeit, das Bootstrap-Jar mit diesem Prozess zu aktualisieren.
Tags und Links java swing jar auto-update