Скриптовый способ создания плоских файлов.pkg с пользовательскими ресурсами и скриптами
Я создал плоский файл.pkg со следующими параметрами на 10.7, используя PackageMaker 3.0.6:
/Applications/PackageMaker.app/Contents/MacOS/Package --root ./myroot \
--id com.myroot.pkg --title "My Root" --scripts ./scripts --target 10.5 \
--verbose --resources ./resources --root-volume-only --domain system \
--no-relocate --versio 1.0 --certificate "My Cert Name"
в resources
папка у меня есть background.png
, Welcome.rtf
а также License.rtf
и в scripts
папка у меня есть preflight
, postflight
и различные файлы поддержки для этих сценариев. Получившийся файл.pkg представляется полностью функциональным, за исключением того, что установщик не отображает мой фон, приветствие или лицензию.
Как добавить пользовательский фон, приветствие и лицензию в плоский пакет?
Насколько я могу судить, Distribution
В файле.pkg отсутствуют ссылки на фоновые, приветственные и лицензионные файлы.
В качестве обходного пути я попытался использовать xar
, Если я распакую пакет с xar, вот так:
xar -xf ./myroot.pkg -C work
и добавьте 3 тега для этих файлов, затем упакуйте их снова с помощью xar:
cd work && xar -cf ../myroot2.pkg *
Я получаю пакет, который начинает установку нормально с моим фоном и т. Д., Но когда приходит время установить мой.app, я получаю эти ошибки (от /var/log/install.log
):
run preupgrade script for myroot
Could not create task for action: run preupgrade script for myroot2
Install failed: The Installer could not extract files from the package for myroot2. Contact the software manufacturer for assistance.
IFDInstallController 863170 state = 7
Я также попробовал Редактор плоских пакетов: откройте myroot.pkg, перетащите Распределение, отредактируйте его, перетащите назад, удалите старый Распределение, сохраните Та же проблема, что и с xar.
Я бы предпочел иметь полностью скриптовое решение, а не использовать графический интерфейс.
Изменить: я также пытался использовать pkgutil
развернуть, отредактировать Распространение и повторно раскатать плоский пакет. Это вызывает значки и readme в установщике, но установщик не может распаковать полезную нагрузку. То же самое, если я перезаписать с Flat Package Editor
, Я также пытался создать расширенный пакет без PackageMaker (который работает, за исключением 10.8), но когда я пытаюсь сгладить это с помощью pkgutil, в результате снова получается поврежденный пакет.
3 ответа
PackageMaker всегда был с ошибками, и был признан устаревшим с Mac OS X 10.6 Snow Leopard.
Вы должны использовать pkgbuild вместе с productbuild.
В этом блоге Mac Installers есть несколько полезных постов о Packagemaker, в том числе подробности об использовании и решениях распространенных проблем. Надеюсь, это поможет.
Проверьте Luggage - это вспомогательный файл Makefile, который позволяет создавать пакеты OS X с нормальными Makefile. Отказ от ответственности: я являюсь первоначальным автором для него, хотя есть много других вкладов в это сейчас.