Java FXでJavaで手軽にGUIアプリを作れますが、いざそれを配布しようとすると少しハードルが高いです。少しトリッキーですが成功した実例をもとに手順を紹介します。
使用したツールは以下の通りです。Windows環境です。
- pleiades-2025-03-ultimate-win-64bit-jre_20250319(Java開発、作業用)
- openjdk-22.0.2_windows-x64_bin(Java開発、作業用)
- openjfx-23.0.1_windows-x64_bin-sdk(JavaFX開発、作業用)
- openjfx-23.0.1_windows-x64_bin-jmods(JavaFX実行用モジュール)
- wix314(jpackageから使用される)
- innosetup-6.4.2(インストーラー作成ツール)
システム環境変数設定
- JAVA_HOME=C:\pleiades\2025-03\java\jdk-22.0.2(jdkを置いた場所)
- WIX=C:\Program Files (x86)\WiX Toolset v3.14\(WIXインストール時に書き込まれている)
- path=%JAVA_HOME%\bin(リストに追加)(Javaコマンド実行用)
以下手順です
まずはJava FXのプロジェクトを作ります。
eclipseでMavenを使ってJava FXアーキタイプ(ひながた)から作成します
プロジェクトができてビルドまでできました。このまま実行すると
アプリが動作します。
インストーラーを作成する。
プロジェクトをエクスポートします
次にカスタムJREを作成します。上図のパス上からコマンドラインを開きjlinkコマンドを実行します
jlink --module-path "C:\pleiades\2025-03\java\javafx-jmods-23.0.1" ^ --add-modules java.base,javafx.controls,javafx.fxml,javafx.graphics,java.management,java.naming ^ --output custom-jre
コマンドラインからjpackageコマンドを実行してMSI インストーラーを作成します。
jpackage --type msi ^ --input . ^ --main-jar jfxsample.jar ^ --main-class jp.co.abridge.jfxsample.App ^ --runtime-image custom-jre ^ --name JavaFXSample ^ --dest result
resultフォルダが出力されて中にmsiファイルがあります。これを実行してアプリをインストールします
インストールされました。ただしこれは仮のインストールでこれをもとに正式なインストーラーを作成します
Inno Setup を使って日本語インストーラーを作成する
Inno Setupを起動して以下のようなスクリプトを実行します
[Setup] AppName=JavaFxSample AppVersion=1.0 DefaultDirName={pf}\JavaFxSample OutputBaseFilename=JavaFxSampleInstaller DisableDirPage=false CreateAppDir=true PrivilegesRequired=admin Compression=lzma SolidCompression=no UninstallDisplayIcon="{app}\JavaFxSample.exe" [Languages] Name: "Japanese"; MessagesFile: "compiler:Languages\Japanese.isl" [Files] Source: "C:/Program Files/JavaFxSample/app/*"; DestDir: "{app}/app"; Flags: ignoreversion Source: "C:/Program Files/JavaFxSample/runtime/*"; DestDir: "{app}/runtime"; Flags: recursesubdirs Source: "C:/Program Files/JavaFxSample/JavaFxSample.exe"; DestDir: "{app}"; Flags: ignoreversion [UninstallDelete] Type: filesandordirs; Name: "{userappdata}\JavaFxSample"
~/Documents/Outputフォルダにファイルが出力されます。これが最終のインストーラーファイルです
インストーラーを実行すると
インストールされて、起動すると
アプリが動作します