【问题标题】:How do I get PackageMaker to create the payload's containing folder with correct permissions如何让 PackageMaker 创建具有正确权限的有效负载的包含文件夹
【发布时间】:2011-09-25 20:47:31
【问题描述】:

我正在使用 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 以正确的权限安装目录?

【问题讨论】:

    标签: macos installation packagemaker


    【解决方案1】:

    注意Kevin Green's answer 看起来是一个更好的解决方案,但这就是我最终要做的。

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

    【讨论】:

      【解决方案2】:

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

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

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

      #!/bin/bash
      
      libpath=/usr/local/lib
      
      if [ ! -d "$libpath" ]; then
          mkdir -m 775 "$libpath"
          chown root:admin "$libpath"
      fi
      

      【讨论】:

      • 这看起来是我最终做的更好的解决方案。如果我有机会测试它,我会更改我接受的答案。
      猜你喜欢
      • 2011-10-04
      • 2012-09-17
      • 2011-04-16
      • 2015-05-01
      • 2018-05-11
      • 2012-05-31
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      相关资源
      最近更新 更多