Wie kann man Java-Software am besten für die Ausführung unter Windows verpacken? Gibt es einen Standard für das Schreiben von .BAT-Dateien, die die letzte installierte JRE auf dem Rechner erkennen können? Gibt es irgendwelche Maven-Plugins für diesen Zweck? Was ist das Problem mit ausführbaren Jar-Dateien?
Antworten
Zu viele Anzeigen?Kommt darauf an, was Sie brauchen.
Wir haben festgestellt, dass die Verwendung des One-JAR + JSmooth eine sehr gute Benutzererfahrung bietet, da es uns erlaubt, eine einzige EXE-Datei zu verteilen, die überall auf dem System des Benutzers platziert werden kann, im Gegensatz zu Installations-Binärdateien, die installiert und deinstalliert werden müssen usw. usw. JSMooth prüft, ob die entsprechende Java-Laufzeitumgebung vorhanden ist, und leitet auf die offizielle Download-Seite weiter, wenn keine gefunden wird.
Der Grund für One-jar ist, dass Sie in der Regel benötigen, um Bibliothek jars, die am besten separat zu haben, aber JSmooth erlaubt nur für eine einzige jar-Datei zu verwenden.
Auch das One-Jar SDK und JSmooth sind skriptfähig, ohne an Windows gebunden zu sein, so dass wir neue Versionen auf unserer Hudson-Engine unter Linux erstellen können.
In der Vergangenheit habe ich ein Java-Installationspaket wie launchForJ verwendet. Viele dieser Pakete verwenden jedoch Java, so dass Sie möglicherweise eine Batch- oder einfache ausführbare Datei benötigen, die in nativem Windows-Code geschrieben ist und kurz prüft, ob Java bereits installiert ist, und dann das Installationsprogramm ausführt.
Da Java während der Installation Systemvariablen verwendet, sollten Sie auf diese Weise überprüfen können, ob die von Ihnen benötigte Version (oder eine höhere) existiert.
Der Standardweg wäre die Verwendung von Java Web Start .
Mit der Java Web Start-Technologie können eigenständige Java-Softwareanwendungen mit einem einzigen Klick über das Netzwerk bereitgestellt werden. Java Web Start stellt sicher, dass die aktuellste Version der Anwendung sowie die richtige Version der Java-Laufzeitumgebung (JRE) bereitgestellt wird.
Maven hat eine Webstart Maven-Plugin zur Unterstützung bei der Erstellung von Anwendungspaketen, die über Web Start bereitgestellt werden können.
Eine alternative Lösung wäre die Verwendung eines plattformübergreifenden Installer-Generators, um, nun ja, einen Installer zu erstellen. Ich persönlich mag IzPack (Ich denke, dass JSmooth sehr ähnlich ist, aber ich habe mehr Erfahrung mit IzPack) und, wenn Sie speziell auf die Windows-Plattform abzielen, könnten Sie IzPack verwenden, um Erstellen von nativen Windows-Installationsprogrammen mit IzPack Native Launcher :
Ein Problem mit IzPack tritt immer noch auf, wenn das Zielsystem keine JRE installiert hat. Der Benutzer muss zuerst installieren und dann das IzPack Installationsprogramm ausführen. Dies ist kein Problem für Linux- oder BSD-Benutzern kein Problem, denn sie sind erfahren sind und wissen, wie sie dies von Hand oder mit einem Paketsystem System (RPM, DEB, Ebuilds, Ports, ...). Ebenso wird ein Mac OS X-Benutzer keine großen Probleme haben, da es sich um mit dem Betriebssystem verfügbar ist. Die Situation ist jedoch komplizierter komplizierter auf der Windows-Plattform, da eine JRE installiert werden muss. Schlimmer noch, es können mehrere Instanzen installiert werden in einer manchmal chaotischen Situation.
Der IzPack Native Launcher versucht dieses Problem zu lösen. Es handelt sich um eine native C++ Anwendung, die unter der der sehr freizügigen MIT-Lizenz und die wxWidgets für die GUI verwendet. Sie ist daher plattformübergreifend (für die Historiker: sie wurde zuerst auf einer einer FreeBSD-Box entwickelt), aber die meisten Leute werden brauchen es unter Windows. Es verwendet eine einfache Konfigurationsdatei und sucht zunächst nach einer JRE suchen. Wenn keine gefunden werden kann, öffnet sich ein Dialog, in dem der Benutzer zwischen den folgenden Optionen:
- manuell einen JRE-Speicherort angeben
- eine aus dem Internet herunterladen
- Installieren Sie die vom Packager bereitgestellte Version (falls verfügbar).
IzPack bietet auch eine Maven-Plugin . Die Prüfung lohnt sich.