最近隨著項目功能的逐步完善,準備發布正式版本,在發布正式版本之前,考慮到用戶后續版本更新的問題,所以要給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下公證方法