如何让PackageMaker创建包含具有正确权限的有效内容的文件夹

时间:2011-06-30 10:09:55

标签: macos installer packagemaker

我正在使用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

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

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

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

2 个答案:

答案 0 :(得分:2)

如果目录不存在,PackageMaker将使用默认默认值。

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

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

#!/bin/bash

libpath=/usr/local/lib

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

答案 1 :(得分:1)

<子> N.B。 Kevin Green's answer看起来是一个更好的解决方案,但这就是我最终要做的事情。

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