由于上次打包成 mas,提交到 Apple Connect 上没有通过审核,主要还是因为 Election 私有 API 的缘故。
因此自己自签名和公证,打包成 DMG,不用放到 Apple 应用商店,以供大家下载使用。
当然,这过程也会出现一些问题,如:在打包的过程生成的 APP,安装的时候出现「你没有权限打开应用程序的问题」的问题,是因为没有签名的原因。
所以我把整个流程记录下来,以供自己和大家出现的时候,有地方可查。
签名
通过之前的配置和打包,生成 FanlyCalendar.app
,还是需要我们自己签名一次,这里可以使用 electron-osx-sign
工具。
electron-osx-sign "/Users/yemeishu/Documents/code/codes/fanlymenu2/dist/Mac/FanlyCalendar.app"
签名后,可以做一次验证,证明签名的有效性。
验证签名
这里使用命令行:spctl
。
spctl --verbose=4 --assess --type execute "/Users/yemeishu/Documents/code/codes/fanlymenu2/dist/Mac/FanlyCalendar.app"
FanlyCalendar.app: accepted
source=Unnotarized Developer ID
override=security disabled
这里返回的 accepted
即可。
签名后的 「.app」可以使用 create-dmg
或者 appdmg
打包成为 dmg 格式。
create-dmg
使用 create-dmg
将 app 格式打包成 dmg 格式:
// install
npm install --global create-dmg
// or
brew install create-dmg
// use
create-dmg FanlyCalendar.dmg FanlyCalendar.app
注意: Don’t forget to notarize your DMG.别忘了公证你的应用。
appdmg
// 安装
npm install -g appdmg
// json
{
"title": "Test Application",
"icon": "test-app.icns",
"background": "test-background.png",
"contents": [
{ "x": 448, "y": 344, "type": "link", "path": "/Applications" },
{ "x": 192, "y": 344, "type": "file", "path": "TestApp.app" }
]
}
// use
appdmg ./dist.json FanlyCalendar.dmg
公证
如果要分发应用(例如上架 MAS 或者其他渠道),则还需要公证 notarization,即将包上传到苹果的后台,以供苹果判断是否包含恶意程序。可以简单理解为类似 iPhone 的应用审核,不过这个过程应该是程序自动进行的,因为很快(一般几分钟)。
如果没有经过公证,别人拿到你的安装包就会提示“无法打开,因为无法验证开发者”,虽然自己本地可以安装使用。
xcrun altool --notarize-app --primary-bundle-id "cn.coding01.fanlycalendar" --username "*****@***.com" --password "****-****-****-****" --asc-provider "W5******" -t osx --file "./FanlyCalendar.dmg"
认证返回:
No errors uploading './FanlyCalendar.dmg'.
RequestUUID = 53ff521e-45f6-485c-870c-33c****ee882
可以利用 RequestUUID
执行命令查看公证结果:
xcrun altool --notarization-info 53ff521e-45f6-485c-870c-33c****cee882 -u "username" -p "password-****-****-****"
成功时:
No errors getting notarization info.
Date: 2021-07-27 09:05:06 +0000
Hash: b35d8896170aef6
RequestUUID: 53ff521e-45f6-485c-870c-33c****ee882
Status: in progress
失败的提示:
No errors getting notarization info.
Date: 2021-07-27 06:23:17 +0000
Hash: 7763048fbf39a8a9006f
LogFileURL: https://osxapps-ssl.itunes.apple.com/itunes-assets/Enigma115/vSPAw9Ohfbsu4HWFBsU4M9raZn5vq9PvEylwI%3D
RequestUUID: 1d7f9fdb-c11c-49a3-8d5d-f79d0699472f
Status: invalid
Status Code: 2
Status Message: Package Invalid
也可以通过他提供的网页看到反馈结果。
无论公证成功与否,都会给我们的邮箱里推送公证结果:
只有公证后的 dmg 就可以把下载地址给大家下载安装使用了。
总结
基本把整个过程记录下来了,接下来整个 8 月份,我们开始新的功能开发了:
这过程还有一些有用的命令行工具,如:security find-identity
:
security find-identity -p codesigning -v
1) 70AF557B6F1******2ED57D657C77A834C10 "3rd Party Mac Developer Application: **** ** (***)"
2) A66AA88D1B******0A0C671A81842226F18B "Developer ID Application: H**** ** (***)"
2 valid identities found
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作者: 叶梅树 原文链接:https://juejin.im/post/6991388457750773796