我一直在爲此奮鬥了一段時間,如果有人能幫助我理解這裏發生的事情,我將非常感激。如何爲OSX簽署DMG和安裝程序
我有一個install4j項目,爲Windows和OSX創建安裝程序包。我有一個Windows常規簽名證書,這沒有問題。我也有一個Apple開發者證書。我已將私鑰從我的鑰匙串導出到p12文件。我測試了生成的p12文件以確保它可以與密鑰存儲庫密碼一起使用。該證書絕對有效,因爲我今天剛剛創建了它(再次)。而且,當我通過運行Maven的安裝程序生成,它甚至看起來好像一切都很精細:
[INFO] Compressed media file 'Mac OS X Single Bundle':
[INFO] Compressing files
[INFO] Generating VM options file vmoptions.txt.
[INFO] Signing installer
[INFO] Signing DMG
[INFO] Moving media files to media directory /Users/....
[INFO] The name of the media file is my-app_macos_1_1_1.dmg.
[INFO] The size of the media file is 4.8 MB
這似乎不錯,除了安裝和DMG沒有簽名,或至少不會在某種程度上這是有用的:
$ spctl -a -v target/media/my-app_macos_1_1_1.dmg
target/media/my-app_macos_1_1_1.dmg: CSSMERR_TP_CERT_EXPIRED
$ spctl -a -v /Volumes/my-app/My\ Application\ Installer.app
/Volumes/my-app/My Application Installer.app: CSSMERR_TP_CERT_EXPIRED
cert沒有過期:
Alias name: mac developer: me myself (my company, inc.)
Creation date: Mar 6, 2017
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: C=US, O="Radiologics, Inc.", OU=K865L34KBQ, CN=Mac Developer: Me Myself (XXXX), UID=YYYY
Issuer: CN=Apple Worldwide Developer Relations Certification Authority, OU=Apple Worldwide Developer Relations, O=Apple Inc., C=US
Serial number: 30544da25ea67233
Valid from: Mon Mar 06 14:46:17 CST 2017 until: Tue Mar 06 14:46:17 CST 2018
但無論我直接從install4j或通過Maven插件構建DMG /安裝,結果是無效的。我總是得到類似這樣:
$ codesign -dvvv target/media/my-app_macos_1_1_0.dmg
Executable=.../target/media/my-app_macos_1_1_0.dmg
Identifier=my-app_macos_1_1_0
Format=disk image
CodeDirectory v=20100 size=173 flags=0x0(none) hashes=1+2 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=XXXXXX
Hash choices=sha256
CDHash=XXXXX
Signature size=8641
Authority=(unavailable)
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=36
爲了讓我們能夠發佈這款應用程式,我們真的需要得到這個工作,但我硬是花了這天沒有在任何進展所有。如果任何人都能對這裏發生的事情有所瞭解,我將不勝感激。
非常感謝您的幫助!我習慣於用一個標準的Java簽名證書來簽署所有的東西,所以有不同目的的多個證書的想法是非常......蘋果:)我必須做的不同的一件事是,當我使用安裝程序證書,我收到錯誤消息「install4j:編譯失敗。原因:com.install4j.cg:在PKCS12文件中找不到開發人員ID應用程序密鑰」。我切換到導出的「開發人員ID應用程序」證書,它的工作。不知道這是關於什麼,但我的安裝程序工作,所以我不在乎;) –
它的工作原理是因爲磁盤映像只應使用您的開發人員ID應用程序身份 –