16

OS Xの場合、JavaアプリケーションをDMG内に配布します。Mountain Lionのリリース以降、アプリを開くと次のエラーメッセージが表示されます。

[アプリ名]が破損していて開くことができませんでした。ディスクイメージを取り出す必要があります。

どうやら修正は.appファイルに署名することなので、コード署名ガイドを読みました。これをワンクリックビルドプロセスに統合する方法という重要な質問を除けば、すべてが簡単なようです。

すべてのプラットフォームで製品を構築することは、Linux開発マシンで行われます。Antスクリプトを実行すると、Windowsインストーラー、スターターEXE、Linuxインストーラー、OS Xアプリケーション、およびDMGがすべてビルドされます。そこで、コード署名をこのプロセスに統合したいと思います。

Linux用の「codesign」に相当するものはありますか?

4

3 に答える 3

6

Linux で Mac OS X アプリケーションにコード署名する文書化された方法はありません。

これまでのところ、これを行う唯一の方法は、SSH で Mac に接続し、それを使用することです。

一方、@Steve McLeod ( https://stackoverflow.com/a/55906962/28190 ) によると、インストーラー パッケージ install4j はこれを提供します。

Windows および Mac OS X での統合コード署名。「一般設定」セクションで、install4j に「コード署名」タブが追加されました。このタブでは、Windows および Mac OS X 用のコード署名証明書を構成できます。コード署名は、対応するメディア ファイル内のすべてのランチャーおよびインストーラー アプリケーションに適用されます。コード署名の実装はクロスプラットフォームであるため、たとえば Linux ビルド サーバーから Windows および Mac OS X のメディア ファイルに署名できます。

したがって、技術的に可能でなければなりません。

于 2012-08-28T09:40:29.487 に答える
1

これを回避するには、アプリケーションのJavaApplicationStubとinfo.plistに署名するだけで、「Resources」フォルダーを署名から除外します。次に、事前に署名されたコンテナを使用するようにビルドプロセスを変更する必要があります。もちろん、これはコード署名の意味ではありませんが、機能します;-)

これを実現するには、次の手順を実行します。

  • いつものように.appを作成します
  • Macに移動します
  • 次の内容のファイル「ResourceRules.plist」を作成します。

ResourceRules.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>rules</key>
        <dict>
                <key>^Resources/</key>
                <false/>
                <key>^version.plist$</key>
                <true/>
        </dict>
</dict>
</plist>
  • 次のコマンドで署名します。CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"codesign -s "Certificate Name" --resource-rules ResourceRules.plist -fv MyApp.app

  • 次に、リソース内のすべてを削除し、署名を確認します(codesign -v -vMyApp.app)。あなたはそれがまだ有効であることがわかります

  • ビルドプロセスで完全な署名付きスタブを使用します。リソースですべてを変更できますが、info.plistを変更することはできません。

于 2012-11-08T08:22:10.297 に答える