最近一直在做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
在環境變量中配置
以上是官網的環境變量配置項,而其實我只配置了CSC_LINK一項,配置如下
設置好環境變量之后用命令
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字段。否則會被認為是兩個不同的應用而無法更新。
四.Mac包正確升級(自動更新)示例
注意:先把正確簽名打包后的高版本MAC安裝文件上傳服務器,然后本地再打包一個低版本Mac包文件.dmg,安裝低版本MAC包,觸發自動更新,即可完成升級,自動安裝高版本MAC包到本地。
如果這篇文章對你的工作或者學習有幫助的話,請收藏或點個贊。如果對其中有什么不明白的或者報錯,可以留言或者加QQ群140455228交流。