状況によっては、jpackageユーティリティを使用して、署名済みDMGファイルを作成してユーザーに配信しようとしています。このDMGに署名する必要があるのは、ソフトウェアを公証したいからです。 ちなみに、(まだ)jpackageを使用して公証が可能かどうかはわかりませんが、とにかく試してみます。
ただし、jpackageの組み込みのコード署名オプションを使用すると問題があります。これは、公証を成功させるための前提条件です。
オプション--mac-sign --mac-package-signing-prefix CardrDebate --mac-signing-key-user-name "Developer ID Application: ********** (*******)"
を使用してjpackageを実行しています(これはStackOverflowで公開されているため、実際の開発者IDを編集しました)。
Jpackageアプリイメージを作成した後、生成されたいくつかの.dylibファイルに移動してcodesign -vvv {filename}.dylib
を試して、生成されたコードが実際に署名されているかどうかをテストしました。署名されていますが、まったく署名されていませんでした)。
したがって、私の問題は、macOSでのjpackageの署名オプションの(潜在的に)誤った使用によるものだと思います。これらをどのように使用すればよいですか?
FYI-JDK 14.0.1でこの問題を掘り下げ、jpackageが正しく機能するまで、別の暫定的な解決策として知識を共有したいと考えていました。
JDK 14のソースパス:src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal
ファイルMacAppBundler.Javaには、次の行(81&82)が含まれています: "Developer ID Application:" + SIGNING_KEY_USER.fetchFrom(params)、
ここで、SIGNING_KEY_USERは-mac-signing-key-user-nameパラメーターの値をコマンドラインから取得します。
これらの行でjpackageを使用してDMGに署名すると、常に失敗しました。 (「開発者IDアプリケーション:」が私の証明書の名前と一致しませんでした。)
これらの行を変更して、「開発者IDアプリケーション:」と次の「+」記号を削除しました。 jpackageの呼び出し時に、証明書の完全な名前をパラメーター値として使用しました。
--mac-signing-key-user-name "サードパーティMac開発者アプリケーション:John Smith(ABCDEFGHIJ)"
そして、jpackageは(どうやら)DMGをビルドして署名します。これを実際にApple Storeに送信しようとしたため、ないため、これはまだ不完全である可能性があります。
興味深いことに、MacAppStoreBundler.Javaソースには、正しい「サードパーティMac開発者アプリケーション:」と「サードパーティMac開発者インストーラ:」プレフィックス文字列が含まれているため、疑わしいそのjpackagerは実際には間違ったメソッドを呼び出していますが、まだ整理されていません。おそらく、jpackageは、何をすべきかを正確に指定するためにいくつかの追加パラメーターを必要とする(ただし、 '-type dmg'は正しいロジックを呼び出すと考えます) )。
再現するための基本的な(不器用な)手順: