はじめに
Windows で jpackage
によるアプリケーションのインストーラ作成の手順をまとめておきます。
jpackage
については以下を参照してください。
Gradle プロジェクト
org.beryx.jlink
プラグインを使うのが簡単。
build.gradle.kts
は以下のようになる。
plugins { application id("org.openjfx.javafxplugin") version "0.1.0" id("org.beryx.jlink") version "3.0.1" } repositories { mavenCentral() } dependencies { testImplementation(libs.junit.jupiter) testRuntimeOnly("org.junit.platform:junit-platform-launcher") } java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } javafx { version = "21.0.4" modules("javafx.controls") } application { mainClass = "com.example.App" mainModule = "example.app" } tasks.named<Test>("test") { useJUnitPlatform() } jlink { options = listOf("--strip-debug", '--compress', '2', "--no-header-files", "--no-man-pages") launcher { name = "MyApp" } jpackage { skipInstaller = true } }
アプリケーション本体は以下の要領。
package com.example; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class App extends Application { @Override public void start(Stage stage) { Label label = new Label("Hello, World"); Scene scene = new Scene(new StackPane(label), 320, 240); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(); } }
jlink
はモジュールを利用することが前提なので、module-info.java
を以下のように作成する。
module example.app { requires javafx.controls; exports com.example; }
なお、非モジュールライブラリを使う場合には、org.gradlex.extra-java-module-info
プラグインなどを使い、非モジュールライブラリをモジュールに変換して使うことになる。
実行パッケージの生成
以下を実行することで、アプリケーションのパッケージが作成できる。
gradlew jpackage
skipInstaller = true
を指定しているため、インストーラの生成は行われない(インストーラを生成するには、続く WiX toolset のセットアップ を行う)。
以下のファイルが作成される。
app\build\jpackage\MyApp app\ runtime\ MyApp.exe
MyApp
フォルダをそのまま任意環境に持っていけば、アプリケーションとして動かすことができる。
WiX toolset のセットアップ
インストーラ作成時には Wix 3 が必要(JDK 24 から Wix 4/5 がサポートされる)(Windows Installation eXperience)。
WiX Toolset v3 releases から Download wix311-binaries.zip
をダウンロードして解凍する。この時フォルダを作成してその中に解凍すること(そのままデスクトップなどに解凍すると、大量のファイルがデスクトップに直接展開されてしまう)。
ビルドを行うターミナルで wix フォルダに対してパスを設定する。
$ENV:Path += ";C:\<path-to-wix>\wix314-binaries"
インストーラの作成
WiX toolset のセットアップが完了すれば、jlink
の設定を以下のように変更する。
jlink { // ... jpackage { appVersion = "0.1.0" icon = "${project.rootDir}/app/src/main/resources/icon.ico" vendor = "Example Co.,Ltd." installerType = "msi" installerOptions = listOf("--win-menu", "--win-shortcut", "--win-menu-group", "MyApp") } }
以下を実行することで、インストーラ msi
が作成できる。
gradlew jpackage
作成された app\build\jpackage\MyApp-0.0.1.msi
を実行することで、アプリケーションをインストールできる。