2016-09-20 22 views
4

根據--component-plist文件,我製作了一個包含2個組件的軟件包。在plist文件我已經添加了以下標誌,以防止降級:pkgbuild OSX,在降級的情況下強制執行安裝失敗

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腳本也一樣 - 所以我得到了兩個版本的混合。

是否有任何方法可以在嘗試實際安裝它們之前強制執行組件版本驗證,並且在驗證不通過時停止安裝過程。

UPDATE:

另一種方法,可以幫助我是爲了防止預安裝和安裝後腳本的運行的情況下,試圖降級而成。

我見過參考關於這個問題的未答覆的問題here

回答

1

您需要做的是將版本檢查添加到您的distribution.xml以進行產品歸檔,然後在JavaScript代碼中執行任何需要的檢查。這將允許您通過從檢查功能返回false儘可能早地阻止安裝。不能給你一個例子,因爲我從來沒有做過自定義版本檢查自己,但使用my.target.receiptForIdentifier()system.compareVersions()應該讓你去。

關於此事的更多信息:https://developer.apple.com/reference/installerjs(關於distribution.xml描述,請參閱「Distribution Definition XML Schema Reference」鏈接)。

相關問題