#objective-c #cocoa
#objective-c #cocoa
Вопрос:
Я написал сценарий ruby, который я сейчас рассматриваю для завершения в панели настроек с целью настройки моего сценария ruby. Теперь я надеялся, что у меня будет возможность выполнить некоторые произвольные команды, когда будет установлена эта панель настроек, Чтобы установить необходимые рубиновые камни и т. Д., Однако, похоже, я нигде не могу найти никакой документации по такого рода функциям.
Любые идеи будут оценены.
Приветствую Ника
Ответ №1:
Вы могли бы просто вызвать скрипт ruby, который выполняет любые необходимые настройки для вас. Если он вам нужен для установки gems, вам, вероятно, потребуется запустить его с повышенными привилегиями. Вот как я делал это в прошлом:
// Get the path to the helper script from the main app bundle
NSBundle *appBundle = [NSBundle mainBundle];
NSString *scriptPath = [appBundle pathForResource: @"helperScript"
ofType: @"rb"];
// Construct the applescript command to run to helper script with elevated privileges
NSString *scriptCommand = [NSString stringWithFormat: @"do shell script "ruby '%@'" with administrator privileges", scriptPath];
// Execute the helper script via Applescript, log any errors
NSAppleScript *executeRubyScript = [[NSAppleScript alloc] initWithSource: scriptCommand];
NSDictionary *error = [[NSDictionary alloc] init];
[executeRubyScript executeAndReturnError: amp;error];
[executeRubyScript release];
Комментарии:
1. привет, лоттс, спасибо за ответ. Это кажется отличным способом сделать это. Единственное, что, я думаю, я не могу понять, это то, где я помещаю это в свою панель настроек, чтобы она запускалась при установке панели настроек или запуске в первый раз? Возможно ли это вообще или мне просто нужно написать свой сценарий установки, чтобы он мог обнаружить, что он уже был выполнен?
2. Просто сделайте выполнение сценария условным на основе того, что он должен делать. Если предполагается, что ваш сценарий помещает файлы в определенное местоположение, проверьте, существуют ли файлы перед запуском сценария.