2

PackageMakerの代わりにpkgbuildを使用するようにいくつかのビルドスクリプトを更新していますが、コンポーネントパッケージで再起動を要求するオプションが表示されません。PackageMakerでは、再起動の要求は、次の2つの方法のいずれかを使用して実行できます。

  • (レガシー互換モード)Info.plistで、IFPkgFlagRestartActionをRequiredRestartに設定します。
  • PackageInfoファイルで、pkg-info>postinstall-actionを再起動するように設定します。

pkgbuildまたはそのコンポーネントパッケージplistに同様のオプションが表示されません。productbuildを使用してディストリビューションをビルドする場合、ディストリビューションファイルのpkg-ref>onConclusionキーを使用してパッケージごとに再起動を要求することを選択できることを理解しています。しかし、これが(PackageMakerを使用せずに)今これを行う唯一の方法ですか?もしそうなら、なぜこの要件がコンポーネントパッケージからそれらに依存するディストリビューションに移されたのか疑問に思います。私の考えでは、コンポーネントパッケージは、独自の要件を指定できる場合でも、よりモジュール化されたままでした。

編集:結果のPackageInfoでpostinstall-action = "restart"を設定すると、強制的に再起動できます。ここで問題となるのは、pkgbuildにそれをPackageInfoファイルに自動的に書き込むように教える方法です。

4

2 に答える 2

3

この回答productbuildに示されているように使用する場合は、ファイルを変更して再起動を要求することもでき、その形式は十分に文書化されていることに注意してください。以下を使用した例を次に示します。distribution.xmlsed

sed -i "" -e 's/onConclusion="None"/onConclusion="RequireRestart"/' distribution.xml

これにより、パッケージを拡張してフラット化する必要がなくなり、カスタムの背景やウェルカムテキストなどを含めることができます。:-)

于 2013-04-26T16:50:13.543 に答える
2

パラメータまたはcomponent.plistを介してこれを実現することはできません。

したがって、シェルスクリプトを使用してパッケージを拡張、編集、およびフラット化することでそれを行いました。

#Replace the value of the postinstall-action attribute to restart
echo "Expanding archive ${BDIR}/${NAME}-Installer.pkg"
pkgutil --expand "Installer.pkg" installertmp

echo "Replacing postinstall-action \"none\" with \"restart\""
sed -e 's/postinstall-action=\"none\"/postinstall-action=\"restart\"/' -i '' installertmp/PackageInfo

echo "Flattening archive Installer.pkg"
pkgutil --flatten installertmp "Installer.pkg"

rm -f -r "installertmp"
于 2012-06-20T10:11:22.070 に答える