Потихоньку разбираюсь в том, как создавать .pkg-файлы в macOS и наткнулся на странную особенность при работе созданных pkg-файлов. После работы они перемещают файлы, которые были указаны в качестве их наполнения.
А теперь подробнее:
Я создаю пакет с помощью pkgbuild или productbuild и использую аргумент --root чтобы указать папке с файлами, которые я хочу запаковать в пакет.
pkgbuild --identifier com.example.anything --root FolderWithFiles --install-location /tmp/other/folder/again test.pkg
либо
productbuild --identifier com.example.anything --root FolderWithFiles /tmp/other/folder/again test.pkg
После выполнения любой из этих команд у меня создается файл test.pkg.
Затем я запускаю этот test.pkg и стандартно нажимаю Далее... Далее.. Установить, ввожу пароль и вижу сообщение о том, что все установилось без проблем.
НО
после этого файлы, которые были в папке, указанной в --root, то есть в папке "FolderWithFiles" - они перемещаются по пути установки, то есть в /tmp/other/folder/again.
Например, если в папке "FolderWithFiles" у меня было приложение "MyBestCalculator.app", то после работы test.pkg в папке "FolderWithFiles" будет пусто, а вот в папке по пути "/tmp/other/folder/again" появится "MyBestCalculator.app"
Если я "MyBestCalculator.app" из папки "/tmp/other/folder/again" перемещу на рабочий стол, то есть в ~/Desktop, а потом снова запущу test.pkg, то после его работы на рабочем столе не будет "MyBestCalculator.app", но вот в "/tmp/other/folder/again" он снова появится.
Какого фига?
То ли я дурак, то ли лыжи не едут.
Внутри test.pkg есть необходимые файлы, зачем он перемещает файлы которые использовались для его наполнения?
Если я правильно понимаю, в ходе своей работы pkg-файл должен распаковать файлы из своей внутренностей и выполнить preinstall и postinstall скрипты, заложенные в него.
Я при создании пакета не указывал путь ни к каким скриптам. Почему он тогда не просто распаковывает файлы, а манипулирует другими файлами в файловой системе?
Это где-то задокументировано?