使用沙盒Mac应用程序中的xattr更改文件元数据

时间:2014-08-04 15:25:13

标签: objective-c macos metadata sandbox xattr

我正在尝试删除" com.apple.quarantine"文件中的属性放在

  

〜/ Library / Containers /....../ Library / Application Support。

使用NSTask和xattr导致"操作不被允许"控制台中的消息。作为第二个选项,我使用removexattr()尝试了头文件xattr.h。

我还尝试将LSFileQuarantineEnabled添加到Info.plist。从终端手动调用xattr。

似乎沙盒阻止xattr使用Objective-C删除属性。

1 个答案:

答案 0 :(得分:0)

在沙盒应用程序中运行辅助二进制文件...

首次测试:

  1. 使用" Keychain Access"创建证书
    1. "证书助理" > "创建证书......"
    2. 将其命名为......
    3. 覆盖默认设置
    4. ...
  2. 用你的帮助二进制文件(更新程序)签名 codesign -s <certificate A> <binary>
  3. 将二进制文件复制到您的项目
  4. 检查它是否与#34; Build Phases&#34; &GT; &#34;复制捆绑资源&#34;
  5. 转到产品&gt;档案
    1. 分发......
    2. 导出为应用程序
    3. 使用您的签名身份
  6. 如果您想将其发送到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];
    

    无需复制或移动文件; - )