pkgbuild OSX,在降级的情况下强制安装失败
pkgbuild OSX, Enforce installation failure in case of downgrade
我根据 --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>
这是预料之中的,但不幸的是,安装继续进行,并且其他组件正在正确安装,preinstall
和 postintsall
脚本也是如此 - 所以我得到了两者的混合版本。
有没有什么方法可以在尝试实际安装它们之前强制执行组件版本验证,并在验证未通过的情况下停止安装过程。
更新:
另一种可以帮助我的方法是防止 运行 预安装和安装后脚本,以防尝试降级。
我看到了关于此问题的未回答问题的引用 here。
您需要做的是将 version-check 添加到您的 distribution.xml 以进行产品存档,然后在 JavaScript 代码中执行您想要的任何检查。这将允许您通过从检查函数返回 false
来阻止安装尽早开始。不能给你一个例子,因为我自己从来没有做过自定义版本检查,但是使用 my.target.receiptForIdentifier()
和 system.compareVersions()
应该可以让你继续。
有关此事的更多信息:https://developer.apple.com/reference/installerjs(在 "Distribution Definition XML Schema Reference" link 那里关注 distribution.xml 描述)。
我根据 --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>
这是预料之中的,但不幸的是,安装继续进行,并且其他组件正在正确安装,preinstall
和 postintsall
脚本也是如此 - 所以我得到了两者的混合版本。
有没有什么方法可以在尝试实际安装它们之前强制执行组件版本验证,并在验证未通过的情况下停止安装过程。
更新:
另一种可以帮助我的方法是防止 运行 预安装和安装后脚本,以防尝试降级。
我看到了关于此问题的未回答问题的引用 here。
您需要做的是将 version-check 添加到您的 distribution.xml 以进行产品存档,然后在 JavaScript 代码中执行您想要的任何检查。这将允许您通过从检查函数返回 false
来阻止安装尽早开始。不能给你一个例子,因为我自己从来没有做过自定义版本检查,但是使用 my.target.receiptForIdentifier()
和 system.compareVersions()
应该可以让你继续。
有关此事的更多信息:https://developer.apple.com/reference/installerjs(在 "Distribution Definition XML Schema Reference" link 那里关注 distribution.xml 描述)。