5

スクリプトから Mac パッケージ インストーラーをビルドしようとしていて、postinstall および postflight スクリプトを実行したいと考えています。パッケージをビルドするスクリプトは次のようになります。

pkgbuild --root MyRoot/MyApp.app --identifier com.myapp.MyApp --scripts Scripts --install-location /Applications/MyApp.app MyApp.pkg
productbuild --synthesize --package MyApp.pkg Distribution.xml
productbuild --distribution Distribution.xml --resources Resources --package-path . CompleteInstaller.pkg

postinstall スクリプトを Scripts に配置しましたが、正常に実行されています。ただし、postflight スクリプトの実行に問題があります。これは Resources ディレクトリに配置され、実行されません。これはパスを指定するのに十分ではありませんか? この質問に対する答えが見つかりませんでした。見逃していたらすみません。

PS: 私の postflight スクリプトは特別なことは何もしません。今のところ、ホーム ディレクトリにファイルを作成しようとします。

#!/bin/sh
touch ~/file
exit 0
4

1 に答える 1

8

なぜ とpostinstallの両方postflightがパッケージに入っているのかわかりません。どちらも、インストールの「ファイルのコピー」フェーズの後に実行する必要がある同じスクリプトです。" postflight" という名前は、古いスタイルのパッケージ (バンドル) で使用されていました。フラット パッケージの導入後は、同じスクリプトに " postinstall" という名前を付ける必要があります。フラット パッケージでは、名前が "postflight" ではなく "postinstall" であり、" Scripts" ディレクトリではなく " Resources" ディレクトリ内に存在する場合にのみ、インストーラはファイルをポストインストール スクリプトとして扱います。おそらく、これがスクリプトが実行されていない理由です。

パッケージで使用されるスクリプトに関する詳細情報は、こちらで入手できます。

于 2013-11-17T18:59:23.170 に答える