Javaアプリケーションのインストールパッケージを作れるjpackageが、どうもJDK13に入りそうな勢いでEarly Accessが出てたので試してみます。
jpackageは、JavaFXにあったjpackagerをベースにしたパッケージングツールです。
JEP 343: Packaging Tool
EAはこちらからダウンロードできます。開発中のJDK13をベースにしてると書いてありますね。
jpackage
※12/8追記 Java 14でincubatorモジュールとして含まれることになりました。
Windowsで必要なもの
Windowsでインストーラーを作るには、iscc.exeが必要で、これはInno Setupに入ってます。
jrsoftware.org // Jordan Russell's Software
※12/8追記 Java 14では不要になったようです
あと、MSI形式のインストーラーを作るにはlight.exeとcandle.exeが必要で、これはWix toolsに入ってます。
WiX Toolset
zipでwix311-binaries.zipをダウンロード・解凍してパスを通すのがいいと思います。
インストーラを作る
ではインストーラを作ってみます。
とりあえずウィンドウを作るアプリを作ってみます。
import javax.swing.*; public class MyFrame { public static void main(String[] args) { var f = new JFrame("My Package"); var t = new JTextArea(); f.add(t); var b = new JButton("Hello"); f.add("North", b); b.addActionListener(al -> t.append("Hello\n")); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(500, 400); f.setVisible(true); } }
ボタンを押すとHelloと表示されるだけのアプリ
jpackageではclassファイル単体ではパッケージを作れないようなので、一度jarを作ります。
> javac MyFrame.java > mkdir target > jar -cf target/mypack.jar MyFrame.class
そしたら、jpackageでインストーラを作成
>jpackage create-installer -ooutput pack -input target --name MyApp --main-class MyFrame --main-jar mypack.jar Warning: Windows Defender may prevent jpackage from functioning. If there is an issue, it can be addressed by either disabling realtime monitoring, or adding an exclusion for the directory "C:\Users\naoki\AppData\Local\Temp\". Warning: Windows Defender may prevent jpackage from functioning. If there is an issue, it can be addressed by either disabling realtime monitoring, or adding an exclusion for the directory "C:\Users\naoki\AppData\Local\Temp\". Warning: Windows Defender may prevent jpackage from functioning. If there is an issue, it can be addressed by either disabling realtime monitoring, or adding an exclusion for the directory "C:\Users\naoki\AppData\Local\Temp\".
※12/8追記 create-installer
は不要になっているようです。
こんな感じでexeとmsiのインストーラができています。--type
で形式を指定することもできます。
>dir pack C:\Users\naoki\Documents\mypack\pack のディレクトリ 2019/03/06 05:39 <DIR> . 2019/03/06 05:39 <DIR> .. 2019/03/06 05:38 33,266,979 MyApp-1.0.exe 2019/03/06 05:39 53,588,671 MyApp-1.0.msi
exeが33MBでmsiが53MBですね。
exeを実行すると、インストーラ画面がでます。
インストール実行すると、あのインストール画面が。
スタートメニューにも追加されています。
もちろん、このアイコンをクリックすれば起動します。
ところで、msiをダブルクリックするといきなりインストール始まるので注意です。
ファイルはWindowsの場合C:\Program Filesにインストールされます。
jshell.exeなど、JDKのファイルも含まれてることがわかります。
JDKまるごと含まれてると考えたら、50MBでインストーラは妥当な感じですね。
「アプリと機能」からアンインストールもできます。