我正在更新一些构建脚本以使用pkgbuild而不是PackageMaker,但是我没有看到要求在组件包上重新启动的选项。在PackageMaker中,可以使用以下两种方法之一来完成重启:
我没有看到pkgbuild或其组件包plist的任何类似选项。据我所知,当我们使用productbuild构建分发时,我们可以选择使用分发文件的pkg-ref> onConclusion键在每个包的基础上重新启动。但这是现在这样做的唯一方法(不使用PackageMaker)吗?如果是这样,我想知道为什么这个要求被移出组件包并进入依赖于它们的分发。在我看来,组件包在可以指定自己的要求时仍然更加模块化。
编辑:如果在生成的PackageInfo中设置postinstall-action =“restart”,则可以强制重新启动。现在的问题是如何教pkgbuild将其自动写入PackageInfo文件。
答案 0 :(得分:2)
无法通过参数或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"
答案 1 :(得分:2)
请注意,如果您使用this answer中显示的productbuild
,则可以修改distribution.xml
文件以要求重新启动,并且格式为well-documented。以下是使用sed
的示例:
sed -i "" -e 's/onConclusion="None"/onConclusion="RequireRestart"/' distribution.xml
这样可以避免扩展和展平包,并允许您包含自定义背景,欢迎文本等。 - )