W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
代碼簽名是一種用來證明應用是由你創(chuàng)建的一種安全技術。 您應該對應用程序進行簽名,以便它不會觸發(fā)任何 操作系統(tǒng)安全檢查。
在 macOS 上,系統(tǒng)可以檢測對應用的任何更改,無論更改是 意外引入還是由惡意代碼引入。
在Windows系統(tǒng)中,如果程序沒有代碼簽名證書,或者代碼簽名授信級別較低時,系統(tǒng)同樣會將其列為可信程序,只是當用戶運行該應用時,系統(tǒng)會顯示安全提示。 信任級別隨著時間的推移構建,因此最好盡早開始代碼簽名。
即使開發(fā)者可以發(fā)布一個未簽名的應用程序,但是我們并不建議這樣做。 默認情況下,Windows 和 macOS 都會禁止未簽名的應用的下載或運行。 從 macOS Catalina (10.15版本) 開始,用戶需要操作很多個步驟來運行一個未簽名的應用。
如你所見,用戶有兩個選擇:直接刪除應用或者取消運行。 你不會想讓用戶看見該對話框。
如果你正在開發(fā)一款Electron應用,并打算將其打包發(fā)布,那你就應該為其添加代碼簽名。
正確準備即將發(fā)布的 macOS 應用程序需要完成兩個步驟。 首先, 應用需要進行代碼簽名。 然后,需要將該應用程序上傳到Apple以進行稱為 公證 的過程,其中自動化系統(tǒng)將進一步驗證 您的應用程序是否未采取任何危害其用戶的行為。
若要開始,請確保你滿足簽名要求并認證你的應用:
Electron 的生態(tài)系統(tǒng)有利于配置和自由,所以有多種方法讓您的應用程序簽名和公證。
如果你正在使用 Electron 最受歡迎的構建工具,創(chuàng)建你的應用程序簽名 并經過公證僅需要對配置進行一些添加即可。 Forge 是官方的 Electron 工具的 集合,在hood下使用 electron-packager
@electron/osx-sign
@electron/notarize
。
請參見 Electron Forge 文檔中的 簽署 macOS 應用程序 指南了解如何配置應用程序詳細說明。
如果你沒有使用像 Forge 這樣的集成構建流,你可能會使用 electron-packager
,其中包括 @electron/osx-sign
和
@electron/notarize
。
如果您正在使用 Packager 的 API,您可以通過配置 來簽名并對您的應用程序進行公證
const packager = require('electron-packager')
packager({
dir: '/path/to/my/app',
osxSign: {},
osxNotarize: {
appleId: 'felix@felix.fun',
appleIdPassword: 'my-apple-id-password'
}
})
詳見 Mac App Store 應用程序提交指南。
在簽署Windows應用程序前,你需要完成以下事項:
您可以從許多經銷商獲得代碼簽名證書。 價格各異,所以值得你花點時間去貨比三家。 常見經銷商包括:
妥善保存您的證書密碼
您的證書密碼應該被妥善保存。 不要公開分享,或者提交到您的開源代碼中。
Electron Forge 是簽署 Squirrel.Windows
和 WiX MSI
安裝程序的推薦方式。 Electron Forge 代碼簽名教程 中提供了有關如何配置應用程序的詳細說明。
electron-winstaller
可以為您的 Electron 程序創(chuàng)建 Squirrel.Windows 安裝器。 這也是 Electron Forge 的 Squirrel.Windows Maker 底層在使用的工具。 如果您不使用 Electron Forge 并想直接使用 electron-winstaller
,請通過 certificateFile
和 certificatePassword
配置選項。
const electronInstaller = require('electron-winstaller')
// NB: Use this syntax within an async function, Node does not have support for
// top-level await as of Node 12.
try {
await electronInstaller.createWindowsInstaller({
appDirectory: '/tmp/build/my-app-64',
outputDirectory: '/tmp/build/installer64',
authors: 'My App Inc.',
exe: 'myapp.exe',
certificateFile: './cert.pfx',
certificatePassword: 'this-is-a-secret',
})
console.log('It worked!')
} catch (e) {
console.log(`No dice: ${e.message}`)
}
有關完整配置選項,請查看 electron-winstaller
庫!
electron-wix-msi
是一個可以為您的 Electron 應用程序生成 MSI 安裝程序的庫。 這是 Electron Forge 的 MSI Maker 底層使用的工具。
如果您沒有使用 Electron Forge,并且想要直接使用 electron-wix-msi
,請使用 certificateFile
和 certificatePassword
配置選項 或將參數(shù)直接傳遞到 SignTool.exe 并帶有 signWithParams
選項。
import { MSICreator } from 'electron-wix-msi'
// 步驟1:實例化MSICreator
const msiCreator = new MSICreator({
appDirectory: '/path/to/built/app',
description: 'My amazing Kitten simulator',
exe: 'kittens',
name: 'Kittens',
manufacturer: 'Kitten Technologies',
version: '1.1.2',
outputDirectory: '/path/to/output/folder',
certificateFile: './cert.pfx',
certificatePassword: 'this-is-a-secret',
})
// Step 2: 創(chuàng)建一個 .wxs 模板文件
const supportBinaries = await msiCreator.create()
// ?? 步驟 2a: 如果可以選擇對支持二進制文件進行簽名
// 將二進制文件作為打包腳本的一部分進行簽名
supportBinaries.forEach(async (binary) => {
// 二進制文件是新的存根可執(zhí)行文件,可以選擇
// Squirrel 自動更新程序。
await signFile(binary)
})
// 步驟 3:將模板編譯為.msi文件
await msiCreator.compile()
如需完整的配置選項,請查看 electron-wix-msi 存儲庫!
Electron Builder 附帶一個自定義解決方案,用于簽署應用程序。 你可以在這里找到 它的文檔
參考 Windows 商店指南。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: