早上好,我正在阅读 MacOSX 中为我的应用程序创建 pkg 时使用的准备好的脚本。
特别是,我对如何确保使用升级后脚本有一些疑问。我到现在读到的是:从这里
postupgrade 脚本在文件安装后运行,如果已定义,则在 postflight 脚本之前运行。仅当先前已安装该组件时才运行此脚本。如果脚本没有返回零退出状态,安装程序将声明安装失败。
好的,那么升级完成后似乎 postupgrade 将自动运行。但是...从man pkgbuild
, 部分--scripts scripts-path
将 scripts-path 的全部内容归档为包脚本。如果此目录包含名为 preinstall 和/或 postinstall 的脚本,这些将作为包的顶级脚本运行。如果你想为特定的 bundle 运行脚本,你必须在组件属性列表中指定它们;在组件属性列表中查看更多信息。只有在顶级或特定于组件的脚本调用它们时,才会使用 scripts-path 下的任何其他文件。
所以,看来我应该将它添加到 component.plist,因为他们没有说任何关于postupgrade
. 但看起来很奇怪,我会放更具体的脚本,而不是postupgrade
脚本。
为了确定一个包是否已经安装,Installer.app 正在查看以下目录的内容:/Library/Receipts。如果其中有一个名为 PackageName.pkg 的文件,则该 Package 已经安装,否则为第一次安装。
好吧,我的应用程序没有留下任何 pkg 文件,但是是的,它存在于 InstallHistory.plist 中。
好吧,最后的问题是:我应该在某个地方设置升级脚本吗,例如在 component.plist 文件中?最后一个链接似乎已过时,有什么变化吗?如何将 pkg 文件放入其中/Library/Receipts
?或者更好的是,如何确定我的安装是否确实是安装而不是升级,反之亦然?
谢谢大家,有点迷糊。。。