請注意,這是本教程的最后一步! 在這一部分,你將發(fā)布應(yīng)用到 GitHub 版本中心,并將自動更新功能整合到應(yīng)用代碼中。
Electron 官方在 https://update.electronjs.org 上為開源應(yīng)用程序提供了免費的自動更新服務(wù)。 使用它有以下幾點要求:
至此,我們假設(shè)你已將所有代碼推送到公開的 GitHub 倉庫。
替代更新服務(wù)
如果您使用了其他存儲庫主機 (例如 GitLab 或 Bitbucket),或者如果您你的代碼倉庫不能公開,請參閱 更新應(yīng)用程序 教程以托管您自己的 Electron 更新服務(wù)器。
Electron Forge 的 Publisher 插件可以自動將打包的應(yīng)用程序分發(fā)到各種來源。 在本教程中,我們將演示使用 GitHub Publisher 將代碼發(fā)布到 GitHub releases 中。
未經(jīng)許可,F(xiàn)orge無法向GitHub 上的任何倉庫發(fā)布。 你需要通過一個認證令牌,授權(quán) Forge 使用 GitHub 的發(fā)布功能。 最簡單的方法是 創(chuàng)建一個新的個人訪問令牌 (PAT) 范圍為 public_repo
, 它將給你的公共資源庫提供寫訪問權(quán)限。 請確保此令牌不外泄。
Forge 的 GitHub Publisher 是一個插件, 它需要被安裝到你的項目的 devDependencies
里面去:
npm | Yarn |
|
|
一旦安裝完畢,你需要在 Forge 配置中設(shè)置它。 完整的選項列表在 Forge 的 PublisherGitHubConfig
API 文檔中。
module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'github-user-name',
name: 'github-repo-name',
},
prerelease: false,
draft: true,
},
},
],
}
發(fā)布前的草案版本
請注意,你已配置 Forge 來發(fā)布你的項目作為草稿版本。 這將使您能夠看到其生成的結(jié)果而無需實際發(fā)布給你的最終用戶。 當(dāng)你寫下版本說明和并多次檢查分發(fā)的工作內(nèi)容后, 就可以手動在 Github 上發(fā)布你的應(yīng)用.
你還需要讓發(fā)布器了解你的身份驗證令牌。 默認情況下,它將使用存儲在 GITHUB_TOKEN
環(huán)境變量的值。
將 Forge 的 發(fā)布命令 添加到 npm 腳本內(nèi)。
//...
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish"
},
//...
此命令將運行你配置的創(chuàng)建方法并將輸出的可分發(fā)文件發(fā)布到新的 GitHub 版本。
npm | Yarn |
|
|
默認情況下,這只會為你當(dāng)前的主機操作系統(tǒng)架構(gòu)發(fā)布一個單一的可分發(fā)文件。 你可以通過將 --arch
參數(shù)傳遞給 Forge 命令來發(fā)布不同的架構(gòu)。
版本的名稱將對應(yīng)于項目的 package.json 文件中的 version
字段。
發(fā)布時打上標(biāo)簽
可選的, 你也可以 在Git上對版本打標(biāo)簽, 這樣你的版本將關(guān)聯(lián)到一個代碼歷史中的標(biāo)簽點. npm附帶了一個方便的
npm version
命令,可以為你處理版本碰撞或打標(biāo)簽.
本地發(fā)布的版本可能很單一,因為只能為你的主機操作系統(tǒng)創(chuàng)建一種版本 (比如, 你不能從 macOS 系統(tǒng)上發(fā)布 Window 系統(tǒng)的 .exe
文件)。
一種解決方案是通過自動化工作流來發(fā)布你的應(yīng)用比如 GitHub Actions, 通過它可以在各種云系統(tǒng)內(nèi)包括 Ubuntu, macOS 和 Windows 上運行任務(wù). 這是 Electron Fiddle 采用的精確方法.
你可以參考 Fiddle 的 構(gòu)建和發(fā)布一條龍 以及 Forge 配置 了解更多詳情。
至此我們有了一個通過 GitHub 發(fā)布的功能性發(fā)布系統(tǒng), 我們現(xiàn)在需要告訴我們的 Electron 應(yīng)用來下載更新,而且是每當(dāng)新版本出現(xiàn)時都需要更新。 Electron 應(yīng)用通過 autoUpdater 模塊來實現(xiàn)此功能, 此模塊可以從更新服務(wù)源中讀取信息, 并檢查是否有一個新版本可供下載.
網(wǎng)址是 update.electronjs.org 的服務(wù)器提供了一個兼容更新源. 比如, Electron Fiddle v0.28.0 將會檢查接口 https://update.electronjs.org/electron/fiddle/darwin/v0.28.0 來查看是否有新的 GitHub
版本可用.
一旦你的發(fā)布版本被推送到 GitHub, 對應(yīng)的更新服務(wù) update.electronjs.org 將會自動對接你的應(yīng)用. 剩下的唯一步驟是使用 autoUpdater 模塊配置源。
為了讓整個過程更加簡單, Electron 團隊維護 update-electron-app
模塊, 它在一次函數(shù)調(diào)用中為 update.electronjs.org 設(shè)置了 autoUpdater 樣板,無需配置。 這個模塊將搜索 update.electronjs.org 源中與項目內(nèi) package.json
的"repository"
字段匹配的部分。
首先,安裝模塊作為運行時的依賴項
npm | Yarn |
|
|
然后導(dǎo)入模塊并在主進程中立即調(diào)用
require('update-electron-app')()
這是需要做的事情! 一旦你的應(yīng)用程序被打包,它將在你發(fā)布每個新的 GitHub 版本時更新自己。
在本教程中,我們配置了 Electron Forge 的 GitHub Publisher 以將您的應(yīng)用程序的可分發(fā)文件上傳到 GitHub 發(fā)布。由于無法始終在平臺之間生成可分發(fā)文件,如果您無權(quán)訪問機器,我們建議在持續(xù)集成管道中設(shè)置構(gòu)建和發(fā)布流程。
Electron應(yīng)用程序可以通過將autoUpdater模塊指向更新服務(wù)器feed來實現(xiàn)自我更新。 update.electronjs.org是一個 Electron 為開放源碼應(yīng)用程序 免費提供的更新服務(wù)器,發(fā)布在 GitHub 版本上。配置您的 Electron 應(yīng)用程序以使用此服務(wù)就像安裝和導(dǎo)入 ?update-electron-app
? 模塊一樣簡單。
如果你的應(yīng)用程序不適合使用 update.electronijs.org,你應(yīng)該自己部署 一個更新服務(wù)器,并配置自己的自動 autoUpdater 模塊。
你已完成!
從這里開始,您已經(jīng)正式完成了我們的 Electron 教程。請隨意探索我們的其余文檔并祝開發(fā)愉快!如果您有任何疑問,請訪問我們的社區(qū) Discord 服務(wù)器。
更多建議: