Песочница и NSTask

Я пытаюсь поместить свое приложение в песочницу перед отправкой в ​​магазин приложений Mac, и мне нужно открыть файл 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.

Спасибо за любую помощь! С.


person Soch S.    schedule 02.02.2012    source источник
comment
Вы не можете установить DMG в песочнице, это небезопасно.   -  person CodaFi    schedule 26.05.2013
comment
У меня точно такая же проблема. Просто интересно, исправил ли это @user375584. Спасибо   -  person Josh    schedule 18.02.2015


Ответы (1)


Официальное заявление о NSTask и Sandboxing: «Некоторые исполняемые файлы могут работать». Для меня это переводится как «не рассчитывай на это». Хотя этот исполняемый файл, похоже, правильно отображает меню справки, я вижу ошибки песочницы в Console.app, которые заставят меня насторожиться. Скриншот

Я бы согласился с CodaFi в том, что вы определенно не должны рассчитывать на то, что это будет действовать так, как вы бы этого хотели.

person Keith Smiley    schedule 05.07.2013