Я строй инсталляционного пакета сКак правильно использовать «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
не может их открыть , Как я могу заставить это работать правильно?
Да, я определенно ценю значение '- [NSUserDefaults registerDefaults:]'. Но моя мотивация в данном конкретном случае - желание отделить внутреннюю конфигурацию компании от фактических «стандартных» значений по умолчанию »- цель заключается в том, чтобы сделать это без изменения исходного кода, чтобы он мог быть выпущен чисто как программное обеспечение с открытым исходным кодом , В этом случае предположения об установке, которые вы упомянули, действительно действительны. – jtbandes
Итак, если вы уверены, что правильная работа по написанию дефолтов в сценарии postflight - это правильная вещь, рассмотрите 'sudo -u $ USER defaults write ...' 'man sudo', чтобы получить базовую концепцию. В качестве альтернативы, измените владельца после написания. Но имейте в виду, что ваш сценарий _will_ ломается, если ваши предположения ошибочны, и ваш пакет не может быть установлен автоматическими системами (поскольку $ USER не обязательно будет установлен на полезное значение). – gneagle