我的MacOS應用程序是codesigned並運行在某些計算機上,但在另一個失敗,因爲關守運行彈出「{App}無法打開,因爲開發人員的身份無法確認。」驗證MacOS的應用程序,通過協同設計,SPCTL和籤簽名,但無法運行「因爲開發者的身份無法確認」
我想分發錯誤的.dmg之前檢測build機器上的這個問題,所以我看着蘋果的Checking Gatekeeper Conformance和Examining a Code Signature文檔,其中討論codesign
,spctl
和check-signature
。令人困惑的是,所有這些工具都報告說,.app是由我的開發者帳戶簽署的。
$ codesign -v --strict --deep --verbose=2 App.app
App.app: valid on disk
App.app: satisfies its Designated Requirement
$ codesign -d --deep --verbose=2 -r- App.app
Executable=/Applications/App.app/Contents/MacOS/App
Identifier=com.example.app
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=196 flags=0x0(none) hashes=3+3 location=embedded
Signature size=8539
Authority=Developer ID Application: Company, Inc. (XXXXXXXXXX)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Sep 22, 2016, 7:32:19 PM
Info.plist entries=21
TeamIdentifier=XXXXXXXXXX
Sealed Resources version=2 rules=12 files=10708
Nested=Frameworks/Squirrel.framework
Nested=Frameworks/App Helper NP.app
Nested=Frameworks/App Helper.app
Nested=Frameworks/App Helper EH.app
Nested=Frameworks/Mantle.framework
Nested=Frameworks/ReactiveCocoa.framework
Nested=Frameworks/Electron Framework.framework
Internal requirements count=1 size=172
designated => identifier "com.example.app" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = XXXXXXXXXX
$ spctl --assess -vv App.app
App.app: accepted
source=Developer ID
origin=Developer ID Application: Company, Inc. (XXXXXXXXXX)
$ check-signature App.app
(c) 2014 Apple Inc. All rights reserved.
YES
的證書,標識&檔案網站顯示未過期的「開發者ID應用程序」我的帳戶「開發者ID安裝」證書。我從未撤銷任何Mac簽名證書。我還檢查了該應用的Info.plist中的CFBundlePackageType
設置爲APPL
。
這是怎麼回事?
更新:從埃爾卡皮坦升級的Mac塞拉利昂解決了這個問題。如果有用戶遇到問題,我仍然有興趣瞭解問題的原因。
的設定,看門人設置爲? –
它被設置爲接受來自Mac App Store和識別開發者的應用程序。從El Capitan升級到Sierra神奇地解決了這個問題,也許是OS X的一個bug。 – ide
我之前看到過這種行爲,並且重啓機器會修復它,所以我會同意這是OS X中的一個bug。 – TheDarkKnight