macos – pkgbuild OSX,在降级时强制安装失败

我根据–component-plist文件创建了一个包含2个组件的包.在plist文件中我添加了以下标志以防止降级:

BundleIsVersionChecked: Don't install bundle if newer version on disk? (bool)

当我执行降级方案时,我收到以下消息:

Sep 15 11:42:49 os-x-10 installd[284]: PackageKit: Skipping component \ 
"com.my.driverAE21E" (<current_version>) because the version \
<new_version> is already installed at <my_component>

这是预料之中的,但不幸的是,安装继续,另一个组件正在正确安装,预安装和postintsall脚本也是如此 – 所以我得到了两个版本的混合.

有没有办法在任何实际安装它们之前强制执行组件版本验证,并在验证未通过的情况下停止安装过程.

更新:

另一种可以帮助我的方法是在尝试降级时阻止预安装和安装后脚本的运行.

我已经看到有关此问题here的未答复问题的参考.

最佳答案 您需要做的是将版本检查添加到您的distribution.xml以获取产品存档,然后在JavaScript代码中执行您想要的任何检查.这将允许您通过从检查功能返回false来尽可能早地阻止安装.不能给你一个例子,因为我从来没有自己做过自定义版本检查,但是使用my.target.receiptForIdentifier()和system.compareVersions()会让你开始.

关于此事的更多信息:https://developer.apple.com/reference/installerjs(按照“分发定义XML模式参考”链接进行发布,以获取distribution.xml说明).

点赞