0

に配置されたファイルの「com.apple.quarantine」属性を削除しようとしています

~/Library/Containers/....../Library/Application Support.

NSTask と xattr を使用すると、コンソールに「操作は許可されていません」というメッセージが表示されます。2 番目のオプションとして、removexattr() を使用してヘッダー xattr.h を試しました。

また、LSFileQuarantineEnabled を Info.plist に追加しようとしました。ターミナルから xattr を手動で呼び出すと機能します。

サンドボックスは、xattr が Objective-C を使用して属性を削除するのを妨げているようです。

4

1 に答える 1

0

サンドボックス化されたアプリ内でヘルパー バイナリを実行する...

最初のテストの場合:

  1. 「キーチェーン アクセス」を使用して証明書を作成する
    1. 「証明書アシスタント」 > 「証明書の作成 ...」
    2. それに名前を付けます ...
    3. デフォルト設定を上書きする
    4. ...
  2. ヘルパーバイナリ(アップデーター)に署名する codesign -s <certificate A> <binary>
  3. バイナリをプロジェクトにコピーします
  4. 「Build Phases」>「Copy Bundle Resources」内でリンクされていることを確認します
  5. 製品 > アーカイブに移動
    1. 分配します ...
    2. アプリケーションとしてエクスポート
    3. 署名 ID を使用する

Mac App Store に送信する場合は、正しい証明書を使用してください。

ヘルパー バイナリを開始/呼び出すために使用しているコードは次のとおりです。

NSString * resourcePath = [[NSBundle mainBundle] resourcePath];
NSTask *testbin = [[NSTask alloc] init];
NSString * path = [resourcePath stringByAppendingString:@"/testbin"];
[testbin setLaunchPath:path];
[testbin launch];
[testbin waitUntilExit];

ファイルをコピーまたは移動する必要はありません;-)

于 2014-08-18T15:58:49.803 に答える