跳到主要內容

發佈與更新

學習目標🔗

如果您一直跟著教學,這是教學的最後一步!在這部分,您將把您的應用程式發佈到 GitHub 版本,並將自動更新整合到您的應用程式程式碼中。

使用 update.electronjs.org🔗

Electron 維護者在 https://update.electronjs.org 提供一個免費的自動更新服務給開源應用程式。其需求如下:

  • 您的應用程式在 macOS 或 Windows 上執行
  • 您的應用程式有一個公開的 GitHub 儲存庫
  • 建置發佈到 GitHub 版本
  • 建置已 程式碼簽署 (僅限 macOS)

在這一點上,我們假設您已經將所有程式碼推送到了公開的 GitHub 儲存庫。

替代的更新服務

如果您使用替代的儲存庫主機(例如 GitLab 或 Bitbucket),或者如果您需要保持您的程式碼儲存庫私有,請參考我們的 逐步指南,了解如何託管您自己的 Electron 更新伺服器。

發佈 GitHub 版本🔗

Electron Forge 具有 Publisher 外掛程式,可以自動化將您封裝的應用程式發佈到各種來源。在本教學中,我們將使用 GitHub Publisher,這將允許我們將程式碼發佈到 GitHub 版本。

產生個人存取權杖🔗

沒有權限,Forge 無法發佈到 GitHub 上的任何儲存庫。您需要傳入一個經過身份驗證的權杖,讓 Forge 可以存取您的 GitHub 版本。最簡單的方法是 建立一個新的個人存取權杖 (PAT),並具有 public_repo 範圍,這會給予寫入您公開儲存庫的權限。請務必將此權杖保密。

設定 GitHub Publisher🔗

安裝模組🔗

Forge 的 GitHub Publisher 是一個外掛程式,需要安裝在您專案的 devDependencies

npm install --save-dev @electron-forge/publisher-github

在 Forge 中設定發佈者🔗

一旦您安裝了它,您需要在您的 Forge 設定中設定它。完整的選項列表記錄在 Forge 的 PublisherGitHubConfig API 文件中。

forge.config.js
module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'github-user-name',
name: 'github-repo-name'
},
prerelease: false,
draft: true
}
}
]
}
在發佈前先草擬版本

請注意,您已將 Forge 設定為將您的版本發佈為草稿。這將允許您查看包含其產生工件的版本,而無需實際發佈給您的終端使用者。您可以在撰寫發行說明並仔細檢查您的可發行檔案是否正常運作後,透過 GitHub 手動發佈您的版本。

設定您的驗證權杖🔗

您還需要讓 Publisher 知道您的驗證權杖。預設情況下,它將使用儲存在 GITHUB_TOKEN 環境變數中的值。

執行發佈命令🔗

將 Forge 的 publish 命令 新增到您的 npm 指令碼中。

package.json
  //...
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish"
},
//...

此命令將執行您設定的 makers 並將輸出可發行檔案發佈到新的 GitHub 版本。

npm 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 install update-electron-app

然後,匯入模組並在主程序中立即呼叫它。

main.js
require('update-electron-app')()

這就是全部需要的步驟!一旦您的應用程式被封裝,它將為您發佈的每個新的 GitHub 版本自行更新。

摘要🔗

在本教學中,我們設定了 Electron Forge 的 GitHub Publisher,將您的應用程式可發行檔案上傳到 GitHub 版本。由於可發行檔案不一定能在平台之間產生,如果您無法存取機器,我們建議在持續整合管道中設定您的建置和發佈流程。

Electron 應用程式可以透過將 autoUpdater 模組指向更新伺服器摘要來自行更新。update.electronjs.org 是 Electron 為發佈在 GitHub 版本上的開源應用程式提供的免費更新伺服器。設定您的 Electron 應用程式以使用此服務就像安裝和匯入 update-electron-app 模組一樣簡單。

如果您的應用程式不符合 update.electronjs.org 的資格,您應該改為部署您自己的更新伺服器並自行設定 autoUpdater 模組。

🌟 您完成了!

從這裡開始,您已正式完成我們的 Electron 教學。請隨意探索我們文件的其餘部分,並祝您開發愉快!如果您有任何問題,請到我們的社群 Discord 伺服器 拜訪。