Модификация владения файлами по продукту и pkgbuild

Я пытаюсь создать установщик для Java-приложения в Mac OS 10.8.4. Приложение работает нормально, и я могу установить его без заминки из zip файла. Я могу создать установщик .pkg с помощью либо productbuild, либо pkgbuild. Я также могу установить любой из файлов установщика .pkg успешно, однако приложение не работает должным образом из-за того, что обе программы упаковки меняют права собственности на каталог данных и его подчиненные файлы и подкаталоги от пользователя к корневому. Я устанавливаю этот каталог данных в каталог ресурсов пакета .app, и при первом запуске программы он перемещает каталог данных в /Users/user/Library/Application Support. Я попробовал использовать --ownership preserve и --ownership preserve - другие варианты с pkgbuild безрезультатно. Единственный способ, который я смог установить и выполнить правильно, - это использовать zip файл, поскольку он оставляет только владельца файла. Вот команда pkgbuild, которую я использую:

pkgbuild --ownership preserve --component./myApp.app./myApp-installer.pkg

Мои вопросы:

  • Как я могу заставить pkgbuild соблюдать мою опцию сохранения хранилища?

  • Можно ли создать отдельный пакет данных с правами пользователя и предназначенный для пользовательской области и объединить его с исполняемым пакетом через опцию --synthesize pkgbuild? если да, может ли кто-нибудь показать мне, как создать такой пакет данных?

Ответ 1

Я знаю, что он довольно старый, я просто отвечу, если кому-то понадобится ответ. Обычно я делаю то, что у меня есть оболочка script, которая создает для меня файл .pkg. В этом script я устанавливал все права доступа и права собственности перед упаковкой. Вот пример:

NAME="PKGFILENAME"

IDENTIFIER="com.pkg.APPNAME"

VERSION="1.0.0"

INSTALL_LOCATION="PATH_TO_WHERE_THE_FILES_SHOULD_BE_COPIED_ON_USERS_MACHINE"
ROOT_LOCATION="PATH_TO_WHERE_FILES_ARE_ON_YOUR_MASCHINE"

# Remove any unwanted .DS_Store files.
find "$ROOT_LOCATION" -name '*.DS_Store' -type f -delete

# put any command for changing the ownership or permissions here
chmod -R +r "$ROOT_LOCATION"

# Build package.
/usr/bin/pkgbuild \
    --root "$ROOT_LOCATION" \
    --install-location "$INSTALL_LOCATION" \
    --identifier "$IDENTIFIER" \
    --version "$VERSION" \
    "$NAME.pkg"

сохраните это в файле типа create-my-package.sh и запустите его в командной строке.