Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

时间:2023-03-09 03:37:35
Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

最近一直在做electron应用的打包,集成mac版本的自动更新时出现了问题。

Error: Could not get code signature for running application

  Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

无法获取当前应用的代码签名。

(首先声明:由于mac的签名机制,npm run dev 是肯定没有签名的,以下所述都需要在npm run build 下打正式包)

百思不得其解,试过了各种办法,研究了N遍官方文档,发现现实和书上写的还是不一样。
注意到一直是npm run build打包的时候都无法签名成功(由于无法获取开发者认证信息,跳过签名)。

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

最后历经九九八十一难(有点小夸张),终于找到了解决方案,下面把过程写下来,以示记录。
针对上述Mac上打包无法进行正确代码签名的问题,通过设置环境变量和使用xcode进行代码签名可以解决。
一.设置环境变量CSC_LINK

sudo vim ~/.bash_profile

在环境变量中配置

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

以上是官网的环境变量配置项,而其实我只配置了CSC_LINK一项,配置如下

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

设置好环境变量之后用命令

source ~/.bash_profile

重载变量文件,使用命令

env

查看环境变量配置结果。

注意:如果配置完成之后,多次重载都发现环境变量不能正确更新到列表中,这时应该先退出终端,然后再登录终端查看环境变量即可看到更新完成。

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

二.使用X-code进行mac版本上代码签名:
1.打开xcode主界面
2.Xcode==>Preferences…

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

3.Accounts==>Apple IDs==>Manage Certificates…
如果没有登录的话,先登录Apple ID,注意一定要登录开发者账号。登录成功后再进行Manage Certificates;

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

4.添加“+”Developer ID Application,注意一定要添加Developer ID Application到钥匙串中,不要选错了。

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

5.成功添加到钥匙串我的证书中
经过以上的步骤可以成功添加一个证书到钥匙串中的我的证书中。

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

至此使用Xcode成功添加代码签名到本地钥匙串中的我的证书中。
三.成功打包经过代码签名的安装包。
打包正在签名状态:

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

正确签名之后,打包成功!

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

注意:通过钥匙串的方式进行代码签名,进而实现自动更新之后,appId应一致,打包应用后不能随意更改新的appId字段。否则会被认为是两个不同的应用而无法更新。

四.Mac包正确升级(自动更新)示例

注意:先把正确签名打包后的高版本MAC安装文件上传服务器,然后本地再打包一个低版本Mac包文件.dmg,安装低版本MAC包,触发自动更新,即可完成升级,自动安装高版本MAC包到本地。

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

Electron 打包Mac安装包代码签名问题解决方案Could not get code signature for running application

如果这篇文章对你的工作或者学习有帮助的话,请收藏或点个赞。如果对其中有什么不明白的或者报错,可以留言或者加QQ群140455228交流