最近一直在作electron應用的打包,集成mac版本的自動更新時出現了問題。 javascript
Error: Could not get code signature for running application
沒法獲取當前應用的代碼簽名。java
(首先聲明:因爲mac的簽名機制,npm run dev 是確定沒有簽名的,如下所述都須要在npm run build 下打正式包)npm
百思不得其解,試過了各類辦法,研究了N遍官方文檔,發現現實和書上寫的仍是不同。
注意到一直是npm run build打包的時候都沒法簽名成功(因爲沒法獲取開發者認證信息,跳過簽名)。vim
最後歷經九九八十一難(有點小誇張),終於找到了解決方案,下面把過程寫下來,以示記錄。
針對上述Mac上打包沒法進行正確代碼簽名的問題,經過設置環境變量和使用xcode進行代碼簽名能夠解決。
一.設置環境變量CSC_LINKxcode
sudo vim ~/.bash_profile
在環境變量中配置bash
以上是官網的環境變量配置項,而其實我只配置了CSC_LINK一項,配置以下服務器
設置好環境變量以後用命令app
source ~/.bash_profile
重載變量文件,使用命令electron
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交流。