2013-03-27 31 views
5

4つのサブパッケージを含むMac OS X用のインストールパッケージをビルドします。サブパッケージはpkgbuildでビルドされています。 最終パッケージは、Welcomeおよびライセンステキスト用のDistribution.xmlを使用してproductbuildでビルドされ、インストール先の選択肢がインストールされます。Macでpkgbuildとproductbuildを使用してpostflightスクリプトを実行する方法インストールパッケージを構築する

今、インストールが成功した後にスクリプトを実行したいと思います。特に、すべてのパッケージの領収書がインストーラによって書かれた後。

私は、マニュアルページやドキュメント、その他の有用なリンクを理解する限り、そのためにポストフライトスクリプトを使用する必要があります。残念ながら私はそれを働かせることはできません。私はpostflightという名前を付け、--scriptオプションを使ってpkgbuildを使ってサブパッケージに追加しましたが、pkgbuildはポストフライトスクリプトをサポートしていないようです。 postinstallという名前をつけると、実行されますが、残念ながら領収書が書き込まれる前に実行されます。

pkgutilツールを使用して他のパッケージのインストール場所の場所を指定するXCode用のxcconfigファイルを作成したいので、領収書が書かれた後に実行する必要があります。

すでにexpand-flattenハックは、拡張されたpkgにScripts /フォルダを追加して使用しようとしましたが、フラット化した後は無視されるようです。

私の必要性を達成する方法はありますか? (私のパッケージの選択したインストール場所をサブパッケージのインストール場所にあるファイルに書き込む)

可能であれば、少なくとももっと良い方法があれば、推奨されないパッケージ作成ツールを使用しないようにしたいと思う。私は最終的に見つけるために持っていたとして領収書が書かれる前に、事前

答えて

1

おかげで、飛行後スクリプトスクリプトも実行されます。したがって、この問題に対する私の解決策は今、以下の通りである。

私はDSTROOT環境変数は、Mac OSのインストーラによって設定され、共有一時フォルダ内のファイルに書き込む読んで、私のパッケージにインストール後のスクリプトを追加:

echo "${DSTROOT}" > "${SHARED_INSTALLER_TEMP}/my_install_location" 

私のパッケージでは、これらの情報が必要です。postinstallスクリプト(サブパッケージがすでにインストールされていて、サブパッケージのいくつかを残して再インストールする場合)と一時ファイル他のパッケージから。

パッケージが既にインストールされていて再インストールされない場合は、現在のインストール場所が使用されます。それ以外の場合は、一時ファイル経由で新しいインストール場所が使用されます。何が必要なパッケージがそれほどインストールされていない存在しない場合、私はデフォルト値を使用し、(おそらく動作しないこと)xcconfigファイルに書き込む:

pkgutil --pkg-info-plist my.package.bundle > "${SHARED_INSTALLER_TEMP}/tmp.plist" 
if [ -e "${SHARED_INSTALLER_TEMP}/tmp.plist" ]; 
then 
    MY_PACKAGE_VOL=`/usr/libexec/PlistBuddy -c "Print :volume" "${SHARED_INSTALLER_TEMP}/tmp.plist"` 
    MY_PACKAGE_DIR=`/usr/libexec/PlistBuddy -c "Print :install-location" "${SHARED_INSTALLER_TEMP}/tmp.plist"`  
    MY_PACKAGE_DIR="${MY_PACKAGE_VOL}${MY_PACKAGE_DIR}" 
fi 

を「古い」を読んだ後に場所をインストール、私がいるかどうかを確認します誰かが私に知らせてよりよい解決策を持っている場合

if [ -e "${SHARED_INSTALLER_TEMP}/my_install_location" ]; 
then 
    MY_PACKAGE_DIR=`cat "${SHARED_INSTALLER_TEMP}/my_install_location"` 
fi 

... 
Write the xcconfig file... 
... 

:私は他のパッケージから以前に書き込まれた一時ファイルを使用して新しいインストール場所を持っています。

関連する問題