Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
appbundler-jar-native-macos [2017/08/07 04:35] Grand Dub |
appbundler-jar-native-macos [2017/08/07 23:56] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Créer une application native macOS depuis un jar ====== | ====== Créer une application native macOS depuis un jar ====== | ||
- | TODO | + | Cet article décrit comment encapsuler un //.jar exécutable// dans un //bundle macOS// (une application native macOS, donc un répertoire //.app// possédant une certaine structure). |
+ | ===== appbundler ===== | ||
+ | Tout d'abord, il vous faut le programme //appbundler// disponible (par exemple) chez [[https://bitbucket.org/infinitekind/appbundler/overview| Bitbucket]]. C'est lui qui crée l'application native.\\ | ||
+ | Voici la version disponible au moment de l'écriture de cet article: {{ :appbundler:infinitekind-appbundler-6687ec9d200c.zip |}} | ||
+ | Décompressez, vous obtenez alors un répertoire contenant un fichier ''build.xml'' et un sous-répertoire ''appbundler'', lancez un ''Terminal'' et placez-vous dans le répertoire contenant ''build.xml''. | ||
+ | Il suffit alors de lancer ''ant''.\\ | ||
+ | Chez moi, il est ici: ''/Applications/NetBeans/NetBeans 8.1.app/Contents/Resources/NetBeans/extide/ant/bin/ant''. | ||
+ | <note important>Il vous faudra ''Xcode'' afin de compiler ''JavaAppLauncher'' ou alors prenez directement mon fichier ''appbundler-1.0ea.jar.zip'' disponible ci-dessous.</note> | ||
+ | |||
+ | Cela crée le programme ''appbundler-1.0ea.jar'' dans le répertoire ''appbundler/bin''. Voici le mien: {{ :appbundler:appbundler-1.0ea.jar.zip |}}, il est modifié afin de n'avoir que la version 64 bits de ''JavaAppLauncher''. | ||
+ | ===== Utilisation ===== | ||
+ | |||
+ | Voyons comment faire à l'aide d'un exemple, l'article de [[verbiste-macos|Verbiste]] contient {{ :verbiste:verbiste-gui.jar.zip |}}. | ||
+ | |||
+ | Placez //verbiste-gui.jar//, //appbundler-1.0ea.jar// et {{ :appbundler:verbiste.icns.zip |}} (décompressé) dans un même répertoire. | ||
+ | |||
+ | Toujours dans ce répertoire, créez le fichier ''build.xml'' comme suit: | ||
+ | <code xml build.xml> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <project name="Verbiste" default="Verbiste" basedir="."> | ||
+ | <!-- Import environment variables --> | ||
+ | <property environment="env"/> | ||
+ | <!-- Define the appbundler task --> | ||
+ | <taskdef | ||
+ | name="appbundler" | ||
+ | classname="com.oracle.appbundler.AppBundlerTask" | ||
+ | classpath="appbundler-1.0ea.jar" | ||
+ | /> | ||
+ | <!-- Create the app bundle --> | ||
+ | <target name="Verbiste"> | ||
+ | <appbundler | ||
+ | outputdirectory="." | ||
+ | name="Verbiste" | ||
+ | displayname="Verbiste" | ||
+ | identifier="granddub.verbiste.Verbiste" | ||
+ | shortversion="1.0" | ||
+ | mainclassname="verbiste.Verbiste" | ||
+ | icon="verbiste.icns" | ||
+ | copyright="© 2017 Grand Dub
Merci à: 
Pierre Sarrazin <http://sarrazip.com/dev/verbiste.html>" | ||
+ | > | ||
+ | <classpath file="VerbisteUI.jar"/> | ||
+ | |||
+ | <option value="-Dapple.laf.useScreenMenuBar=true"/> | ||
+ | |||
+ | <!-- Pour avoir le même PATH dans l'appli que le shell courant (qui lui sait lancer french-conjugator) --> | ||
+ | <environment | ||
+ | name="PATH" value="${env.PATH}" | ||
+ | /> | ||
+ | |||
+ | <scheme value="mailto"/> | ||
+ | |||
+ | </appbundler> | ||
+ | </target> | ||
+ | </project> | ||
+ | </code> | ||
+ | Lancez ''ant'', c'est terminé. | ||
+ | |||
+ | <note> | ||
+ | On peut aussi mettre cela dans le build.xml de la racine d'un projet //NetBeans// comme expliqué à: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html.\\ | ||
+ | C'est le cas du projet fourni dans l'article [[verbiste-macos|Verbiste sous macOS]]. | ||
+ | |||
+ | La documentation //Oracle// citée ci-dessus explique aussi comment encapsuler le ''JRE'' dans le //bundle// afin de le distribuer indépendamment de l'installation de //Java// sur la cible. | ||
+ | </note> | ||
+ | |||
+ |