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:
- (Legacy compatibility mode) In the Info.plist, set IFPkgFlagRestartAction to RequiredRestart.
- In the PackageInfo file, set pkg-info>postinstall-action to restart.
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.
Note that if you use
productbuild
as shown in this answer, you can modify thedistribution.xml
file to require a restart as well, and that format is well-documented. Here's an example usingsed
:This avoids having to expand and flatten the package, and allows you to include a custom background, welcome text, etc. :-)
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: