2013-03-06 1 views
5

에서 맥 OS X (LoginItem) 도우미 응용 프로그램을 시작 나는 응용 프로그램 Main.app과 Main.app/Library/LoginItems 폴더 내에서 응용 프로그램 Helper.app 있습니다. Main.app는 사용자가 시작할 수 있으며 사용자는 Helper.app를 로그인 항목으로 설정할 수 있습니다. (SMLogItemSetEnabled() 사용),이 완벽하게 작동합니다. 사용자가 Helper.app를 로그인 항목으로 설정하면 해당 항목도 실행됩니다.주 응용 프로그램

그러나 로그인 항목으로 설정하지 않고 Helper.app을 시작할 수도 있습니다. 나는 lsboxd 제공

[[NSWorkspace sharedWorkspace] launchApplication: newPath]; 

이 작업을 수행하려고했습니다 : 프로세스가 실행하지 못하도록하는 ... 오류 및

[NSTask launchedTaskWithLaunchPath:newPath arguments: [NSArray array]]; 

느릅 나무와 함께 제공하는 거부 ​​금지-sandbox- 재 입력 오류. 다음과 같이 (?를 Helper.app이 내부 입니다 아마도 때문에 Main.app)

하는 newpath가 발견 :

NSMutableArray *pathComponents = [NSMutableArray arrayWithArray:[[[NSBundle mainBundle] bundlePath] pathComponents]]; 
[pathComponents addObject:@"Contents"]; 
[pathComponents addObject:@"Library"]; 
[pathComponents addObject:@"LoginItems"]; 
[pathComponents addObject:@"Helper.app"]; 
[pathComponents addObject:@"Contents"]; 
[pathComponents addObject:@"MacOS"]; 
[pathComponents addObject:@"Helper"]; 
NSString *newPath = [NSString pathWithComponents:pathComponents]; 

어떻게이 문제를 해결할 수 있습니까? :)

감사합니다.

+0

http://stackoverflow.com/questions/12971549/mac-os-sandbox-launching-main-application-from-helper - 그것은 * * 한 번 도망 간다 서명 문제가 될 수 있습니다 앱이 앱 스토어에 있습니다 – Petesh

+0

1Password Helper 프로세스와 함께 1Password가이를 수행 할 수있는 것처럼 보이며 샌드 박스 처리됩니다. 나는 그들이 어떻게 그것을 성취 하는지를 정말로 궁금해한다. –

+0

나는 또한 이것을 검색하고 있었고 나는 당신이 그것을 묘사 한 방식으로 시도했다. (나는 경로를 하드 코딩했는데, 왜 그렇게하는지 왜 볼 수 없다는 것을 제외하고는) 즉시 작동했다. 나는 당신이 뭘 잘못하고 있는지 (또는 내가 뭔가 잘못하고 있다면, 그것이 나를 위해 일하게 만든다) 모르겠다. – Sitses

답변

0

NSTask 및 launchctl을 사용할 수도 있습니다. 예 또는 NSTask 및 bash 스크립트를 사용할 수 있습니다. 예 :

#Run Menu 
if [ $(ps -u $USERNAME | grep -v grep | grep -m1 '/Library/Menu/Menu.app/Contents/MacOS/Menu' | awk '{print $5}') ]; then 
    echo "Menu already running"; 
else 
    echo "Menu not running" 
    if [ $(users $USERNAME) == $USERNAME ]; then 
     echo "User logined" 
     echo "running menu for user $USERNAME" 
     sudo -u $USERNAME /Library/Menu/Menu.app/Contents/MacOS/Menu& 
    else 
     echo "User not logined" 
    fi 
fi