最近一直在做electron应用的打包,集成mac版本的自动更新时出现了问题。
Error: Could not get code signature for running application
无法获取当前应用的代码签名。
(首先声明:由于mac的签名机制,npm run dev 是肯定没有签名的,以下所述都需要在npm run build 下打正式包)
百思不得其解,试过了各种办法,研究了N遍官方文档,发现现实和书上写的还是不一样。
注意到一直是npm run build打包的时候都无法签名成功(由于无法获取开发者认证信息,跳过签名)。
针对上述Mac上打包无法进行正确代码签名的问题,通过设置环境变量和使用xcode进行代码签名可以解决。
一.设置环境变量CSC_LINK
sudo vim ~/.bash_profile
在环境变量中配置
设置好环境变量之后用命令 source ~/.bash_profile
重载变量文件,使用命令env
查看环境变量配置结果
注意:如果配置完成之后,多次重载都发现环境变量不能正确更新到列表中,这时应该先退出终端,然后查看环境变量即可看到更新完成。
二.使用X-code进行mac版本上代码签名:
1.打开xcode主界面
2.Xcode==>Preferences…
3.Accounts==>Apple IDs==>Manage Certificates…
如果没有登录的话,先登录Apple ID,注意一定要登录开发者账号。登录成功后再进行Manage Certificates;
4.添加“+”Developer ID Application,注意一定要添加Developer ID Application到钥匙串中,不要选错了。
5.成功添加到钥匙串我的证书中
经过以上的步骤可以成功添加一个证书到钥匙串中的我的证书中。
至此使用Xcode成功添加代码签名到本地钥匙串中的我的证书中。
三.成功打包经过代码签名的安装包。
打包正在签名状态:
正确签名之后,打包成功!
注意:通过钥匙串的方式进行代码签名,进而实现自动更新之后,appId应一致,打包应用后不能随意更改新的appId字段。否则会被认为是两个不同的应用而无法更新。