10

Mac OS 10.8.4 で Java アプリのインストーラーを作成しようとしています。アプリは正常に動作し、zip ファイルから問題なくインストールできます。productbuild または pkgbuild を使用して .pkg インストーラーを作成できます。どちらのインストーラー .pkg ファイルも正常にインストールできますが、両方のパッケージ化プログラムがデータ ディレクトリとその下位ファイルおよびサブディレクトリの所有権をユーザーからルートに変更するため、アプリは正しく実行されません。このデータ ディレクトリを .app バンドルの Resources ディレクトリにインストールすると、プログラムの初回実行時にデータ ディレクトリが /Users/user/Library/Application Support に移動します。--ownership preserve および --ownership preserve-other オプションを pkgbuild で使用してみましたが、役に立ちませんでした。私が正しくインストールして実行できた唯一の方法は、zip ファイルを使用することです。ファイルの所有権をそのままにしておくためです。私が使用しているpkgbuildコマンドは次のとおりです。

pkgbuild --ownership preserve --component ./myApp.app ./myApp-installer.pkg

私の質問は次のとおりです。

  1. --ownership preserve オプションを強制的に pkgbuild に適用させるにはどうすればよいですか?

  2. ユーザー所有権を持ち、ユーザー領域向けのデータのみのパッケージを個別にビルドし、pkgbuild の --synthesize オプションを使用して実行可能パッケージとマージすることはできますか? はいの場合、誰かがそのようなデータのみのパッケージを構築する方法を教えてもらえますか?

4

1 に答える 1

2

私はそれがかなり古いことを知っています。他の誰かが答えを必要とする場合に備えて答えます。私が通常行うことは、.pkg ファイルを作成するシェル スクリプトがあることです。そのスクリプトでは、パッケージ化する前にすべてのファイルのアクセス許可と所有権を設定しました。次に例を示します。

NAME="PKGFILENAME"

IDENTIFIER="com.pkg.APPNAME"

VERSION="1.0.0"

INSTALL_LOCATION="PATH_TO_WHERE_THE_FILES_SHOULD_BE_COPIED_ON_USERS_MACHINE"
ROOT_LOCATION="PATH_TO_WHERE_FILES_ARE_ON_YOUR_MASCHINE"

# Remove any unwanted .DS_Store files.
find "$ROOT_LOCATION" -name '*.DS_Store' -type f -delete

# put any command for changing the ownership or permissions here
chmod -R +r "$ROOT_LOCATION"

# Build package.
/usr/bin/pkgbuild \
    --root "$ROOT_LOCATION" \
    --install-location "$INSTALL_LOCATION" \
    --identifier "$IDENTIFIER" \
    --version "$VERSION" \
    "$NAME.pkg"

これを create-my-package.sh などのファイルに保存し、コマンド ラインで実行します。

于 2016-03-02T14:55:51.323 に答える