5

我正在尝试从脚本构建一个 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

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

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

#!/bin/sh
touch ~/file
exit 0
4

1 回答 1

8

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

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

于 2013-11-17T18:59:23.170 回答