Это руководство описывает процесс создания установочных пакетов PKG из приложений macOS для их последующего развёртывания через Ринго MDM.
Большинство разработчиков распространяют приложения в виде DMG-образов для ручной установки перетаскиванием. Для автоматизации развёртывания через MDM необходимо переупаковать такие приложения в формат PKG.
Большинство приложений macOS являются самодостаточными — файл .app содержит всё необходимое для работы программы.
Для создания пакета используйте команду:
pkgbuild --component "/Applications/<AppName>.app" <AppName>-<x.y.z>.pkg
Пример:
pkgbuild --component "/Applications/MyApp.app" MyApp-1.0.0.pkg
Утилита pkgbuild автоматически извлекает идентификатор пакета и версию из файла Info.plist приложения.
После сборки проверьте содержимое пакета:
pkgutil --expand "MyApp-1.0.0.pkg" ~/MyApp_expanded
Откройте файл PackageInfo и убедитесь, что идентификатор и версия соответствуют ожидаемым значениям.
Смонтируйте образ командой:
hdiutil attach "~/Downloads/app-installer.dmg"
Образ будет смонтирован в каталог /Volumes.
Проверьте содержимое смонтированного образа:
ls -l "/Volumes/AppName"
Типичная структура DMG-образа содержит:
.app/ApplicationsВажно! Убедитесь, что внутри DMG находится приложение
.app, а не установщик. Не все DMG предназначены для простого перетаскивания.
Создайте пакет с указанием целевого расположения:
pkgbuild --component "/Volumes/AppName/MyApp.app" \
--install-location "/Applications" \
"MyApp-1.0.0.pkg"
Параметр --install-location указывает, куда будет установлено приложение.
Обратите внимание:
pkgbuildназначает владельцаroot:wheelдля приложения. Это защищает приложение от изменений обычными пользователями, но может повлиять на функции автообновления.
При переупаковке приложений из Mac App Store в структуре присутствует файл Contents/_MASReceipt/receipt. Этот файл привязывает приложение к учётной записи Apple ID.
После установки пакета на других компьютерах приложение будет связано с вашим Apple ID. В большинстве случаев оно будет работать нормально.
Рекомендация: Используйте отдельный Apple ID для распространения приложений из App Store через MDM.
По умолчанию пакеты, созданные через pkgbuild --component, являются перемещаемыми — при установке система ищет существующую версию приложения и обновляет её на месте, даже вне стандартного пути.
Для установки только в указанное место используйте следующую последовательность:
mkdir -p "AppName/payload"
cp -R "/Volumes/AppName/MyApp.app" "AppName/payload/"
pkgbuild --analyze --root "AppName/payload" "AppName-component.plist"
plutil -replace BundleIsRelocatable -bool NO "AppName-component.plist"
pkgbuild \
--root "AppName/payload" \
--identifier com.company.appname \
--version 1.0.0 \
--install-location "/Applications" \
--component-plist AppName-component.plist \
"AppName.pkg"
Пояснение команд:
--analyze — создаёт шаблон plistplutil -replace — отключает перемещаемость пакета--component-plist — применяет изменения при сборке