Electron 發(fā)布和更新

2023-02-16 17:14 更新

學(xué)習(xí)目標(biāo)?

請注意,這是本教程的最后一步! 在這一部分,你將發(fā)布應(yīng)用到 GitHub 版本中心,并將自動(dòng)更新功能整合到應(yīng)用代碼中。

使用 update.electronjs.org?

Electron 官方在 https://update.electronjs.org 上為開源應(yīng)用程序提供了免費(fèi)的自動(dòng)更新服務(wù)。 使用它有以下幾點(diǎn)要求:

  • 你的應(yīng)用在 macOS 或 Windows 上運(yùn)行
  • 你的應(yīng)用有一個(gè)公開的 GitHub 倉庫
  • 應(yīng)用程序需要發(fā)布到 GitHub releases 中
  • 應(yīng)用程序需要完成 代碼簽名

至此,我們假設(shè)你已將所有代碼推送到公開的 GitHub 倉庫。

替代更新服務(wù)

如果您使用了其他存儲庫主機(jī) (例如 GitLab 或 Bitbucket),或者如果您你的代碼倉庫不能公開,請參閱 更新應(yīng)用程序 教程以托管您自己的 Electron 更新服務(wù)器。

發(fā)布一個(gè) GitHub 版本?

Electron Forge 的 Publisher 插件可以自動(dòng)將打包的應(yīng)用程序分發(fā)到各種來源。 在本教程中,我們將演示使用 GitHub Publisher 將代碼發(fā)布到 GitHub releases 中。

生成個(gè)人訪問令牌

未經(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)限。 請確保此令牌不外泄。

設(shè)置 GitHub 發(fā)布者?

安裝模塊

Forge 的 GitHub Publisher 是一個(gè)插件, 它需要被安裝到你的項(xiàng)目的 devDependencies 里面去:

 npm Yarn 
npm install --save-dev @electron-forge/publisher-github
yarn add --dev @electron-forge/publisher-github

在 Forge 中配置發(fā)布者

一旦安裝完畢,你需要在 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)用.

設(shè)置身份驗(yàn)證 token

你還需要讓發(fā)布器了解你的身份驗(yàn)證令牌。 默認(rèn)情況下,它將使用存儲在 GITHUB_TOKEN 環(huán)境變量的值。

運(yùn)行發(fā)布命令?

將 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 
npm run publish
yarn run publish

默認(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)簽.

小技巧:在 GitHub Actions 中發(fā)布

本地發(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 
npm install update-electron-app
yarn add update-electron-app

然后導(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ù)器。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號