2015-01-24 2 views
2

나는 이미 실행 파일에 컴파일 된 C++ 명령 줄 응용 프로그램을 가지고 있으며이를 내 Xcode 프로젝트에 추가했습니다. 또한 프로젝트 속성의 빌드 단계 탭에 "파일 복사"섹션을 추가하고 "실행 파일"대상으로 실행 파일을 추가했습니다. 내 응용 프로그램을 빌드 할 때 내장 된 test.app에서 패키지 내용을 볼 때 test.app/Contents/MacOS 폴더에 나타납니다.Mac App Store의 os x 응용 프로그램에 샌드 박스 권한을 사용하여 명령 줄 유틸리티를 번들로 제공하는 방법

은 또한 응용 프로그램 샌드 박스 내가 맥 앱 스토어를 통해 내 응용 프로그램을 배포 할 수 있도록 (프로젝트의 기능 탭에서 사용할 수있다.

를 내가 내 응용 프로그램과 함께 번들로 제공되는이 명령 줄 실행 파일을 노출 할 수 있습니다 방법 사용자가 명령 줄 (터미널)에서 실행할 수 있도록 사용자를 검색합니까? 검색 엔진이나 StackOverflow에서이 파일 (또는이 파일에 대한 심볼릭 링크)을 사용자 PATH로 가져 오는 방법에 대해 아무것도 찾을 수 없었습니다. NSTask를 사용하여 심볼릭 링크를 만들려고했으나 앱 샌드 박스를 사용하지 않도록 설정 한 경우에만 작동합니다. (예 : 의미가 있습니다.) 다른 사람이 전에 어떻게 했습니까? 어떻게 작동 시키셨습니까? 아니면이 실행 파일을 신청서?

+0

그러던 어느 날 사용자 대신 tcsh를 사용하기로 결정하고, (그리고 CSH)이 가능한 초기화 파일의 완전히 다른 그러나 동등 지저분한 더미를 가지고 ... 목차/헬퍼 /. 이 문서의 "중첩 코드"섹션 -> https://developer.apple.com/library/mac/technotes/tn2206/_index를 읽어보십시오.htm – PnotNP

+0

Contents/Helpers에 실행 파일을 복사했지만 여전히 내 경로에 표시되지 않습니다. –

+0

샌드 박스 응용 프로그램과 함께 명령 줄 응용 프로그램에 권한을 추가하기 만하면됩니다. –

답변

3

나는 이것을하는 좋은 방법이 보이지 않습니다. 첫째, 설명 : PATH는 실행 파일 목록이 아닌 실행 파일을 포함하는 디렉토리 목록입니다. 하나의 실행 파일을 PATH에 추가 할 수있는 방법이 없습니다. 대신, 실행 파일을 사용자의 PATH에있는 디렉토리 중 하나에 넣거나 실행 파일이있는 디렉토리를 PATH에 추가하십시오.

OS X에서 기본 PATH는/usr/bin :/bin :/usr/sbin :/sbin :/usr/local/bin입니다. 처음 4 개의 디렉토리는 시스템 기본값에서 수정해서는 안되므로/usr/local/bin 만 가능합니다. 하지만 기본적으로 존재하지 않는 앱을 ​​만들려면 앱 스토어 정책에서 허용하지 않는 admin (실제로 루트) 권한이 필요합니다. 그게 다야.

이렇게하면 사용자의 PATH가 수정됩니다. 시스템 전반에 걸쳐이를 수행하는 "올바른 방법"은 admin (/ root) 권한이 필요한 /etc/paths.d에 파일을 배치하는 것입니다./etc/paths 파일을 기술적으로 수정하는 것은 똑같은 사용 권한 문제와 사용자 정의를 수행하는 잘못된 방법입니다.

다음으로는 사용자의 쉘 ​​초기화 스크립트를 수정 (/ 작성) 할 수 있습니다. 이 작업을 수행 할 수 있지만, 사용자가 사용할 수있는 몇 가지 셸이 있기 때문에 모든 작업을 수행 할 수 있습니다. 사용자가 만들 수도 있고하지 않을 수도있는 몇 가지 가능한 초기화 스크립트가 각각 있습니다.

매우 간단한 경우를 생각해 봅시다 : bash만을 사용하고 초기화 스크립트가없는 사용자. bash의 "login"인스턴스가 시작될 때, ~/.bash_profile, ~/.bash_login, ~/.profile을 (순서대로) 찾은 다음 찾은 첫 번째 인스턴스를 실행합니다. 하지만 앱이 어떤 셸을 사용하는지 알지 못하므로 ~/.profile을 만들어서 zsh와 ksh에서 사용하게하는 것이 좋습니다. 따라서 앱에서 ~/.profile을 만들고이를 다음에 넣습니다.

PATH="$PATH:/Applications/MyApp.app/Contents/Helpers" 

위대한, 맞습니까? 그래, 사용자가 자신의 PATH를 설정하고자하는 다른 것을 실행할 때까지 ~/.bash_profile을 만들고 이것은 설정을 무시합니다. 그 후에 실행 파일은 zsh 및 ksh의 PATH에 있지만 bash는 아닙니다. Whee. 당신은 test.app/하기 위해 실행 파일을 추가 할 수 있습니다

+0

여기에서 문제는 명령 줄 응용 프로그램에 자격을 추가하지 않았다는 것입니다. –

+0

@ElTomato 기본적으로 명령 줄에서 실행되는 실행 파일은 un-sandboxed로 실행됩니다. –

관련 문제