Kombination von Launch4J und Java Web Start?

8

Ich habe eine funktionierende JNLP-Anwendung, die ich an verschiedene nichttechnische Endbenutzer verteilen muss.

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.

Nun möchte ich etwas verteilen, das mit oder ohne JVM funktioniert, z.B. 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 beste Übereinstimmung, die ich gefunden habe, aber es kann kein Programm über javaws.exe starten. Die einzigen Optionen sind java und javaw

Ich möchte ein Produkt, das:

  • Generieren Sie eine eigenständige .exe -Datei, für die keine JVM vorinstalliert sein muss
  • Parsen Sie die .jnlp -Datei und ermitteln Sie die korrekte JVM, um sie bei Bedarf herunterzuladen (Ich weiß, dass Java Web Start eine JVM herunterladen kann, aber ich möchte nicht zwei herunterladen, die erste Java Web Start und die zweitens, um die Anwendung auszuführen, für die möglicherweise eine bestimmte, aber andere JVM erforderlich ist.)
  • Laden Sie die JVM automatisch herunter und installieren Sie sie, nicht leiten Sie den Benutzer einfach zu einer Java-Download-Seite oder öffnen Sie einen neuen Installationsassistenten.
  • Fordern Sie bei Bedarf ein Administratorkennwort an (für Berechtigungen zum Installieren der JVM. Ich glaube nicht, dass dies in die Sun JVM-Installationsprogramme integriert ist.)
  • Zeige nur einen Sicherheitsdialog (Ich möchte den Benutzer nur einmal dazu auffordern, zu bestätigen, dass er der generierten .exe vertraut, aber ich möchte keine zweite Bestätigung, dass er der .jar -Datei, von der er kommt, vertrauen wird die gleiche Quelle und mit demselben Zertifikat signiert.) Ich nehme an, dass dies erfordert, dass der Auto-Downloader das Zertifikat vor dem Start von JWS installiert.)
  • (nicht erforderlich) Laden Sie gleichzeitig mit der JVM Anwendungsressourcen (z. B. .jar files) im Hintergrund herunter. Dazu müsste der Cache ausgeführt werden, bevor die JVM installiert wird. Der Cache müsste also in systemeigenem Code implementiert werden, und später würde die DownloadService mit JNI eine Schnittstelle zu diesem verwenden.

Existiert ein solches Produkt? Ich vermute, es ist nicht, aber es ist einen Versuch wert.

Update Ich fand Dieser Artikel enthält Lösungen zu einigen verwandten Problemen, obwohl er für die Offline-Installation entwickelt wurde und ich mich hauptsächlich mit der Online-Installation befasse.

    
finnw 31.07.2010, 23:30
quelle

6 Antworten

2

Ich bin auf dasselbe Problem gestoßen. Ich endete mit einem BAT, einer Shell und eventuell einem DMG für Macs.

Ich habe diesen Kommentar zur automatischen JRE-Installation für Windows mit dem Nullsoft-Installationsprogramm gefunden:

Ссылка

Ich denke, außerhalb von JNLP werden Sie Schwierigkeiten haben, Automatisierung für alle Plattformen zu bekommen. Bei meinem Projekt, das seit zwei Jahren läuft, habe ich jedoch noch keine Beschwerden darüber erhalten, dass Benutzer Java selbstständig machen müssen. Ich glaube, die meisten Maschinen werden es schon haben. Windows-Benutzer beschwerten sich darüber, keine Verknüpfung zu haben, aber das ist mit vbs einfach zu machen.

Auch auf dem Mac DMG AppBundle können sie die JRE angeben. Mac wird die neueste Version haben, es sei denn, es handelt sich um ältere PowerPC-basierte Maschinen. In diesem Fall kein Java6.

Wenn Sie mehrere Startprogramme haben, würde ich eine automatische Update-Strategie empfehlen.

    
Thomas 11.08.2010, 11:58
quelle
3

Ich konnte das machen & amp; Verwenden Sie es in der Produktion.

Schreiben Sie eine einfache Bootstrap-Klasse, jar it und Launch4j das jar.

Hier ist das Wichtigste für die einfache Bootstrap-Klasse:

%Vor%     
niceguy 04.01.2012 00:01
quelle
2

Sie können auch überlegen, Ihr Projekt mit Excelsior JET zu kompilieren. Abgesehen von allem anderen schafft es auch eine autarke Verteilung von angemessener Größe.

    
ddimitrov 11.08.2010 14:21
quelle
0

Ein anderer Ansatz könnte auch sein, eine Sun JRE mit einer .BAT-Datei zu verteilen, die sie mit der Option / S aufruft, was zu einer automatischen Installation führt.

Ich habe nichts anderes gesehen, was eine komplett stumme Java-Installation in Kombination mit Java-Aufruf ermöglicht.

    
quelle
0

Ok, ich verstehe, was du zu tun versuchst, aber warum willst du nicht Java benutzen? Launch4J sieht als eine gute Option als Alternative zur Installation von Java aus, da es die nahtlose Verwendung der JAR-Datei ermöglicht.

javaws verwendet mehr oder weniger java.exe mit Sicherheitsberechtigungen und einigen Startoptionen. Die Sicherheitsberechtigungen können jedoch deaktiviert werden, wenn Sie ein Zertifikat verwenden, dem der Benutzer vertraut.

Auch ich bin unsicher, wenn Javaws eingeführt wurde, aber ich bin sicher, dass es in Java 1.5 verfügbar war, das ich in der Nähe von EOL bin. Also, es sei denn, Ihr Benutzer hat seit Jahren kein Java installiert, ich bezweifle, dass sie jnlp starten, wäre ein Problem. Selbst wenn sie eine ältere Version ausführen, können Sie dem jnlp eine erforderliche Version von java hinzufügen, die nur für diese Anwendung automatisch heruntergeladen wird.

    
kohlerfc 11.08.2010 04:24
quelle
0

Obwohl Install4j für nicht-kommerzielle Zwecke nicht kostenlos ist, bietet es ein natives Installer-System für Java Anwendungen. JRE-Bündelung wird unterstützt. Ich bin mir nicht sicher, ob JNLP automatisch analysiert werden kann, aber es könnte etwas wert sein, das zu überprüfen.

Als Beispiel für einen Anwendungsfall wird der Java-basierte integrierte Genombrowser mit einem von diesem Tool generierten Installationsprogramm verteilt. Siehe seine install4j Konfigurationsdatei .

    
driu 12.11.2015 11:38
quelle

Tags und Links