發布與更新
學習目標
如果您一直跟著做,這就是本教學的最後一步!在這一部分,您會將應用程式發布到 GitHub 發行版本,並將自動更新整合到您的應用程式程式碼中。
使用 update.electronjs.org
Electron 維護人員在 https://update.electronjs.org 提供適用於開源應用程式的免費自動更新服務。其需求如下
- 您的應用程式在 macOS 或 Windows 上執行
- 您的應用程式有一個公開的 GitHub 儲存庫
- 組建發布到 GitHub 發行版本
- 組建已程式碼簽署(僅限 macOS)
此時,我們假設您已將所有程式碼推送至公開的 GitHub 儲存庫。
如果您使用的是其他儲存庫主機(例如 GitLab 或 Bitbucket),或者您需要保持程式碼儲存庫的私密性,請參閱我們的 逐步指南,瞭解如何託管您自己的 Electron 更新伺服器。
發布 GitHub 發行版本
Electron Forge 具有 發布者 外掛程式,可以自動將您封裝的應用程式發布到各種來源。在本教學中,我們將使用 GitHub 發布者,這將讓我們能夠將程式碼發布到 GitHub 發行版本。
產生個人存取權杖
Forge 未經許可無法發布到 GitHub 上的任何儲存庫。您需要傳入一個已驗證的權杖,讓 Forge 可以存取您的 GitHub 發行版本。最簡單的方法是建立一個具有 public_repo
範圍的新的個人存取權杖 (PAT),這會讓您擁有公開儲存庫的寫入權限。請務必將此權杖保密。
設定 GitHub 發布者
安裝模組
Forge 的 GitHub 發布者是一個外掛程式,需要安裝在專案的 devDependencies
中
- npm
- Yarn
npm install --save-dev @electron-forge/publisher-github
yarn add --dev @electron-forge/publisher-github
在 Forge 中設定發布者
安裝完成後,您需要在 Forge 設定中進行設定。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
}
}
]
}
請注意,您已將 Forge 設定為將您的發行版本發布為草稿。這可讓您在不實際發布給最終使用者的情況下,查看具有其產生的成品發行版本。您可以透過 GitHub 手動發布您的發行版本,在撰寫發行版本附註並仔細檢查您的可散布檔案是否運作之後。
設定您的驗證權杖
您還需要讓發布者知道您的驗證權杖。依預設,它會使用儲存在 GITHUB_TOKEN
環境變數中的值。
執行發布命令
將 Forge 的 發布命令新增至您的 npm 腳本。
//...
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish"
},
//...
此命令會執行您設定的製作工具,並將輸出可散布檔案發布至新的 GitHub 發行版本。
- npm
- Yarn
npm run publish
yarn run publish
依預設,這只會為您的主機作業系統和架構發布單一可散布檔案。您可以透過將 --arch
旗標傳遞至您的 Forge 命令,來發布不同的架構。
此發行版本的名稱會對應至您專案 package.json 檔案中的 version
欄位。
選擇性地,您也可以在 Git 中標記您的發行版本,讓您的發行版本與您程式碼歷程記錄中的標籤點相關聯。npm 隨附一個方便的 npm version
命令,可以為您處理版本變更和標記。
獎勵:在 GitHub Actions 中發布
在本機發布可能會很痛苦,特別是因為您只能為您的主機作業系統建立可散布檔案(也就是說,您無法從 macOS 發布 Windows .exe
檔案)。
解決此問題的方法是在自動化工作流程(例如 GitHub Actions)中發布您的應用程式,這可以在雲端上的 Ubuntu、macOS 和 Windows 中執行工作。這正是 Electron Fiddle 採用的方法。您可以參考 Fiddle 的 組建和發布管道以及 Forge 設定以瞭解更多詳細資訊。
檢測您的更新程式碼
現在我們有了透過 GitHub 發行版本運作的發布系統,我們現在需要告訴我們的 Electron 應用程式,只要有新的發行版本,就下載更新。Electron 應用程式透過 autoUpdater 模組來執行此操作,該模組會從更新伺服器摘要讀取,以檢查是否有可供下載的新版本。
update.electronjs.org 服務提供與更新程式相容的摘要。例如,Electron Fiddle v0.28.0 會檢查 https://update.electronjs.org/electron/fiddle/darwin/v0.28.0 端點,以查看是否有較新的 GitHub 發行版本可用。
在您的發行版本發布到 GitHub 後,update.electronjs.org 服務應該適用於您的應用程式。剩下的唯一步驟是使用 autoUpdater 模組設定摘要。
為了簡化此流程,Electron 團隊維護 update-electron-app
模組,該模組會在一個函式呼叫中為 update.electronjs.org 設定 autoUpdater 樣板,而無需任何設定。此模組會搜尋符合您專案 package.json "repository"
欄位的 update.electronjs.org 摘要。
首先,將模組安裝為執行階段相依性。
- npm
- Yarn
npm install update-electron-app
yarn add update-electron-app
然後,匯入模組並立即在主處理程序中呼叫它。
require('update-electron-app')()
這就是全部了!封裝您的應用程式後,它會針對您發布的每個新的 GitHub 發行版本自行更新。
總結
在本教學中,我們設定了 Electron Forge 的 GitHub 發布者,將您應用程式的可散布檔案上傳至 GitHub 發行版本。由於可散布檔案並非總是在平台之間產生,因此如果您無法存取機器,我們建議在持續整合管道中設定您的組建和發布流程。
Electron 應用程式可以透過將 autoUpdater 模組指向更新伺服器摘要來自行更新。update.electronjs.org 是由 Electron 提供的免費更新伺服器,適用於在 GitHub 發行版本上發布的開源應用程式。設定您的 Electron 應用程式以使用此服務,就如同安裝和匯入 update-electron-app
模組一樣簡單。
如果您的應用程式不符合 update.electronjs.org 的資格,您應該改為部署您自己的更新伺服器並自行設定 autoUpdater 模組。
恭喜!您已正式完成我們的 Electron 教學。歡迎探索我們的其他文件,祝您開發愉快!如果您有任何問題,請隨時加入我們的社群 Discord 伺服器。