3 アプリケーション要件のサポート
パッケージ化ツールでは、デフォルト引数、JVMオプション、ファイル・アソシエーション、複数のランチャおよび署名など、アプリケーションの要件をサポートしています。
デフォルトのコマンドライン引数の設定
アプリケーションがコマンドライン引数を受け入れる場合、--arguments
オプションを使用してデフォルト値を定義します。ユーザーは、アプリケーションを起動するときに、これらの値をオーバーライドできます。
デフォルトのコマンドライン引数でアプリケーションをパッケージ化した場合、ユーザーが引数を指定せずにアプリケーションを起動すると、これらの値はメイン・クラスに渡されます。jpackage
によって生成されたアプリケーション・イメージの/app
ディレクトリにあるapp-name.cfg
ファイルの[ArgOptions]
セクションには、定義されているデフォルトの引数が示されます。このファイルをチェックして、値が正しく定義されていることを確認できます。
次の例は、デフォルト引数の設定方法を示しています:
JVMオプションの設定
アプリケーションの起動時にJVMにオプションが渡されるようにする場合は、アプリケーションをパッケージ化するときに--java-options
オプションを使用します。ユーザーは、アプリケーションにJVMオプションを指定できません。
必要に応じてアプリケーションを実行するためのJVMを設定するには、ユーザーがアプリケーションを起動するときに渡すJVMオプションを定義します。$APPDIR
マクロを使用して、アプリケーションに含まれるリソースを参照します。アプリケーションをパッケージ化するときに、リソース・ファイルは入力ディレクトリに存在している必要があります。
jpackage
によって生成されたアプリケーション・イメージの/app
ディレクトリにあるapp-name.cfg
ファイルの[JavaOptions]セクションには、定義されているデフォルトの引数が示されます。このファイルをチェックして、値が正しく定義されていることを確認できます。
次の例では、JVMオプションをアプリケーションに渡す方法をいくつか示します:
クラス・パスおよびモジュール・パスの設定
デフォルトでは、jpackage
ツールにより、--input
オプションで指定された各JARファイルへのパスを含むデフォルトのクラス・パスが生成されます。ただし、--java-options
オプションを介して-cp
、-classpath
、または -Djava.class.path
オプションで指定したクラス・パスは、デフォルトのクラス・パスをオーバーライドします。
--java-options
を使用してクラス・パスを指定する場合は、各入力JARファイルへのパスを含めてください。たとえば、アプリケーションに含まれるJARファイルがmyapp.jar
の1つのみで、classes
サブディレクトリにあるクラスをクラス・パスに含める場合、jpackage
コマンドに次を追加します:
--java-options "-cp \$APPDIR/myapp.jar:\$APPDIR/classes"
モジュラ・アプリケーションの場合、jpackage
によって生成されるデフォルトのモジュール・パスは$APPDIR/mods
です。ただし、--java-options
を介して--module-path
オプションでモジュール・パスを指定すると、デフォルトのモジュール・パスの後にモジュール・パスが追加されます。デフォルトのパスは置換されません。
ファイル・アソシエーションの設定
ユーザーが特定のタイプのファイルを開いたときにアプリケーションが起動されるようにする場合は、アプリケーションをパッケージ化するときに--file-associations
オプションを使用します。
アプリケーションで処理可能なファイルをユーザーが開いたときにアプリケーションが起動するようにするには、アプリケーションのインストール時に作成するファイル・アソシエーションを定義します。アソシエーションは、jpackage
に渡されるプロパティ・ファイルで定義されます。アソシエーションごとに、個別のファイルと--file-associations
オプションの個別のインスタンスが必要です。次のプロパティは、mime-type
またはextension
のいずれかを含む必要があるアソシエーションを定義します:
-
mime-type
- アプリケーションで処理できるファイルのMIMEタイプ。 -
extension
- アプリケーションで処理できるファイルのファイル拡張子。 -
icon
- アプリケーションで処理できるファイルのタイプに使用するアイコン。アプリケーションをパッケージ化するときに、アイコンは入力ディレクトリに存在している必要があります。アイコンを指定しない場合は、デフォルトのアイコンが使用されます。 -
description
- アソシエーションの簡単な説明。
ファイル・アソシエーションを設定するには、最初にプロパティ・ファイルを作成します。次の2つのファイルで、JavaScriptファイルとGroovyファイルのアソシエーションを設定します。
FAjavascript.properties:
mime-type=text/javascript
extension=js
description=JavaScript Source
FAgroovy.properties:
mime-type=text/x-groovy
extension=groovy
description=Groovy Source
次のコマンドでは、アプリケーションFADemoをパッケージ化し、作成したプロパティ・ファイルを使用してファイル・アソシエーションを設定します。ユーザーが.js
または.groovy
ファイルを開くと、FADemoが起動します。
jpackage --name FADemo --input FADemo \
--main-jar ScriptRunnerApplication.jar \
--file-associations FAjavascript.properties \
--file-associations FAgroovy.properties
ランチャの追加
アプリケーションを開始する方法が複数ある場合、--add-launcher
オプションを使用して、作成する追加のランチャ・ツールを記述します。
アプリケーションで引数に異なるデフォルト値を使用する場合、Windowsコンソールを使用してもしなくてもアプリケーションを実行できる場合、または複数のアプリケーションをパッケージ化してランタイムを共有する場合は、追加のランチャが必要になることがあります。オプションの形式は--add-launcher launcher-name=properties-file
です。ここで、launcher-nameは追加のランチャに使用される名前です。名前にスペーが含まれている場合は、引用符を使用します。
ランチャは、jpackage
に渡されるプロパティ・ファイルで定義されます。ランチャごとに、個別のファイルと--add-launcher
オプションの個別のインスタンスが必要です。次のプロパティはランチャを定義します。少なくとも1つのオプションを設定する必要があります:
-
module
- ランチャのメイン・クラスを含むモジュールの名前。メイン・モジュールがメイン・クラスを識別しない場合は、module=main-module/class
の形式で指定します。 -
main-jar
- ランチャのメイン・クラスを含むJARファイルの名前。 -
main-class
- メイン・クラスの名前。 -
arguments
- スペースで区切られたデフォルトの引数。引数にスペースが含まれる場合は、arguments=arg1 "arg 2" arg3
のように引数を引用符で囲みます -
app-version
- バージョン番号。 -
java-options
- スペースで区切られた、JVMに渡すオプション。引数にスペースが含まれる場合は、引用符で引数を囲みます。 -
icon
- 追加のランチャに使用されるアイコン -
win-console
-true
に設定すると、アプリケーションでコンソールが起動します。
追加のランチャを定義するには、最初にプロパティ・ファイルを作成します。次の例は、ランチャの設定方法を示しています:
アプリケーション・パッケージ(macOS)への署名
macOSで実行するアプリケーションの場合は、アプリケーションをパッケージ化するときに--mac-sign
およびサポート・オプションを使用します。署名付きアプリケーション・イメージ(.app
)を含むディスク・イメージ(.dmg
)またはパッケージ(.pkg
)は、認証できます。
必要なjpackage
オプションは、Mac App Storeを介してアプリケーションを配布するかどうかによって異なります。
必要な証明書
Mac App Storeの外部でアプリケーションを配布する場合、証明書「Developer ID Application: <user or team name>」および「Developer ID Installer: <user or team name>」が必要です。
Mac App Storeを介してアプリケーションをデプロイする場合、証明書「3rd Party Mac Developer Application: <user or team name>」および「3rd Party Mac Developer Installer: <user or team name>」が必要です。
macOSアプリケーション・パッケージに署名するためのオプション
macOSアプリケーション・パッケージに署名するには、次のjpackage
オプションを含めます:
-
--mac-sign
: バンドルにmacOS用の署名を要求します。 -
--mac-signing-key-user-name user_or_team_name
: キー・ユーザーまたはチーム名。これは、Apple署名アイデンティティの名前の部分です。
また、次のオプションが必要になる場合があります
-
--mac-package-signing-prefix prefix
: アプリケーション・バンドルに署名する際、署名する必要のある、既存のバンドル識別子を持たないすべてのコンポーネントにこの値が接頭辞として付けられます。このオプションを指定しない場合、接頭辞は、(修飾されていない)メイン・クラス名の後にピリオド(.
)が続きます。 -
--mac-signing-keychain keychain_name
: 標準のキーチェーン以外のキーチェーンを使用する場合は、キーチェーン・アクセス・アプリケーションに表示されるキーチェーンの名前を指定します。名前は.keychain
で終わる必要があります。 -
--type type
: アプリケーション・イメージ(.app
)を作成する場合は、app-image
を指定します。パッケージ(.pkg
)を作成する場合は、pkg
を指定します。このオプションを指定しない場合、このオプションはディスク・イメージ(.dmg
)を作成します。 -
--mac-entitlements path
: バンドル内の実行可能ファイルおよびライブラリに署名するときに使用する権限を含むファイルへのパス。--mac-entitlements
オプションも--mac-app-store
オプションも指定しない場合、jpackage
は組込みリソースである権限ファイルdefault.plist
を使用します(「パッケージ化で使用されるリソース」を参照)。これには、署名されたアプリケーションがJDKを実行できるようにする権限が含まれています。
次のコマンドでは、「Developer ID Application: developer.example.com」証明書で署名されたアプリケーション・イメージを含むディスク・イメージ(.dmg
)が生成されます。ディスク・イメージは、接頭辞com.example.developer.OurApp.
およびチーム名developer.example.comで生成されます。
jpackage --name DynamicTreeDemo --input myApps --main-jar DynamicTree.jar \
--mac-sign --mac-package-signing-prefix com.example.developer.OurApp. \
--mac-signing-key-user-name "developer.example.com"
次のコマンドでは、「Developer ID Installer: developer.example.com」証明書で署名されたアプリケーション・イメージを含むパッケージ(.pkg
)が生成されます。パッケージは、接頭辞com.example.developer.OurApp.
およびチーム名developer.example.comで生成されます。
jpackage --type pkg --name DynamicTreeDemo --input myApps \
--main-jar DynamicTree.jar --mac-sign --mac-package-signing-prefix com.example.developer.OurApp. \
--mac-signing-key-user-name "developer.example.com"
Mac App Storeのアプリケーション・パッケージに署名するためのオプション
Mac App Storeのアプリケーション・パッケージに署名するには、次のjpackage
オプションも含めます:
-
--mac-app-store
:jpackage
出力がMac App Storeを対象としていることを示します。 -
--mac-entitlements path
: バンドル内の実行可能ファイルおよびライブラリに署名するときに使用する権限を含むファイルへのパス。このファイルにより、アプリケーションをシステム・リソースとユーザー・データに制限するアプリケーション・サンドボックス権限が有効になります。これは、Mac App Storeを介して配布されるアプリケーションに必要です。--mac-entitlements
オプションを指定せず、--mac-app-store
オプションを指定する場合、jpackage
は組込みリソースである権限ファイルsandbox.plist
を使用します(「パッケージ化で使用されるリソース」を参照)。これには、アプリケーション・サンドボックス権限を有効にする<key>com.apple.security.app-sandbox</key><true/>
が含まれています。 -
--mac-app-category category
: Mac App Storeのアプリケーション・パッケージを最もよく表すカテゴリを指定します。jpackage
ツールは、LSApplicationCategoryTypeの値を、アプリケーションの.plist
ファイルのこのオプションの値に設定します。このオプションのデフォルト値はutilities
です。有効なカテゴリのリストは、Apple Developer DocumentationのLSApplicationCategoryTypeを参照してください。