我更新了一些构建脚本使用PKGBUILD而不是PackageMaker,但我没有看到需要的组件包重新启动的选项。 在PackageMaker,需要重新启动可以使用以下任一两种方式来完成:
- (传统兼容模式)在Info.plist中,设置IFPkgFlagRestartAction到RequiredRestart。
- 在PackageInfo文件,设置PKG-INFO>安装后的动作重新启动。
我没有看到PKGBUILD或其组件封装的plist任何类似的选项。 我的理解是,当我们使用productbuild建立我们的分布,我们可以选择需要使用分发文件的PKG-REF> onConclusion键每包基础上重新启动。 但是,这是要做到这一点,现在(不使用PackageMaker)的唯一途径? 如果是这样,我不知道为什么这个要求被移出组件包的进入取决于它们的分布。 在我的印象中,组件封装保存下来,他们可以指定自己的要求更加模块化。
编辑:如果您在结果PackageInfo设置安装后的行动=“重新启动”,您可以强制重新启动。 现在的问题就是如何教PKGBUILD自动编写到PackageInfo文件。
这是不可能通过一个参数或component.plist做到这一点
因此,我做了扩大,编辑,并通过shell脚本压扁的包装:
#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"
请注意,如果您使用productbuild
如图这个答案 ,你可以修改distribution.xml
文件需要重新启动,以及,该格式是证据充分的 。 下面是使用一个例子sed
:
sed -i "" -e 's/onConclusion="None"/onConclusion="RequireRestart"/' distribution.xml
这避免了扩大和扁平封装,并允许包括自定义背景,欢迎文字等:-)