Red Hat のソリューションアーキテクトの瀬戸です。
概要
前回はjpackageの基本的な使い方を説明しました。
今回はもうちょっと踏み込んだ使い方を説明します。
前回の記事を読んでいない方は、先にそちらをお読みください。
よく使うパラメーターをまとめる
@[filename]
を使用することでそのファイルの内容をパラメーターとして解釈させることができます。よく使用するパラメーターをファイルにすることでオプションを毎回入力しなくて済むようになります。
必要なパラメーターを追加で付けることもできます。同じパラメーターがファイルと引数の両方にあった場合は引数が優先されるようです。
> jpackage @option.txt --app-version 2.1
アプリケーションのアイコンとベンダーを指定する
Windowsインストーラーにはいくつかのメタデータが含まれていて、プログラムの追加と削除から表示することができます。
次のように引数を指定することでアイコンとベンダー名を指定することができます。
> jpackage @option.txt --icon shadowman.ico --vendor "red hat"
これでだれが作ったアプリケーションか一目瞭然になるのではないでしょうか。 ちなみに、icoファイルはinputフォルダの下に置く必要はありません。
Java ランタイムの軽量化
JDK 9以降はランタイムのモジュール化が図られており、必要なモジュールのみ配るように制限することでインストーラーのサイズを小さくすることができます。
jdepsを使用すると、必要としているモジュールが何かを判別することができます。
> jdeps --print-module-deps clientexample.jar java.base,java.desktop >jpackage @option.txt --add-modules java.base,java.desktop
jdepsの出力結果を --add-modules
で指定しています。
今回のサンプルアプリケーションは依存しているものも少ないので、実際に半分のサイズになってしまいます。
アプリケーションのアップデートへの対応
Windowsインストーラーは同じ製品のバージョン違いかどうかをUUID(もしくはGUID)を使って管理をしています。 インストーラーの作成時に、UUIDと製品バージョンを指定することで同じアプリケーションとして認識され、アップデート時に古いアプリケーションを同時に削除することが出来るようになります。 次のように指定します。
> jdeps --print-module-deps clientexample.jar java.base,java.desktop > jpackage @option.txt --app-version 2.0 --win-upgrade-uuid d5f22f98-52b1-4daa-b501-ad12535a5553
versionには細かい規定があります。詳しくはWiXのドキュメントを参照してください。 WiX チュートリアル 日本語訳 Lesson 4 アップグレードとモジュラー化
UUID(GUID)は世界中でユニークである必要のある値です。 Windowsの場合はPowerShellから生成できます。
> [Guid]::NewGuid() Guid ---- d5f22f98-52b1-4daa-b501-ad12535a5553
ライセンスの追加
いわゆる使用許諾契約書を追加することができます。
> jpackage @option.txt --license-file .\licencefile.txt
Apache License 2.0をそのまま取り込んだ例が次の画像です。 https://www.apache.org/licenses/LICENSE-2.0.txt
残念なことに現時点では改行が崩れてしまっています。 また、日本語には対応していないようです。 きれいに見せるためにはなかなか骨が折れそうです。
さらなるカスタマイズ
いままではjpackageの標準的なオプションの中でできることを見てきました。しかし、内部で使っているWiXを直接扱うことでさらなるカスタマイズができます。
--temp
と --verbose
のオプションを付けることで、WiX用の設定ファイルの保存と、WiXの実行時に指定されるコマンドを出力することができます。
インストーラーの見た目をカスタマイズしたい場合はこれらを使用することでお好きなインストーラーを作成することができます。
その場合はWiXのマニュアルを参照しながらカスタマイズをしてください。また、Windowsインストーラーには署名もできますが、jpackageでは対応していないようです。 必要に応じてWindowsインストーラーのドキュメントを参照して署名を行ってください。
WiX チュートリアル 日本語訳 Lesson 4 アップグレードとモジュラー化
Windows インストーラー - Win32 apps | Microsoft Learn
まとめ
駆け足でしたがjpackageの踏み込んだ使い方を説明してきました。説明できていないオプション類もたくさんありますので、ぜひ興味がある人は試してみてください。