我正在尝试从脚本构建一个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
我已将postinstall脚本放在Scripts中,并且正在成功执行。我遇到运行postflight脚本的问题。它放在Resources目录中,不会被执行。这还不足以指定它的路径吗?我找不到这个问题的答案,如果我错过了,我很抱歉。
PS:我的postflight脚本没有什么特别之处 - 现在它尝试在主目录中创建一个文件:
#!/bin/sh
touch ~/file
exit 0
答案 0 :(得分:6)
我不确定为什么在包中同时包含postinstall
和postflight
。两者都是相同的脚本,必须在安装的“复制文件”阶段之后运行。
“postflight
”名称用于旧式包 - 捆绑包。
在引入扁平包之后,必须将相同的脚本命名为“postinstall
”。
在平面软件包中,安装程序仅在文件名称为“postinstall”时才将文件视为安装后脚本,而不是“postflight”并且存在于“Scripts
”目录中,而不是“Resources
”目录中。
可能这就是你的脚本没有被执行的原因。
您可以获得有关程序包here中使用的脚本的更多信息。