繁体   English   中英

如何让 PackageMaker 以正确的权限创建有效负载的包含文件夹

[英]How do I get PackageMaker to create the payload's containing folder with correct permissions

我正在使用 PackageMaker v3.0.4 创建安装程序。

其中一个有效负载是一个库,我将其安装到位置/usr/local/lib/

库本身的权限是这样设置的:

-rwxr-xr-x  1 root    admin  992180  1 Jun  2009 libxxxx.0.dylib

只要在运行安装程序时lib目录已经存在,它就可以正常工作。 但是,如果安装程序运行时lib目录不存在,则使用以下权限创建它:

drwx------   3 username  wheel  102 30 Jun 10:44 lib

随后,应用程序在运行代码时无法打开库:

void *theDylib = dlopen("/usr/local/lib/libxxxx.0.dylib",RTLD_NOW);

如何让 PackageMaker 以正确的权限安装目录?

如果该目录不存在,PackageMaker 将使用它的默认设置。

使用预安装脚本创建 lib 目录并在目录上chown以正确设置所有权。

你可以做这样的事情。 这是未经测试的。

#!/bin/bash

libpath=/usr/local/lib

if [ ! -d "$libpath" ]; then
    mkdir -m 775 "$libpath"
    chown root:admin "$libpath"
fi

NB Kevin Green 的回答看起来像是一个更好的解决方案,但这就是我最终要做的。

如果您将有效负载设置为仅包含库而不是库本身的单个目录,并勾选Include root in package则安装程序将创建具有正确权限的目录(如果该目录尚不存在)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM