Как создать вспомогательное приложение для Mac App, чтобы оно запускалось при входе пользователя в систему? - PullRequest

Ответы [ 4 ]

9 голосов
/ 16 ноября 2011
+ (void)startHelper {
    NSURL *helperURL = [[[NSBundle mainBundle] bundleURL] URLByAppendingPathComponent:@"Contents/Library/LoginItems/YourHelper.app" isDirectory:YES];
    OSStatus status = LSRegisterURL((CFURLRef)helperURL, YES);
    if (status != noErr) {
        NSLog(@"Failed to LSRegisterURL '%@': %jd", helperURL, (intmax_t)status);
    }


    Boolean success = SMLoginItemSetEnabled(CFSTR("com.yourcompany.helper-CFBundleIdentifier-here"), YES);
    if (!success) {
        NSLog(@"Failed to start Helper");
    }
}

Обратите внимание, что помощник должен быть упакован с основным приложением в каталоге «Contents / Library / LoginItems».Вам нужно будет создать его во время сборки и скопировать туда помощника.

3 голосов
/ 31 мая 2012

Я нашел удобную ссылку:

http://www.delitestudio.com/2011/10/25/start-dockless-apps-at-login-with-app-sandbox-enabled/

РЕДАКТИРОВАТЬ: к сожалению, эта ссылка больше не работает.Возможно, кто-то мог бы предложить лучшую альтернативу ...

Это хороший учебник для регистрации элемента входа в среде с песочницей, если это полезно (и нам всем это нужно в конечном итоге!).Важно то, что, к сожалению, вы должны скопировать ваше встроенное основное приложение в папку «Приложения» и не делать то, что я делаю, а забыть поместить в песочницу вспомогательное приложение и добавить строку Application is agent (UIElement) в список помощников сTRUE для значения.NSLog и Console теперь ваш старомодный друг-отладчик.

... просто нужно выяснить, как заставить вспомогательное приложение запускать основное приложение, когда они оба находятся в песочнице .....Изменить: Найдено этот вопрос: Какао: право песочницы для запуска другого приложения

0 голосов
/ 16 сентября 2011

В основном вам нужно взглянуть на Launch Services, который является просто оберткой вокруг launchd, которую вы можете проверить, посмотрев на man launchd в терминале.

или посмотрите на этот вопрос здесь, на SO . Как открыть приложение при входе в систему?

0 голосов
/ 15 сентября 2011

Я никогда не использовал LSRegisterURL, я могу ответить на первый вопрос: чтобы установить бит LSUIElement, просто откройте .plist и добавьте строку «Приложение - агент (UIElement)», затем установите значение ИСТИНА.

...