electron mac 打包、分发流程(dmg & mas)

dmg 包

背景

在一些从没有安装过此软件的电脑上安装未签名或未公证的 dmg 包时,会触发苹果的 Gatekeeper,阻止用户安装你的 App。

测试阶段可以去设置->安全与隐私->通用栏目下面点击仍要打开,或者设置安装选项为允许任何来源(如果没有该选项可以在终端中执行 sudo spctl --master-disable )来解决此问题,下面介绍正式包的分发,正式包分发需要包括 签名 和 公证 2 个步骤

签名

使用 dmg 包分发的方式需要使用 Developer ID Application 的证书签名,只签 .app 文件即可,.dmg 文件不用签

证书获取

下载证书

在 apple developer 后台下载该证书,若没有,则创建一个,只有 Account Holder 才有权限创建此类型的证书,也可以通过其他同学导出的 p12 文件安装此证书

安装证书

需将证书安装在钥匙串登录模块下

打开钥匙串,切换到登录,保证当前是在登录栏下,双击下载的证书,即可将证书安装到登录模块下(保证此证书在钥匙串中包含密钥)

使用证书签名

使用 electron-builder 的打包方式,内置 electron-osx-sign 签名模块,不用单独运行签名脚本

identity

identity 属性为 package.json 中 build.mac 下的属性

- 配置 null,强制不签名

- 配置 app.com Inc. (xxxxxxxx) ,使用钥匙串中的 app.com Inc. (xxxxxxxx) 证书进行签名

- 不配置 identity 属性,打包时,electron-builder 会自动去钥匙串中查找可用的证书进行签名

证书类型

上述 identity 的配置不能包含证书头部信息,electron-builder 会根据环境配置默认拼接,规则为

此图为 electron-builder@23.3.2 版本的拼接规则,不同版本的 electron-builder 规则有所差异。图中代码位置在/node_modules/app-builder-lib/out/macPackager.js

公证

- 在 electron-builder 提供的 afterSign hook 脚本中写入公证脚本

// package.json

{  ...  "build": {    ...    "afterSign": "afterSign.js"  }}

- 在 afterSign.js 脚本中,使用 electron-notarize 模块进行公证

这里的 appleId、 appleIdPassword 为团队中任一有权限的账号即可

appleIdPassword 获取

登录 appid,生成你的专用密码

公证结果

若公证失败,命令行 log 或邮箱可以看到失败的原因

若公证成功,Apple Developer 会向你的邮箱发送公证结果,此时就可以放心得分发你的 dmg 文件给其他人了

mas 包

这里主要讲解 mas 包如何打包、签名。mas 包打完后,生成 .pkg 文件,再通过 Transporter 等工具上传的步骤这里不再复述

mas 正式包

配置

// package.json

证书、profile 获取

- 使用 Mac App Distribution 类型的证书给 .app 文件签名使用,此证书在安装到钥匙串后名字可能会改成“3rd Party Mac Developer Application”

- 使用 Mac Installer Distribution 类型的证书给 .pkg 文件签名使用,此证书在安装到钥匙串后名字可能会改成“3rd Party Mac Developer Installer”

- 在 developer 后台新建一个 profile、或者使用已经创建过的,关键信息是此 profile 需要与上述 Mac App Distribution 证书相关联,此 profile 用于在 package.json 中 mas.provisioningProfile 中配置

签名

使用 electron-builder 的打包方式,内置 electron-osx-sign 签名模块,不用单独运行签名脚本,electron-builder 会自动寻找钥匙串中的证书,进行签名。(可查看上述 identity 规则)

安装完证书、配置完 package.json 后,运行 electron-builder build --mac  构建 mas 包

注意!!上图为 electron-builder@23.3.2 版本寻找 3rd Party 的证书,低版本可能会寻找 Apple Distribution 的证书,解决方案为升级 electron-builder 版本,或手动修改 /node_modules/app-builder-lib/out/macPackager.js 最下面的代码,Apple Distribution -> 3rd Party Mac Developer Application

脚本执行完毕,签名成功后,生成 .pkg 包(electron-builder 会自动查找 3rd Party Mac Developer Installer 证书给 .pkg 文件签名,若本地没有此证书,命令行会报错),用于上传 App Store Connect

mas-dev 测试包

配置

证书、profile 获取

- 构建 mas-dev 包的方式需要使用 Mac Developer 类型的证书,供签名使用

- 在 developer 后台新建一个 profile、或者使用已经创建过的,关键信息是此 profile 需要与上述 Mac Developer 证书相关联,此 profile 用于在 package.json 中 masDev.provisioningProfile 中配置

签名

使用 electron-builder 打包、签名,运行 electron-builder build --mac  构建 mas-dev 包

脚本执行完毕,签名成功后,生成 .app 文件用于测试

设备绑定

此时,打开 .app 文件可能会崩溃,还需要在 develop 后台中绑定测试设备

Device ID(UUID)在关于本机->概览->系统报告->硬件->硬件UUID 获取

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容