2013-08-14 5 views
1

Я строй инсталляционного пакета сКак правильно использовать «defaults write» из pkgbuild/productbuild?

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', чтобы получить базовую концепцию. В качестве альтернативы, измените владельца после написания. Но имейте в виду, что ваш сценарий _will_ ломается, если ваши предположения ошибочны, и ваш пакет не может быть установлен автоматическими системами (поскольку $ USER не обязательно будет установлен на полезное значение). – gneagle

 Смежные вопросы

  • Нет связанных вопросов^_^