Изменение владельца файла с помощью productbuild и pkgbuild

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

pkgbuild - сохранить собственность --component./myApp.app./myApp-installer.pkg

Мои вопросы:

  1. Как я могу заставить pkgbuild выполнить мой вариант сохранения права собственности?

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

1 ответ

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

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 и запустите это в командной строке.

Другие вопросы по тегам