沙盒和NSTask

Soc*_* S. 7 macos objective-c appstore-sandbox

我正在尝试沙箱我的应用程序,然后提交到Mac App商店,我需要打开一个dmg文件.我尝试了以下,但我不知道它是否应该与Apple Sandbox一起使用.

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];
Run Code Online (Sandbox Code Playgroud)

如果我将完整路径粘贴到终端它是否有效,如果我从应用程序运行,我会收到以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!S.

Kei*_*ley 1

关于 NSTask 和沙箱的官方说法是“某些可执行文件可能有效”。对我来说,这意味着“不要指望它”。虽然这个可执行文件似乎确实正确显示了帮助菜单,但我确实在 Console.app 中看到了沙箱错误,这会让我保持警惕。截屏

我同意CodaFi在这一点上的观点,即你绝对不应该指望它按照你想要的方式行事。