gpt4 book ai didi

objective-c - 如何阻止我的应用程序设置 "quarantine"位?

转载 作者:太空狗 更新时间:2023-10-30 03:38:24 26 4
gpt4 key购买 nike

自 OS X 10.7.3 以来,我的文本编辑器在它接触的任何文件上设置“隔离”位。

我的文本编辑器是为处理 shell 脚本而设计的,如果设置了隔离位,则无法从命令行执行 shell 脚本,直到您在 Finder 中双击它并通过“此应用程序下载自互联网”警报(或使用 xattr 删除隔离位)。

例如,我刚刚在我的应用程序中创建了一个“hello world”脚本,它已被隔离,无法执行:

$ xattr -l foo
com.apple.quarantine: 0006;4f51dd2f;Dux;
$ chmod +x foo
$ ./foo
-bash: ./foo: Operation not permitted

如果我删除隔离位,脚本会工作:

$ xattr -d com.apple.quarantine foo
$ ./foo
hello world


根据一些论坛帖子,TextEdit 还在它创建的任何 shell 脚本上设置了隔离位。

我正在使用一个简单的 NSDocument 子类来创建文件:

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
return [self.textStorage.string dataUsingEncoding:self.stringEncoding];
}


如何从我的应用程序中创建的文件中删除隔离位?其他文本编辑器,如 TextWrangler,不设置隔离位。

更新

更多信息,这仅在创建“脚本应用程序”文件时发生,该文件是从 perl 脚本到 html 的任何内容。

它只会在我的应用程序被沙盒化时发生。禁用沙盒可以解决问题,但这不是长期解决方案。

我已经用 Radar 提交了一个错误,看起来除了等待/希望大道能修复它之外可能别无他法。

最佳答案

尝试确保将 Info.plist 中的 LSFileQuarantineEnabled 设置为 false(这应该是默认值)。如果该属性仍在设置中,那么我建议提交错误报告并使用 removexattr(2) 以编程方式将其删除/fremovexattr(2)

关于objective-c - 如何阻止我的应用程序设置 "quarantine"位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9544874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com