最近随着项目功能的逐步完善,准备发布正式版本,在发布正式版本之前,考虑到用户后续版本更新的问题,所以要给Electron应用添加版本更新的功能。
由于应用在Mac端自动更新时需要进行身份验证等,所以前提条件就是要先给应用进行签名。
当然,应用不签名也是可以打包成功的,可以在执行打包命令前执行:
export CSC_IDENTITY_AUTO_DISCOVERY=false
这样就可以在打包时跳过签名步骤。
签名
制作本地CSR文件
从Mac上进入钥匙串访问,打开证书助理--->从证书办法机构请求证书...
输入常用邮件,选择存储到磁盘,点击继续
最后会生成一个CSR的文件,这个文件就是我们接下来需要的东西,我把它放到了桌面上
生成Developer ID Application证书
首先点击Certificates旁的加号
选择Developer ID Application类型的证书,注意Electron打包的桌面应用必须使用这个证书
然后开始选择CSR文件,就是第一步导出的放在了桌面上的那个文件
导入完毕之后,你就可以看到自己生成证书的信息了,最后点击下载
双击证书,将生成的证书导入到钥匙串中
打开钥匙串,找到这个证书,右键选择导出
文件格式选择个人信息交换(.p12),导出的路径要记住,后面要使用。
同时导出的时候会提示设置一个密码,也可以不设置。
生成Identifiers
点击Identifiers选项,进行添加
选择App IDs,继续
选择APP,继续
填写应用描述和BundleId,注意这个BundleId要同package.json中配置的appId要匹配。
配置环境变量
配置环境变量,用以让electron在打包时能找到刚才的p12证书。
打开Mac终端,输入命令:
sudo vim ~/.bash_profile
在.bash_profile新增两行配置:
CSC_LINK:刚才导出的p12文件的绝对路径
CSC_KEY_PASSWORD:导出p12文件时设置的密码
export CSC_LINK=/Users/ylp/Desktop/developerID_application.p12
export CSC_KEY_PASSWORD=123456
编辑完成后:wq保存退出,再执行以下命令进行重载环境变量:
source ~/.bash_profile
package.json配置
注意此处的appid应该跟上文Identifiers中设置的BundleId是一致的。
并且打包应用后不要随意更改新的appId字段,否则会被认为是两个不同的应用。
"build": {
"appId": "com.xxx.yyy",
},
到这里,签名配置就完成了,执行打包命令后发现在执行步骤中多了一个signing的步骤,说明签名成功了。
存在的问题
对于签名后的APP,经过测试,发现了两个问题:
摄像头、麦克风等设备访问时会出现崩溃。
解决方法:Electron应用在macOS摄像头、麦克风访问崩溃问题解决方法安装包安装失败。
解决方法:Electron应用在macOS下公证方法