2013-08-14 2 views
1

나는pkgbuild/productbuild에서 "defaults write"를 올바르게 사용하려면 어떻게해야합니까?

pkgbuild --component MyApp.app ... --scripts scriptsdir MyApp.pkg 

와 함께 설치 패키지를 짓고 있어요 그리고 설치 후 일부 사용자 기본값을 설정하고 싶습니다. 그래서 함께 postinstall 스크립트를 만든 :

defaults write com.mycompany.MyApp key -string value 

그러나이 작동하지 않습니다 - 설정이 /var/root/Library/Preferences에 기록 만 sudo defaults read 액세스 할 수 있습니다 얻을.

그래서 대신에 나는이 시도 :

이제
defaults write ~/Library/Preferences/com.mycompany.MyApp key -string value 

들이 바로 이곳에 기록하지만, 권한이 잘못 얻을이 - stat가 PLIST 파일입니다 -rw------- 1 root wheel에 대한 사용 권한을 보여줍니다, 그리고 defaults read 그들에 액세스 할 수 없습니다 . 어떻게하면 제대로 작동합니까?

답변

4

하지 마십시오. 앱을 처음 실행에 작동하는 특정 "기본"기본값을 필요로하는 경우

, 그들이 거기에없는 그들을 쓰는 알 수 있습니다.

설치가 너무 많다고 가정합니다. 설치를 수행하는 사용자가 소프트웨어의 기본 사용자입니다. 컴퓨터의 한 사용자 만 소프트웨어 사용에 관심을 가질 수 있습니다. 아무도 전혀 로그인하지 않았다!

대신 앱을 처음 시작할 때 기본 환경을 설정하십시오. 이 소프트웨어는 소프트웨어를 설치 한 후 사용자를 포함하여 시스템의 모든 사용자에게 적용됩니다.

+0

네, 확실히 [- [NSUserDefaults registerDefaults :]'의 가치에 감사드립니다. 그러나이 특별한 경우에 대한 나의 동기는 회사 내부 구성을 실제 "기본"기본값과 분리하려는 욕망입니다. 목표는 소스 코드를 수정하지 않고 그렇게함으로써 오픈 소스 소프트웨어로 완전히 공개 될 수 있도록하는 것입니다 . 이 경우 언급 한 설치 가정이 실제로 유효합니다. – jtbandes

+1

그래서 postflight 스크립트에서 기본값을 작성하는 것이 옳다고 생각되면'sudo -u $ USER defaults write ...''man sudo'를 기본 개념으로 삼으십시오. 또는 작성 후 소유자를 변경하십시오. 그러나 가정이 틀리면 스크립트가 깨질 수 있으며 자동화 된 시스템에서 패키지를 설치하지 못할 수도 있습니다 ($ USER는 반드시 유용한 값으로 설정되지 않으므로). – gneagle