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