在Mac上安装软件包时运行postflight脚本

use*_*287 4 macos installer packagemaker productbuild pkgbuild

我正在尝试从脚本构建一个mac包安装程序,我想运行postinstall和postflight脚本.我构建包的脚本如下所示:

pkgbuild --root MyRoot/MyApp.app --identifier com.myapp.MyApp --scripts Scripts --install-location /Applications/MyApp.app MyApp.pkg
productbuild --synthesize --package MyApp.pkg Distribution.xml
productbuild --distribution Distribution.xml --resources Resources --package-path . CompleteInstaller.pkg
Run Code Online (Sandbox Code Playgroud)

我已将postinstall脚本放在Scripts中,并且它正在成功执行.我遇到运行postflight脚本的问题.它放在Resources目录中,不会被执行.这还不足以指定它的路径吗?我找不到这个问题的答案,如果我错过了,我很抱歉.

PS:我的postflight脚本没有什么特别之处 - 现在它试图在主目录中创建一个文件:

#!/bin/sh
touch ~/file
exit 0
Run Code Online (Sandbox Code Playgroud)

Vik*_*ngh 8

我不知道为什么你有两个postinstallpostflight一个包.两者都是相同的脚本,必须在安装的"复制文件"阶段之后运行." postflight"名称用于旧式包 - 捆绑.在引入扁平包之后,必须将相同的脚本命名为" postinstall".在平面软件包中,安装程序仅在文件名称为"postinstall"时才将文件视为安装后脚本,而不是"postflight"并且存在于" Scripts"目录中,而不是" Resources"目录中.可能这就是你的脚本没有被执行的原因.

您可以在此处获取有关包中使用的脚本的更多信息.