Как указать место установки по умолчанию в $HOME с помощью pkgbuild?

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

В моем файле дистрибутива есть enable_currentUserHome="true" и enable_localSystem="true", которые правильно позволяют пользователю "Установить для всех пользователей этого компьютера" или "Установить только для меня". Однако я бы хотел, чтобы по умолчанию было выбрано «Установить только для меня».

pkgbuild имеет параметр командной строки для «--install-location», который, как говорится на странице руководства, указывает местоположение по умолчанию, но нет упоминания о том, как указать домашний каталог. Я пробовал «~» и «$ HOME» безуспешно. Есть какой-то макрос, о котором я не знаю?

Кто-нибудь знает, как сказать pkgbuild установить по умолчанию в домашнем каталоге текущего пользователя?

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

-Оуэн


person Owen Urkov    schedule 12.10.2012    source источник


Ответы (2)


pkgbuild сгенерирует для вас пакет компонентов. Хотя пакет компонентов можно установить отдельно, обычно он включается в архив продукта. В архиве продукта вы можете указать домен установки, например, localSystem и home.

Например, pkgbuild --install-location /Application установит его, как и ожидалось, в /Application, если выбран локальный системный домен, или в $HOME/Application, если выбрана домашняя установка.

При этом я настоятельно не рекомендую использовать установщик для установки в домашнюю папку. Это просто не работает в реальном мире.

См. мой раздел Known Issues and Workarounds в Создание пакетов установщика OS X, а также Проблемы и решения установщика.

person catlan    schedule 21.10.2012
comment
Что ж, установка пакетов в дом пользователя на самом деле РАБОТАЕТ, и нет причин препятствовать этому. При условии, что пакету разрешено устанавливать в домашний каталог пользователя, командная строка для этого выглядит следующим образом: bash-3.2$ installer -package file.pkg -target CurrentUserHomeDirectory В параметре --install-location ничего устанавливать не нужно. , значение по умолчанию в порядке. Единственный критический момент — включить ‹domains enable_currentUserHome=true/› в шаблон раздачи и использовать волшебную цель CurrentUserHomeDirectory в командной строке установщика. - person denis.gz; 03.04.2018
comment
Это было написано пять основных версий ОС назад. И я не проводил никаких испытаний на этих версиях. Во всяком случае, только потому, что это сработало один раз, я не стал бы ему доверять. На основе «Обмани меня один раз, позор тебе»; Обмани меня дважды, позор мне' - person catlan; 03.04.2018

Одним из обходных путей является установка параметров файла дистрибутива следующим образом:

enable_localSystem="false" 
enable_anywhere="true" 
enable_currentUserHome="true"

Домашняя установка будет выбрана по умолчанию, поскольку она включена первым вариантом.

Пользователям по-прежнему будет разрешено установить его для всей системы, выбрав Install on a specific disk... -> Macintosh HD. Недостаток: пользователю сложнее, чем выбирать напрямую: Install for all users of this computer.

person souch    schedule 08.08.2016
comment
При использовании этих параметров на моей машине домашняя установка не включается первым и не выбирается по умолчанию. Есть ли способ установить домашнюю установку по умолчанию? - person Gerrit; 15.08.2017
comment
После использования приведенного выше ответа несколько раз: установщик OSX кажется глючным. В моем случае, если я отключу общесистемную установку: (enable_localSystem="false" enable_anywhere="false" enable_currentUserHome="true"), иногда (не всегда!), установщик по-прежнему выбирает автоматическую системную установку (и обходит панель места установки). Так что мой ответ не работает в реальном мире. - person souch; 16.08.2017
comment
@souch У меня точно такая же проблема, и я установил эти три параметра, как и ты. Я не понимаю, почему иногда macOS запрашивает пароль администратора, даже если я указал, что приложение должно быть установлено в доме пользователя. Возможно, это связано с подписью пакета или со статусом нотариального заверения пакета. Вы нашли решение для этого в то же время? - person Bemipefe; 11.06.2020
comment
Мы не нашли чистого решения. Наше приложение подписано и нотариально заверено (.app и .pkg), следуйте рекомендациям по файлам OSX (например: .dylib в Contents\Frameworks...). Тем не менее, установщик иногда выбирает случайным образом то, что хочет. В сценарии postinst, если установщик выбрал неправильный выбор, при необходимости мы копируем .app в /Applications и передаем текущему пользователю. - person souch; 15.06.2020
comment
В моем случае я хочу разрешить также пользователям без прав администратора устанавливать и использовать мое приложение, поэтому я хочу полностью избавиться от подсказки панели учетных данных. По некоторым причинам стандартная установка на диск иногда выбирается автоматически, даже если enable_localSystem=false . - person Bemipefe; 15.06.2020