【问题标题】:pkgbuild OSX, Enforce installation failure in case of downgradepkgbuild OSX,在降级的情况下强制安装失败
【发布时间】:2017-01-28 05:12:09
【问题描述】:

我根据--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>

这是意料之中的,但不幸的是,安装仍在继续,并且其他组件正在正确安装,preinstallpostintsall 脚本也是如此 - 所以我得到了两个版本的混合。

有没有办法在尝试实际安装组件之前强制执行组件版本验证,并在验证未通过时停止安装过程。

更新:

另一种可以帮助我的方法是阻止运行安装前和安装后脚本,以防有人尝试降级。

我看到了关于此问题的未回答问题的参考here

【问题讨论】:

    标签: macos build installation downgrade pkgbuild


    【解决方案1】:

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

    关于此事的更多信息:https://developer.apple.com/reference/installerjs(点击“Distribution Definition XML Schema Reference”链接获取distribution.xml 描述)。

    【讨论】:

      猜你喜欢
      • 2019-06-07
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      相关资源
      最近更新 更多