2011-06-30 2 views
1

PackageMaker v3.0.4を使用してインストーラを作成しています。PackageMakerに適切な権限を持つペイロードの格納フォルダを作成させるにはどうすればいいですか?

ペイロードの一つは、私は、ライブラリ自体の/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); 

正しい権限でディレクトリをインストールするにはどうすればよいですか?

答えて

1

N.B. Kevin Green's answerはより良い解決策のように見えますが、これが私のやり方です。

ペイロードを、ライブラリ自体ではなくライブラリだけを含む1つのディレクトリに設定し、Include root in packageと入力すると、正しいパーミッションを持つディレクトリが作成されます(存在しない場合)。

2

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

preinstallスクリプトを使用してlibディレクトリを作成し、chownを使用して所有者を適切に設定します。

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

#!/bin/bash 

libpath=/usr/local/lib 

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

これは、私がやったことがより良い解決策のように見えます。私はそれをテストする機会があれば、私の受け入れられた答えを変更します。 – Rich

関連する問題