dmg?包
背景
在一些從沒有安裝過此軟件的電腦上安裝未簽名或未公證的?dmg?包時(shí),會(huì)觸發(fā)蘋果的?Gatekeeper兼都,阻止用戶安裝你的?App嫂沉。
測(cè)試階段可以去設(shè)置->安全與隱私->通用欄目下面點(diǎn)擊仍要打開,或者設(shè)置安裝選項(xiàng)為允許任何來(lái)源(如果沒有該選項(xiàng)可以在終端中執(zhí)行?sudo?spctl?--master-disable?)來(lái)解決此問題扮碧,下面介紹正式包的分發(fā)趟章,正式包分發(fā)需要包括?簽名?和?公證?2?個(gè)步驟
簽名
使用?dmg?包分發(fā)的方式需要使用?Developer?ID?Application?的證書簽名,只簽?.app?文件即可慎王,.dmg?文件不用簽
證書獲取
下載證書
在?apple?developer?后臺(tái)下載該證書蚓土,若沒有,則創(chuàng)建一個(gè)赖淤,只有?Account?Holder?才有權(quán)限創(chuàng)建此類型的證書蜀漆,也可以通過其他同學(xué)導(dǎo)出的?p12?文件安裝此證書
安裝證書
需將證書安裝在鑰匙串登錄模塊下
打開鑰匙串,切換到登錄漫蛔,保證當(dāng)前是在登錄欄下,雙擊下載的證書旧蛾,即可將證書安裝到登錄模塊下(保證此證書在鑰匙串中包含密鑰)
使用證書簽名
使用?electron-builder?的打包方式莽龟,內(nèi)置?electron-osx-sign?簽名模塊,不用單獨(dú)運(yùn)行簽名腳本
identity
identity?屬性為?package.json?中?build.mac?下的屬性
- 配置?null锨天,強(qiáng)制不簽名
- 配置?app.com?Inc.?(xxxxxxxx)?毯盈,使用鑰匙串中的?app.com?Inc.?(xxxxxxxx)?證書進(jìn)行簽名
- 不配置?identity?屬性,打包時(shí)病袄,electron-builder?會(huì)自動(dòng)去鑰匙串中查找可用的證書進(jìn)行簽名
證書類型
上述?identity?的配置不能包含證書頭部信息搂赋,electron-builder?會(huì)根據(jù)環(huán)境配置默認(rèn)拼接,規(guī)則為
公證
- 在?electron-builder?提供的?afterSign?hook?腳本中寫入公證腳本
//?package.json
{??...??"build":?{????...????"afterSign":?"afterSign.js"??}}
- 在?afterSign.js?腳本中,使用?electron-notarize?模塊進(jìn)行公證
這里的?appleId幅慌、?appleIdPassword?為團(tuán)隊(duì)中任一有權(quán)限的賬號(hào)即可
appleIdPassword?獲取
登錄?appid宋欺,生成你的專用密碼
公證結(jié)果
若公證失敗,命令行?log?或郵箱可以看到失敗的原因
若公證成功胰伍,Apple?Developer?會(huì)向你的郵箱發(fā)送公證結(jié)果齿诞,此時(shí)就可以放心得分發(fā)你的?dmg?文件給其他人了
mas?包
這里主要講解?mas?包如何打包、簽名骂租。mas?包打完后祷杈,生成?.pkg?文件,再通過?Transporter?等工具上傳的步驟這里不再?gòu)?fù)述
mas?正式包
配置
//?package.json
證書渗饮、profile?獲取
- 使用?Mac?App?Distribution?類型的證書給?.app?文件簽名使用但汞,此證書在安裝到鑰匙串后名字可能會(huì)改成“3rd?Party?Mac?Developer?Application”
- 使用?Mac?Installer?Distribution?類型的證書給?.pkg?文件簽名使用宿刮,此證書在安裝到鑰匙串后名字可能會(huì)改成“3rd?Party?Mac?Developer?Installer”
- 在?developer?后臺(tái)新建一個(gè)?profile、或者使用已經(jīng)創(chuàng)建過的特占,關(guān)鍵信息是此?profile?需要與上述?Mac?App?Distribution?證書相關(guān)聯(lián)糙置,此?profile?用于在?package.json?中?mas.provisioningProfile?中配置
簽名
使用?electron-builder?的打包方式,內(nèi)置?electron-osx-sign?簽名模塊是目,不用單獨(dú)運(yùn)行簽名腳本谤饭,electron-builder?會(huì)自動(dòng)尋找鑰匙串中的證書,進(jìn)行簽名懊纳。(可查看上述?identity?規(guī)則)
安裝完證書揉抵、配置完?package.json?后,運(yùn)行?electron-builder?build?--mac??構(gòu)建?mas?包
注意`头琛冤今!上圖為?electron-builder@23.3.2?版本尋找?3rd?Party?的證書,低版本可能會(huì)尋找?Apple?Distribution?的證書茂缚,解決方案為升級(jí)?electron-builder?版本戏罢,或手動(dòng)修改?/node_modules/app-builder-lib/out/macPackager.js?最下面的代碼,Apple?Distribution?->?3rd?Party?Mac?Developer?Application
腳本執(zhí)行完畢脚囊,簽名成功后龟糕,生成?.pkg?包(electron-builder?會(huì)自動(dòng)查找?3rd?Party?Mac?Developer?Installer?證書給?.pkg?文件簽名,若本地沒有此證書悔耘,命令行會(huì)報(bào)錯(cuò))讲岁,用于上傳?App?Store?Connect
mas-dev?測(cè)試包
配置
證書、profile?獲取
- 構(gòu)建?mas-dev?包的方式需要使用?Mac?Developer?類型的證書衬以,供簽名使用
- 在?developer?后臺(tái)新建一個(gè)?profile缓艳、或者使用已經(jīng)創(chuàng)建過的,關(guān)鍵信息是此?profile?需要與上述?Mac?Developer?證書相關(guān)聯(lián)看峻,此?profile?用于在?package.json?中?masDev.provisioningProfile?中配置
簽名
使用?electron-builder?打包阶淘、簽名,運(yùn)行?electron-builder?build?--mac??構(gòu)建?mas-dev?包
腳本執(zhí)行完畢互妓,簽名成功后舶治,生成?.app?文件用于測(cè)試
設(shè)備綁定
此時(shí),打開?.app?文件可能會(huì)崩潰车猬,還需要在?develop?后臺(tái)中綁定測(cè)試設(shè)備
Device?ID(UUID)在關(guān)于本機(jī)->概覽->系統(tǒng)報(bào)告->硬件->硬件UUID?獲取