2012-02-02 4 views
6

Я пытаюсь изолировать мое приложение перед отправкой в ​​хранилище Mac App, и мне нужно открыть файл dmg. Я попробовал следующее, но я не знаю, должно ли оно работать с Apple Sandbox.Песочница и NSTask

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.

+0

Вы не можете монтировать изолированный DMG, это небезопасно. – CodaFi

+0

У меня такая же проблема. Просто интересно, исправил ли @ user375584 его. благодаря – Josh

ответ

0

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

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