沙盒和NSTask

7

我正在尝试在提交到Mac App Store之前对我的应用进行沙盒处理,我需要打开一个dmg文件。我尝试了以下方法,但是我不知道它是否适用于Apple沙盒。

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/hdiutil"];
[task setArguments:
 [NSArray arrayWithObjects: @"attach", [NSString stringWithFormat:@"%@/myfile.dmg", documentsDirectory], nil]];
[task launch];
[task waitUntilExit];
if (0 != [task terminationStatus])
    NSLog(@"Mount failed.");
[task release];

如果我将完整路径复制到终端中,它可以工作,但如果从应用程序运行,则会出现以下错误:

diskimages-helper[11437:303] ERROR: couldn't connect to framework.
diskimages-helper[11437:303] DIHelper: setupConnectionToFrameworkWithUUID: failed
hdiutil: attach failed - No child processes
Mount failed.

感谢任何帮助! S.

你不能挂载一个沙盒化的DMG,这是不安全的。 - CodaFi
我遇到了完全相同的问题。只是想知道 @user375584 是否已经解决了它。谢谢。 - Josh
1个回答

1
NSTask和沙盒的官方说法是“某些可执行文件可能会工作”。对我来说,这意味着“不要指望它”。虽然这个可执行文件似乎能正确显示帮助菜单,但我在Console.app中看到了沙盒错误,这让我感到担忧。我同意CodaFi的观点,你绝对不能指望它按照你的意愿运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接