最近隨著項(xiàng)目功能的逐步完善,準(zhǔn)備發(fā)布正式版本,在發(fā)布正式版本之前,考慮到用戶后續(xù)版本更新的問題,所以要給Electron應(yīng)用添加版本更新的功能。
由于應(yīng)用在Mac端自動更新時需要進(jìn)行身份驗(yàn)證等,所以前提條件就是要先給應(yīng)用進(jìn)行簽名。
當(dāng)然,應(yīng)用不簽名也是可以打包成功的,可以在執(zhí)行打包命令前執(zhí)行:
export CSC_IDENTITY_AUTO_DISCOVERY=false
這樣就可以在打包時跳過簽名步驟。
簽名
制作本地CSR文件
從Mac上進(jìn)入鑰匙串訪問,打開證書助理--->從證書辦法機(jī)構(gòu)請求證書...

輸入常用郵件,選擇存儲到磁盤,點(diǎn)擊繼續(xù)

最后會生成一個CSR的文件,這個文件就是我們接下來需要的東西,我把它放到了桌面上

生成Developer ID Application證書
首先點(diǎn)擊Certificates旁的加號

選擇Developer ID Application類型的證書,注意Electron打包的桌面應(yīng)用必須使用這個證書

然后開始選擇CSR文件,就是第一步導(dǎo)出的放在了桌面上的那個文件

導(dǎo)入完畢之后,你就可以看到自己生成證書的信息了,最后點(diǎn)擊下載

雙擊證書,將生成的證書導(dǎo)入到鑰匙串中

打開鑰匙串,找到這個證書,右鍵選擇導(dǎo)出

文件格式選擇個人信息交換(.p12),導(dǎo)出的路徑要記住,后面要使用。
同時導(dǎo)出的時候會提示設(shè)置一個密碼,也可以不設(shè)置。


生成Identifiers
點(diǎn)擊Identifiers選項(xiàng),進(jìn)行添加

選擇App IDs,繼續(xù)

選擇APP,繼續(xù)

填寫應(yīng)用描述和BundleId,注意這個BundleId要同package.json中配置的appId要匹配。

配置環(huán)境變量
配置環(huán)境變量,用以讓electron在打包時能找到剛才的p12證書。
打開Mac終端,輸入命令:
sudo vim ~/.bash_profile
在.bash_profile新增兩行配置:
CSC_LINK:剛才導(dǎo)出的p12文件的絕對路徑
CSC_KEY_PASSWORD:導(dǎo)出p12文件時設(shè)置的密碼
export CSC_LINK=/Users/ylp/Desktop/developerID_application.p12
export CSC_KEY_PASSWORD=123456
編輯完成后:wq保存退出,再執(zhí)行以下命令進(jìn)行重載環(huán)境變量:
source ~/.bash_profile
package.json配置
注意此處的appid應(yīng)該跟上文Identifiers中設(shè)置的BundleId是一致的。
并且打包應(yīng)用后不要隨意更改新的appId字段,否則會被認(rèn)為是兩個不同的應(yīng)用。
"build": {
"appId": "com.xxx.yyy",
},
到這里,簽名配置就完成了,執(zhí)行打包命令后發(fā)現(xiàn)在執(zhí)行步驟中多了一個signing的步驟,說明簽名成功了。

存在的問題
對于簽名后的APP,經(jīng)過測試,發(fā)現(xiàn)了兩個問題:
攝像頭、麥克風(fēng)等設(shè)備訪問時會出現(xiàn)崩潰。
解決方法:Electron應(yīng)用在macOS攝像頭、麥克風(fēng)訪問崩潰問題解決方法安裝包安裝失敗。
解決方法:Electron應(yīng)用在macOS下公證方法