阅读 743

Electron+Vue3 MAC 版日历开发记录(34)——dmg打包下载 | 8月更文挑战

由于上次打包成 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
复制代码

其他配置可详见于:github.com/LinusU/node…

公证

如果要分发应用(例如上架 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 就可以把下载地址给大家下载安装使用了。

下载地址来一个:github.com/fanly/fanly…

总结

基本把整个过程记录下来了,接下来整个 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
复制代码
文章分类
前端