(1)まず、追加するすべての属性を含むテキスト ファイルを作成する必要があります。私のテキストファイルは次のようになります。
Permissions: all-permissions
Codebase: http://www.codebase.com/myApp/dist
Application-Name: My Application
と名付けましたaddToManifest.txt
。明らかに、アプリケーションのニーズに合わせてパラメーターを変更する必要があります。
(2)次に、これをメインの .jar とすべてのライブラリにも追加する必要があります。これを行うコマンドは次のとおりです。
jar ufm dist\myApp.jar addToManifest.txt
もちろんdist\myApp.jar
、メインの .jar が何であれ、それを指す必要があります。また、すべてのライブラリに対してもこれを行う必要があります。
jar ufm dist\lib\jcommon-1.0.16.jar addToManifest.txt
jar ufm dist\lib\jfreechart-1.0.13.jar addToManifest.txt
jar ufm dist\lib\joda-time-2.2.jar addToManifest.txt
...
(注: Windows では、このための.bat
ファイルを作成しました。)
これを行うと、属性が.jar
s に書き込まれます。zip マネージャー (7-Zip など) で .jar を開き、MANIFEST.MF
ファイルを抽出してテキスト エディターで開くと、属性が一覧表示されます。
(3)属性を追加したら、アプリを再署名する必要があります。そのためのコマンドは次のとおりです。
jarsigner dist\myApp.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
すべてのライブラリに対してもこれを行う必要があります。
jarsigner dist\lib\jcommon-1.0.16.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
jarsigner dist\lib\jfreechart-1.0.13.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
jarsigner dist\lib\joda-time-2.2.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
その後、属性を追加し、.jar
署名する必要があります!
注: ライブラリ構造を変更しない限り、ライブラリに署名/展開する必要があるのは 1 回だけです。つまり、アプリを更新しているが、ライブラリのマニフェストが既に変更され、適切に署名され、展開されている場合、アプリからライブラリを追加/削除しない限り、ライブラリを再署名/展開する必要はありません。
注 2: 現在のバージョンの Netbeans は、プライマリ .jar のみCodebase
に属性を追加してPermissions
マニフェストしますが、ライブラリには追加しません。Netbeans を使用している場合、重複するマニフェスト属性を追加しようとすると、ユーティリティから警告が表示されます。https://netbeans.org/bugzilla/show_bug.cgi?id=234231を修正するためのキューにバグレポートがあります。jar
編集: Netbeans (8.0) の最新バージョンでは、3 つすべて ( Codebase
、Permissions
、およびApplication-Name
) がマニフェストに追加されます。