我正在为Mac OS 10.8.4上的
Java应用程序创建一个安装程序.该应用程序运行正常,我可以安装它,而不是一个zip文件.我可以使用productbuild或pkgbuild创建一个.pkg安装程序.我也可以成功安装任一安装程序.pkg文件,但由于两个打包程序都将数据目录及其从属文件和子目录的所有权从用户更改为root,因此该应用程序无法正常运行.我将此数据目录安装在.app包的Resources目录中,并且程序首次执行时,将数据目录移动到/ Users / user / Library / Application Support.我尝试使用 – 所有权保留和 – 所有权保留 – 其他选项与pkgbuild无效.我能够正确安装和执行的唯一方法是通过zip文件,因为它只剩下文件所有权.这是我使用的pkgbuild命令:
pkgbuild – 所有权保留–component ./myApp.app ./myApp-installer.pkg
我的问题是:
>如何强制pkgbuild尊重我的 – 所有权保留选项?
>是否可以构建一个单独的仅数据的包,具有用户所有权并发往用户区域,并通过pkgbuild的–synthesize选项将其与可执行程序包进行合并?如果是的话,有人可以告诉我如何构建这样的数据包?
解决方法
我知道这是相当老的,我只是回答,以防其他人需要答案.
我通常做的是,我有一个shell脚本,为我创建.pkg文件.在该脚本中,我在打包之前设置所有文件的权限和所有权.这是一个例子:
我通常做的是,我有一个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这样的文件中,并在命令行中运行.