Ich habe eine funktionierende JNLP-Anwendung, die ich an verschiedene nicht-technische Endbenutzer verteilen muss.Kombination von Launch4J und Java Web Start?
Wenn auf dem Computer des Benutzers eine aktuelle JVM installiert ist, ist alles in Ordnung. Sie klicken einfach auf die JNLP-Datei, die ich ihnen sende, und Java Web Start erledigt den Rest.
Jetzt möchte ich etwas verteilen, das mit oder ohne eine JVM, z. Eine .exe
Datei, die automatisch eine kompatible JVM herunterlädt, wenn keine vorhanden ist, ruft dann javaws.exe
auf, um die .jar-Dateien herunterzuladen und die Anwendung zu starten.
Launch4J ist die nächste Übereinstimmung, die ich gefunden habe, aber es kann kein Programm über javaws.exe
starten. Die einzigen Optionen sind java
und javaw
ich ein Produkt möchten, die können:
- eine in sich geschlossene
.exe
-Datei generieren, die vorinstalliert werden keine JVM benötigen, um - Analysieren Sie die
.jnlp
Datei und ermitteln Sie die korrekte JVM, um bei Bedarf herunterzuladen (Ich weiß, Java Web Start kann eine JVM bei Bedarf herunterladen, aber ich möchte vermeiden, zwei zu downloaden, die erste, um Java Web Start zu starten und die zweite, um die Anwendung auszuführen, die ein erfordern spezifische aber unterschiedliche JVM.) - Downloaden und installieren Sie die JVM automatisch, nicht einfach den Benutzer auf eine Java-Download-Seite oder öffnen Sie einen neuen Installationsassistenten.
- Aufforderung für ein Admin-Passwort, falls erforderlich (für Berechtigungen zur Installation der JVM. Ich glaube nicht, dass dies in die Sun JVM-Installer eingebaut ist.)
- Zeige nur einen Sicherheitsdialog (Ich möchte den Benutzer nur auffordern einmal, um zu bestätigen, dass sie der generierten
.exe
vertrauen, aber ich möchte keine zweite Aufforderung zu bestätigen, dass sie der.jar
Datei vertrauen, die von der gleichen Quelle stammt und mit dem gleichen Zertifikat signiert ist.) Ich nehme an, dass dies den Auto-Downloader erfordern wird Installieren Sie das Zertifikat vor dem Start von JWS.) - (nicht erforderlich) Laden Sie gleichzeitig Anwendungsressourcen (z. B.
.jar
Dateien) im Hintergrund mit der JVM herunter. Dies würde erfordern, dass der Cache ausgeführt wird, bevor die JVM installiert wird, so dass der Cache in nativem Code implementiert werden müsste und dieDownloadService
später mit JNI eine Schnittstelle zu ihm herstellen würde.
Existiert ein solches Produkt? Ich vermute es ist nicht, aber es ist einen Versuch wert.
aktualisieren fand ich this article, die Lösungen für einige verwandte Probleme hat, obwohl es für die Offline-Installation ausgelegt ist, und ich bin vor allem mit Online-Installation betroffen.
Ich mache mir keine Sorgen über Nicht-Windows-Plattformen. Macs haben immer eine JVM installiert, und ich nehme an, dass die meisten Linux-Benutzer das technische Wissen haben, um die '.jar' Datei zu finden und zu doppelklicken, falls nötig. – finnw