Reputation: 16768
I'm updating some build scripts to use pkgbuild instead of PackageMaker, but I'm not seeing an option to require restarts on a component package. In PackageMaker, requiring a restart could be done using either of the following two methods:
I don't see any similar options for pkgbuild or its component package plist. I understand that, when we build our distribution using productbuild, we can choose to require a restart on a per-package basis using the distribution file's pkg-ref>onConclusion key. But is this the only way to do this now (without using PackageMaker)? If so, I'm wondering why this requirement was moved out of the component packages and into the distribution that depends on them. In my mind, the component packages remained more modular when they could specify their own requirements.
EDIT: If you set postinstall-action="restart" in the resulting PackageInfo you can force the reboot. Now the question is just how to teach pkgbuild to write that automatically to the PackageInfo-file.
Upvotes: 2
Views: 3131
Reputation: 44769
Note that if you use productbuild
as shown in this answer, you can modify the distribution.xml
file to require a restart as well, and that format is well-documented. Here's an example using sed
:
sed -i "" -e 's/onConclusion="None"/onConclusion="RequireRestart"/' distribution.xml
This avoids having to expand and flatten the package, and allows you to include a custom background, welcome text, etc. :-)
Upvotes: 3
Reputation: 16768
It is not possible to accomplish this through a parameter or the component.plist
Therefore I did it by expanding, editing and flattening the package via a shell-script:
#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"
Upvotes: 2