Создание плагинов установщика в пакетах с теми же правами root, что и для устанавливаемых пакетов (Mac OS X) - PullRequest
3 голосов
/ 14 марта 2012

Я работаю в проекте Mac OS X, в котором установщик построен с использованием пакета tool . Я вижу, что этот инструмент используется меньше, чем тот, который называется Package Maker, и поэтому мне трудно получить какую-либо помощь, но вот вопрос:

Я успешно создал установочные плагины, следуя официальному руководству (http://s.sudre.free.fr/Stuff/Installer/Installer_Plugins/index.html),, но теперь проблема в том, что мне нужен один из них, работающий с привилегиями root, запрашивающий пароль администратора при необходимости.

Каждый пакет может быть скопирован с правами администратора вместе с запуском сценария до установки и после установки, но этот шаг выполняется после запуска плагина, а мне нужно было запустить его раньше.

Я мог бы сделать это, написав некоторый базовый код авторизации (используя устаревший AuthorizationExecuteWithPrivileges, потому что на самом деле создание сложных обходных путей, рекомендованных Apple в плагине) действительно в самом плагине.

Теперь все работает (мой привилегированный код и установка), но установщик заканчивает запрашивать пароль администратора дважды, один для плагина, а другой перед фактической (пакетной) установкой, что не слишком «удобно для пользователя».

Кто-нибудь знает обходной путь или возможное решение?

Заранее спасибо.

1 Ответ

1 голос
/ 21 сентября 2012

Старый вопрос, но я поставлю это в качестве опции.

В инсталляторе, который я сделал с помощью пакетов, у меня был один из сценариев до / после полета, который позаботился обо всем, что требовало повышенных привилегий.Вы должны заставить этот конкретный пакет запрашивать повышение прав, но затем скрипт запускается с повышенными привилегиями.

Так что в этом примере у меня есть плагин, чтобы задать пользователю несколько вопросов, а затем я сохраняю эту информацию в / tmp дляскрипт для чтения и исполнения.

Немного загибом, но он работает и намного проще, чем пытаться не использовать AuthorizationExecuteWithPrivileges

...