# Jar Datei installieren mit Setup.exe?



## wusli (18. Jul 2012)

Hallo,
Ich hab mal eine Frage, ist es möglich, bzw. gibt es ein Programm mit dem ich einen Ordner mit einer .Jar Datei sowie Bilder und einer Hilfe datei in eine Setup.exe packe wie man es von normalen Programmen gewohnt ist?


----------



## Maaanuel (18. Jul 2012)

Hallo,
darüber habe ich mir vor kurzen auch mal Gedanken gemacht, wie ich das "installieren", also erstellen eines Ordners, in dem die Jar-Datei + andere Dinge wie readme.txt liegen, umsetzen könnte.

Ich habe es noch nicht probiert aber ich würde meine Idee kurz mal einwerfen, vielleicht ergibt sich in einer Diskussion ja der beste Weg:

Ich wollte es in keiner .exe-Datei oder ähnlichem machen, weil damit die tolle Plattformunabhängigkeit von Java wieder futsch wäre.
Deshalb kam ich auf die Idee, eine Install.jar zu bauen. Dort lege ich einfach die zu kopierenden Dateien innerhalb in die jar. So kann ich eine einzige Install-Char an andere Leute weitergeben.
Die Install.jar ist dann einfach ein Programm, dass erst nach dem Zielort fragt, dann dort ein Ordner öffnet und alles was er braucht aus der Install.jar dorthin kopiert.

Wie gesagt, habe es nicht probiert weshalb ich nicht weiß, ob dies überhaupt von den Rechten mit dem Java läuft auf allen Plattformen funktioniert.

Alternative wäre es, die Datei mit der Datenstruktur wie man sie will als .zip weiter zu geben. Dann wäre es auch nur ein File und das "installieren" wäre halt das entpacken.

Vielleicht kennt wer anderes eine elgantere Methode.
Oder vielleicht hat auch wer Erfahrung, wie es denn "normal" gemacht wird, das "ausliefen des Produkts an den Kunden".


----------



## Kevin94 (18. Jul 2012)

Möglich ist alles, aber: Wozu eine exe?
Was spricht gegen ein einfaches .zip File? Das ist für Java-Programme die gängige Variante. Alternative wäre noch ein selbstentpackende jar, die nur eine Main-Klasse enthält, die alle Datein im Archiv in einen Ordner kopiert. Und wenn's nur ne exe sein muss, damits halt ne exe ist, kannst du dieses Archiv dann mit Launch4J (siehe FAQ) wrappen.
Eine exe brauchst du imho nur, wenn du davon ausgehst das der Großteil der Nutzer kein Java bzw. ein veraltetes Java installiert hat, und du das für ihn übernehmen musst, weil du deinen Nutzerkreis Für nicht dazu fähig hälst, Java zu installieren.


----------



## Gonzo17 (18. Jul 2012)

Solltest du wirklich eine .exe bauen wollen, weil es sowieso nur unter Windows verwendet werden soll, dann kann ich dir das empfehlen: Inno Setup

Ich habe das schon 2-3mal verwendet, zum Beispiel weil die Zielpersonen ohnehin nur Windows-Kisten benutzen oder sogar einmal auch, weil wir unsere Software (ein Spiel) nur für Windows gebaut hatten (mit Slick und da wir unter Linux/Mac nicht testen konnten/wollten, hatten wir eben diese Einschränkung).

Ansonsten wäre der Vorschlag des Vorredners natürlich auch machbar. Bau dir eine Installer.jar und lass die das Zeug bauen. Ist ja im Prinzip das Gleiche.

[EDIT]Kurze Recherche hat ergeben, dass es auch genug Setups geschrieben in Java gibt. Such mal nach "Java Installer", sieht eigentlich ganz schön aus und man ist eben weiterhin plattformunabhängig. Ist aber für einen DAU bestimmt ungewohnt und daher vielleicht nicht zu 100% für jeden Kunden geeignet.[/EDIT]


----------



## FArt (18. Jul 2012)

Für Java-Applikationen würde ich Webstart empfehlen.


----------



## wusli (18. Jul 2012)

Zur frage, wieso ne exe und wieso kein zip ordner, ganz einfach, weil es mich halt mal interresiert, wie sowas geht und würde sowas mal gerne machen


----------



## turtle (18. Jul 2012)

Ich kann noch Folgende in den Ring werfen:

jsmooth
launch4j


----------



## Swoop (18. Jul 2012)

Wir haben hier shcon InstallForge von Forgesoft verwendet. 
Hat sehr gut geklappt. Und man hat große Auswahlmöglichkeiten. Selbst Registryeinträge und Verknüpfungen etc kann man damit anlegen.


----------



## up-setter (18. Jul 2012)

Vielleicht sollte man erstmal klären was "Setup" bzw "Install" bedeutet.
Im zusammenhang mit Computer-Software eigentlich nicht mehr und nicht weniger als das ein Programm durch einen Wizard aus einem Setup-Paket entpackt wird und wenn nötig andere Einstellungen vorgenommen werden (Registry-Settings, Verknüpfungen, Anpassung nach vom User ausgewählten Infos, etc).

Und das kann man mit Java und entsprechenden Libs auch alles selber machen. Dafür braucht man keine Install-Software.

Und was du mit "Zur frage, wieso ne exe und wieso kein zip ordner, ganz einfach, weil es mich halt mal interresiert, wie sowas geht und würde sowas mal gerne machen" meinst ist mir völlig unklar.

EXE ist das Windows-eigene Format für "ausführbare Binärdateien". Zumindest die Extension, in der Regel ist dann aber ein PE-Header enthalten.

Und wenn du jetzt ne EXE haben willst nutz entweder Wrapper oder schreib dir eine in C selbst.


----------



## bygones (19. Jul 2012)

http://www.java-forum.org/spezialthemen/18384-6-varianten-java-programme-starten-jar-bat-exe-cd.html


----------



## FArt (19. Jul 2012)

up-setter hat gesagt.:


> Und das kann man mit Java und entsprechenden Libs auch alles selber machen. Dafür braucht man keine Install-Software.


Welche Libs denn? Danach wird ja u.a. gefragt.

Warum das Rad neu erfinden? Es gibt sehr gute, oben erwähnte Software, die genau dieses Aufgabe übernimmt. Mit diesen Features (werden oft benötigt), evtl. plattformübergreifend... da muss ein Java Enwickler lange klöppeln um das mit Aufwand "selber" zu machen... und genau so gut.


----------



## up-setter (19. Jul 2012)

Für Verknüpfungen gibt es z.B. JShortcut. Zur manipulation der Registry kann man die Java-eigene Klasse [japi]Preferences[/japi] nutzen. Und einen Wizard kann man sich mit Swing selbst zusammen bauen. Ich wüsste jetzt nicht wirklich was mir da eine Installer-Software abnehmen sollte. Klar ist der Aufwand geringer mit Hilfe der Software sich einen Installer zusammenzuklicken als alles selber schreiben, die Frage ist eher ob man das auch will. Und ich würde vermuten das auch einige der genannten Libs irgendwas wie Launch4J oder ähnliches nutzt um EXE-Files für Windows zu bauen. Alternativ wäre natürlich noch MSI (MS Installer) möglich, aber ich weis nicht in wie fern sich der mit Java kombinieren lässt.


----------



## bygones (19. Jul 2012)

up-setter hat gesagt.:


> Ich wüsste jetzt nicht wirklich was mir da eine Installer-Software abnehmen sollte. Klar ist der Aufwand geringer


du beantwortest deine eigenen (rhetorische) Frage


----------



## Swoop (19. Jul 2012)

up-setter hat gesagt.:


> Ich wüsste jetzt nicht wirklich was mir da eine Installer-Software abnehmen sollte. Klar ist der Aufwand geringer


Geht es bei der Programmierung nicht immer den Aufwand so klein wie möglich zu haben aber trotzdem sich an gewisse Standards zu halten?


----------



## Guybrush Threepwood (19. Jul 2012)

Swoop hat gesagt.:


> Geht es bei der Programmierung nicht immer den Aufwand so klein wie möglich zu haben aber trotzdem sich an gewisse Standards zu halten?



Guter Punkt. Beim Deployment unter Windows ist ein Installer nun einmal der Standard. Wenn man viele Ressourcen bei einem Programm dabei hat, dann kommt man praktisch nicht darum herum. Die Beste Möglichkeit ist meines Wissens (wie bereits weiter oben vorgeschlagen), das Jar mit launch4j als Exe zu wrappen und dann einen Installer zu bauen. Ich persönlich nehme dafür NSIS, insbesondere weil es mit EclipseNSIS ein passendes Plugin für Eclipse gibt.

Es spricht ja nichts dagegen, für andere Betriebssysteme entsprechende Versionen bereit zu stellen.


----------

