2 基本のパッケージ化

アプリケーションで、複数のランチャやファイル・アソシエーションなどの機能のカスタマイズやサポートを必要としない場合は、パッケージ化に必要なオプションは数個のみです。

最も単純な方法でパッケージ化するには、アプリケーションをパッケージ化する場所と、メイン・クラスを含むJARまたはモジュールの名前が必要です。

  • 次に、非モジュラ・アプリケーションのパッケージ例を示します:

    jpackage --input app-directory --main-jar jar-file [--main-class main-class]

    app-directoryは、アプリケーションのファイルが格納されているディレクトリの名前です。パスは、絶対パスまたは現在のディレクトリを基準とした相対パスのどちらでもかまいません。jar-fileは、アプリケーションのメイン・クラスを含むJARファイルの名前です。main-classはメイン・クラスの名前で、MANIFEST.MFファイルでメイン・クラスが識別されていない場合にのみ必要です。パッケージの完了には、ツール・デフォルトとプラットフォーム・デフォルトが必要に応じて使用されます。

  • 次に、モジュラ・アプリケーションのパッケージ例を示します:

    jpackage --module-path module-path --module main-module[/class]

    module-pathは、モジュールのディレクトリまたはモジュールJARファイルへのパスです。このパスは、絶対パスまたは現在のディレクトリからの相対パスのいずれかで指定できます。複数のパスの場合、LinuxとmacOSではコロン(:)、Windowsではセミコロン(;)でパスを区切るか、--module-pathオプションの複数のインスタンスを使用します。main-module/classは、メイン・クラスとアプリケーションのメイン・クラスの名前を含むモジュールの名前です。メイン・クラスの名前は、メイン・モジュールがメイン・クラスを識別しない場合にのみ必要です。パッケージの完了には、ツール・デフォルトとプラットフォーム・デフォルトが必要に応じて使用されます。

オプションが指定されていない場合のデフォルト

オプションを使用して、アプリケーションの名前、作成されるパッケージのタイプ、インストールの場所、およびパッケージのその他の特性を制御できます。オプションが指定されない場合は、デフォルト値が使用されます。

次のデフォルトは、jpackageの実行時に指定されないオプションに適用されます:

  • このパッケージ・タイプは、プラットフォームに依存します:

    • Linuxでは、デフォルトはDebian Linuxの場合はdeb、他のバージョンのLinuxの場合はrpmになります。
    • macOSでは、デフォルトはdmgです。
    • Windowsでは、デフォルトはexeです。

    異なるタイプのパッケージを生成するには、--typeオプションを使用します。

  • 生成されたパッケージは、現在の作業ディレクトリに書き込まれます。別の場所にパッケージを書き込むには、--destオプションを使用します。

  • パッケージの名前は、アプリケーション名およびアプリケーション・バージョンから生成されます。アプリケーション名が指定されていない場合は、メインJARまたはモジュールの名前が使用され、その後ろにバージョンが続き、そのバージョンが1.0にデフォルト設定されます(例: HelloWorld-1.0.exe)。アプリケーションの名前を変更するには、--nameオプションを使用します。バージョンを変更するには、--app-versionオプションを使用します。

  • Javaランタイムは、jlinkコマンドを使用してパッケージ化プロセスで生成されます。--add-modulesおよび--jlink-optionsオプションは、パッケージ化プロセスの一部としてアイテムをランタイムに追加するために使用できます。カスタム・ランタイムをパッケージ化するには、--runtime-imageオプションを使用します。

  • インストール・ディレクトリはプラットフォーム固有です:
    • Linuxでは、デフォルトは/opt/application-nameです
    • macOSでは、デフォルトは/Applications/application-nameです
    • Windowsでは、デフォルトはc:\Program Files\application-nameです。--win-per-user-installオプションを使用した場合、デフォルトはC:\Users\user-name\AppData\Local\application-nameです

    アプリケーション・ディレクトリの名前はデフォルトでアプリケーションの名前になります。ディレクトリに別の名前を付けるには、--install-dirオプションを使用します。

  • アプリケーション・ランチャの名前はデフォルトでアプリケーションの名前になります。アプリケーションに複数のランチャがある場合は、--add-launcherオプションを使用して識別します。

  • アプリケーションの起動時、デフォルトのコマンドライン引数またはJavaランタイム・オプションはアプリケーションに渡されません。ユーザーは、アプリケーションの起動時にコマンドラインからアプリケーション引数を渡すことはできますが、Javaランタイム・オプションを渡すことはできません。

  • アプリケーションのデフォルト・アイコンが使用されます。別のアイコンの場合、--iconオプションを使用します。

  • Linuxの場合、パッケージ名はデフォルトでアプリケーション名に設定されます。パッケージに別の名前を付けるには、--linux-package-nameオプションを使用します。

  • macOSの場合:

    • アプリケーション識別子は、デフォルトでメイン・クラス名になります。別の識別子を使用するには、--mac-package-identifierオプションを使用します。

    • メニュー・バーに表示されるアプリケーションの名前は、デフォルトでアプリケーションのメイン・クラス名になります。別の名前を使用するには、--mac-package-nameオプションを使用します。

非モジュラ・アプリケーションのパッケージ化

非モジュラ・アプリケーション・パッケージは、パッケージ化するファイルの場所およびメインJARファイルの名前のみを指定することでパッケージ化できます。デフォルトは、パッケージおよびアプリケーションを説明する他のオプションに使用されます。

次のコマンドをWindowsシステムで実行すると、非モジュラ・アプリケーションがmySamples\hwappディレクトリにHelloWorld.jarファイルのメイン・クラスでパッケージ化されます。

jpackage --input mySamples\hwapp --main-jar HelloWorld.jar 

他のオプションは使用されないため、次のデフォルトが適用されます:

  • 生成されるパッケージのデフォルトのタイプはexeです。

  • 生成されるパッケージの名前はHelloWorld-1.0.exeです。

  • パッケージは現在のディレクトリに書き込まれます。

  • アプリケーションとともにパッケージ化されるランタイムは、パッケージ化プロセスの一部として生成されます。

  • アプリケーションは、c:\Program Files\HelloWorldディレクトリにインストールされます。

  • ランチャの名前はHelloWorld.exeです。

  • デフォルトのアイコンがアプリケーションに使用されます。

  • ショートカットは作成されず、アプリケーションはどのメニューにも追加されません。ユーザーは、アプリケーションがインストールされているディレクトリに移動して実行する必要があります。

  • アプリケーションの起動時、デフォルトの引数またはJavaランタイム・オプションはアプリケーションに渡されません。

モジュラ・アプリケーションのパッケージ化

モジュラ・アプリケーション・パッケージは、パッケージ化するモジュールの場所およびメイン・モジュールの名前のみを指定することでパッケージ化できます。デフォルトは、パッケージおよびアプリケーションを説明する他のオプションに使用されます。

次のコマンドをDebian Linuxシステムで実行すると、モジュラ・アプリケーションがmyModAppsディレクトリにmodhw/modhw.HelloWorldModモジュールのメイン・クラスでパッケージ化されます

jpackage --module-path myModApps --module modhw/modhw.HelloWorldMod

他のオプションは使用されないため、次のデフォルトが適用されます:

  • 生成されるパッケージのデフォルトのタイプは、Debianシステムの場合、debです

  • 生成されるパッケージの名前はHelloWorldMod-1.0.debです。

  • パッケージは現在のディレクトリに書き込まれます。

  • アプリケーションとともにパッケージ化されるランタイムは、パッケージ化プロセスの一部として生成されます。

  • アプリケーションは/opt/HelloWorldModディレクトリにインストールされます。

  • ランチャの名前はHelloWorldModです。

  • デフォルトのアイコンがアプリケーションに使用されます。

  • ショートカットは作成されず、アプリケーションはどのメニューにも追加されません。ユーザーは、アプリケーションがインストールされているディレクトリに移動して実行する必要があります。

  • アプリケーションの起動時、デフォルトの引数またはJavaランタイム・オプションはアプリケーションに渡されません。

パッケージ・メタデータによるアプリケーションの識別

パッケージを作成する際、説明、ベンダー名、著作権表示など、アプリケーションに関する情報を指定することが必要な場合があります。

アプリケーションに関する情報をパッケージに追加するには、関連するjpackageオプションを使用して、パッケージ・メタデータを設定します。次の例は、Windowsシステムの場合です。
  • アプリケーションの名前を設定します。

    --nameオプションを使用して、ユーザーに表示する名前をアプリケーションに付けます。名前が指定されていない場合、デフォルトでメインJARファイルまたはモジュールの名前になります。

    次のコマンドは、DynamicTreeDemo-1.0.exeという名前の動的ツリー・アプリケーションのパッケージを作成します:

    jpackage --name DynamicTreeDemo --input myApps \
       --main-jar DynamicTree.jar 
  • アプリケーション・バージョンを設定します。

    --app-versionオプションを使用すると、アプリケーションのバージョンを指定できます。アプリケーション・バージョンが指定されていない場合、バージョンは1.0.にデフォルト設定されます。

    次のコマンドは、パッケージ名のバージョン部分をカスタマイズして、パッケージDynamicTreeDemo-2.0.exeを作成します:

    jpackage --name DynamicTreeDemo --app-version 2.0 \
       --input myApps --main-jar DynamicTree.jar
  • アプリケーションを説明します。

    --descriptionオプションを使用すると、アプリケーションの簡単な説明を含めることができます。デフォルトの説明はありません。

    次のコマンドは、ユーザーに対する動的ツリー・アプリケーションを示しています。説明にスペースが含まれている場合は、引用符が必要です:

    jpackage --dest packages --name DynamicTreeDemo \
       --app-version 2.0 --input myApps --main-jar DynamicTree.jar \
       --description "Demo application for testing functionality"
  • アプリケーションのベンダーを設定します。

    --vendorオプションを使用すると、アプリケーションの作成者として自分自身または会社を指定できます。デフォルトのベンダーはありません。

    次のコマンドは、動的ツリー・アプリケーションのベンダーを「Small, Inc」として識別します。ベンダー名にスペースが含まれる場合、引用符が必要です。

    jpackage --dest packages --name DynamicTreeDemo \
       --app-version 2.0 --input myApps --main-jar DynamicTree.jar \
       --description "Demo application for testing functionality" \
       --vendor "Small, Inc"
  • アプリケーションの著作権を設定します。

    --copyrightオプションを使用すると、アプリケーションに著作権を指定できます。デフォルトの著作権はありません。

    次のコマンドでは、動的ツリー・アプリケーションの著作権の文例が示されます。著作権にスペースが含まれる場合、引用符が必要です:

    jpackage --dest packages --name DynamicTreeDemo \
       --app-version 2.0 --input myApps --main-jar DynamicTree.jar \
       --description "Demo application for testing functionality" \
       --vendor "Small, Inc" --copyright "Copyright 2020, All rights reserved"