xcode - 通过productbuild和pkgbuild修改文件所有权

标签 xcode productbuild pkgbuild

我正在尝试为 Mac OS 10.8.4 上的 Java 应用程序创建安装程序。该应用程序运行良好,我可以通过 zip 文件顺利安装它。我可以使用productbuild 或pkgbuild 创建一个.pkg 安装程序。我还可以成功安装任一安装程序 .pkg 文件,但是该应用程序无法正常运行,因为这两个打包程序都将数据目录及其从属文件和子目录的所有权从用户更改为 root。我将此数据目录安装在 .app bundle 的 Resources 目录中,并且程序第一次执行时,它将数据目录移动到/Users/user/Library/Application Support。我尝试在 pkgbuild 中使用 --ownershippreserve 和 --ownershippreserve-other 选项,但没有成功。我能够正确安装和执行的唯一方法是通过 zip 文件,因为它保留了文件所有权。这是我正在使用的 pkgbuild 命令:

pkgbuild --所有权保留 --component ./myApp.app ./myApp-installer.pkg

我的问题是:

  1. 如何强制 pkgbuild 尊重我的 --ownershippreserve 选项?

  2. 是否可以构建一个具有用户所有权且发往用户区域的单独的纯数据包,并通过 pkgbuild 的 --synthesize 选项将其与可执行包合并?如果是,有人可以告诉我如何构建这样一个纯数据包吗?

最佳答案

我知道它已经很旧了,我只会回答以防其他人需要答案。 我通常做的是,我有一个 shell 脚本来为我创建 .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 这样的文件中,并在命令行中运行它。

关于xcode - 通过productbuild和pkgbuild修改文件所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394234/

相关文章:

macos - Mac App Store产品构建

macos - 在 Mac OS X pkg 中打包命令行脚本

linux - 在 Linux 上构建 OSX .pkg 文件

ios - UIPageViewController 中导航栏的更改无法正常工作

带有自定义 C++ 库的 PHP 扩展

deployment - Mac 安装程序包 - 如何有选择地安装到多个位置

macos - OSX .pkg 删除其他开发版本

ios - fontWithSize(字体大小 : CGFloat) is available from which ios Version

ios - 当字符串在 swift 中包含双引号时拆分空格分隔的字符串的问题

xcode - 制作准备好开发人员 ID 的 macOS 安装程序包