1

PackageMaker v3.0.4 を使用してインストーラーを作成しています。

ペイロードの 1 つはライブラリで、その場所にインストールしています/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 に適切な権限でディレクトリをインストールさせるにはどうすればよいですか?

4

2 に答える 2

2

ディレクトリが存在しない場合、PackageMaker はデフォルトのデフォルトでディレクトリを作成します。

プリインストール スクリプトを使用して lib ディレクトリを作成し、chownそのディレクトリに所有権を適切に設定します。

このようなことができます。これはテストされていません。

#!/bin/bash

libpath=/usr/local/lib

if [ ! -d "$libpath" ]; then
    mkdir -m 775 "$libpath"
    chown root:admin "$libpath"
fi
于 2011-07-04T18:21:10.530 に答える
1

NBケビン グリーンの答えはより良い解決策のように見えますが、これが私がやったことです。

ペイロードを、ライブラリ自体ではなくライブラリのみを含む単一のディレクトリに設定し、チェックマークを付けるとInclude root in package、ディレクトリがまだ存在しない場合、インストーラは適切な権限でディレクトリを作成します。

于 2011-07-05T08:35:08.070 に答える