2012-10-18 5 views
8

私はシェルからメインのココアアプリを起動する私が作ったシンプルなUnixツールを持っています。コンテナオブジェクトの初期化:私は、次のコマンドラインツールをサンドボックスにする方法は?

サンドボックスの作成に失敗しましたエラーメッセージを見ることができますconsole.appに、:

私はそれをサンドボックス化する必要がありますが、私はそれを実行すると、エラー「4不正な命令」でクラッシュ失敗:NIL visdiffのエラー説明のないコンテナ情報オブジェクト

ファイルはcodesignで正しく署名されています。

私はポストMac OS app, sandbox with command line tool?を読んだが、それは

+0

多分もっと多くの情報が必要です。あなたのツールはあなたのアプリにどのようにパッケージ化されていますか?どのようにツールを "シェルから"実行するのですか(コード、お願い)。あなたが言及した他の質問(あなたはどこに問題にぶつかったのですか)について何が助けになりませんでしたか? –

+0

コード署名中に--entitlements引数を使用しましたか? – Marius

答えて

5

私はこの正確な問題を抱えていました。埋め込まれたInfo.plistを追加すると、それはなくなりました。

(ビルドディレクトリにinfo.plistを持っていると仮定して)これらの打ち鳴らすフラグを試してみてください。

-Xlinker -sectcreate -Xlinker __TEXT -Xlinker __info_plist -Xlinker info.plist

+1

うわー。あなたはその日を救った。もし私ができれば、私はあなたのSO点を今すぐ寄付します。ありがとうございました!!! – Lizza

+0

あなたは大歓迎です:) –

+0

埋め込みInfo.plistで追加した情報は?私はこのplistがunixファイルのためだと信じています。 – Swati

4

は、コンソールから直接起動コンソールアプリケーションですか、それはメインサンドボックス化アプリケーションから呼び出された助けていないのですか?あなただけが親プロセスからバイナリを呼び出すことができ、その後、もちろん

<dict>                                          
    <key>com.apple.security.app-sandbox</key>                                 
    <true/>                                          
    <key>com.apple.security.inherit</key>                                  
    <true/>                                          
</dict> 

:いくつかのバイナリをサンドボックス化しようとしたとき、私は同様のエラーを受信し、私は以下のエンタイトルメントを使用してそれを動作させるためにちょうどことができました私はあなたのバイナリがどのように呼び出されたかを尋ねたのです。:))

+0

いいえ、私のコマンドラインツールはUNIXシェルから呼び出されています。メインのサンドボックスアプリケーションではまったく無意味です – dafi

0

あなたがcom.apple.security.inheritで実行可能ファイルを署名する場合にのみ、別のことで呼び出すことができるようです既にサンドボックス化されているアプリケーション。したがって、あなたはcodesignを実行した後、cmdlineからそれを呼び出すことはできません。

+0

ええ、この問題は、最小のcom.apple.security.app-sandbox + com.apple.security.inherit plistでヘルパー実行ファイルに署名するとすぐに私に当たってしまいました。回避策はありますか?あるいは、各ヘルパー実行可能ファイルのための「実」エンタイトルメントを親アプリケーションのように追加する必要がありますか? com.apple.security.network.client?私のヘルパーは、ホームフォルダの範囲外にはるかに広いアクセスを必要とする可能性があるため、ファイルシステムの権利が心配です。 – user1475135

関連する問題