在開發 Electron 應用的過程中,打包 和 自動更新 是兩個不可或缺的重要步驟。通過打包,你可以將應用程式發布給使用者,讓他們在不同的操作系統(如 Windows、macOS、Linux)上使用。而自動更新功能則確保當應用有新版本時,使用者可以自動獲得更新,無需手動下載和安裝,從而提升使用者體驗。
在本文中,我們將介紹如何使用 Electron Builder
來打包應用,以及如何使用 Electron Updater
來實現自動更新功能。
打包是將你的 Electron 應用編譯成可執行的文件,並進行發布的一個過程。打包後的應用可以直接在使用者的操作系統上運行,並且打包過程會自動幫助你處理與應用依賴相關的問題,確保應用能在不同的環境中正確運行。
Electron Builder 是一個非常流行且功能強大的打包工具,支援多平台的打包,並且可以輕鬆配置自動更新功能。
首先,你需要將 Electron Builder 安裝到你的專案中:
npm install --save-dev electron-builder
接著,修改 package.json 文件,添加打包配置。在 package.json 中增加以下配置:
{
"name": "your-app-name",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"start": "electron .",
"build": "electron-builder"
},
"build": {
"appId": "com.example.yourapp",
"productName": "Your App Name",
"files": [
"dist/**/*",
"main.js"
],
"directories": {
"buildResources": "assets"
},
"win": {
"target": "nsis"
},
"mac": {
"target": "dmg"
},
"linux": {
"target": "AppImage"
}
}
}
配置完成後,你可以運行以下命令來打包應用:
npm run build
這將生成針對系統的可執行文件,例如在 Windows 上會生成 .exe 文件,而在 macOS 上會生成 .dmg 文件。你可以將這些文件發布給使用者。
Electron Builder 支援跨平台打包。例如,你可以在 macOS 上打包 Windows 和 Linux 的應用,或者在 Windows 上打包 macOS 的應用。然而,這通常需要你安裝對應平台的工具(如 Wine 用於在 macOS 上打包 Windows 應用)。
你可以使用以下命令來打包所有平台的應用:
npm run build -- -mwl
這將同時打包 macOS、windows 和 Linux 平台的應用。
如果要設定免安裝檔(windows)的話,可以在
electron-builder.yml
檔案中設定
win:
target:
- portable
自動更新功能允許應用在偵測到新版本時自動下載並安裝,這樣使用者無需手動下載新版本,從而提升應用的使用體驗。
Electron Updater 是 Electron 官方推薦的自動更新模組,它與 Electron Builder 深度集成,可以輕鬆實現自動更新。
npm install electron-updater
在主程式中(通常是 main.js),導入並配置 autoUpdater:
const { app, BrowserWindow } = require('electron');
const { autoUpdater } = require('electron-updater');
const path = require('path');
let mainWindow;
app.on('ready', () => {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
});
mainWindow.loadFile('index.html');
// 啟動應用後檢查更新
autoUpdater.checkForUpdatesAndNotify();
});
// 當有可用更新時
autoUpdater.on('update-available', () => {
mainWindow.webContents.send('message', '有新的版本可以更新');
});
// 當更新已經下載完成
autoUpdater.on('update-downloaded', () => {
mainWindow.webContents.send('message', '更新已下載,應用將重新啟動以安裝更新');
autoUpdater.quitAndInstall();
});
Electron Updater 需要一個伺服器來提供應用的更新檔案。你可以選擇使用 GitHub 來存放更新檔案,也可以使用其他專用伺服器。
需要注意的是,需要在 package.json 中配置應用的 repository 信息,並確保應用版本號正確:
{
"repository": {
"type": "git",
"url": "https://github.com/yourusername/yourrepository"
}
}
如果選擇使用自建伺服器來發布更新,需確保伺服器上有正確的更新文件(包括 .yml 文件和應用包),並在 Electron 中配置更新伺服器的 URL:
autoUpdater.setFeedURL({
provider: 'generic',
url: 'https://your-update-server.com/updates/'
});
自動更新的基本流程如下:
在 macOS 和 Windows 平台上,發布的應用必須進行簽名才能啟用自動更新功能。你可以通過購買數字簽名證書來實現應用的簽名,這對於保證應用安全性和防止系統攔截應用非常重要。
每次發佈新版本時,務必要更新 package.json 中的 version 字段。Electron Updater 依賴於版本號來判斷是否有新版本,因此版本號的正確管理至關重要。
在真正發佈應用之前,請確保在開發和測試環境中對自動更新功能進行充分測試。
可以設置一個測試的更新伺服器,並模擬新版本的發佈過程來確保自動更新功能正常運行。
打包和自動更新是將 Electron 應用推向生產環境的關鍵步驟。透過 Electron Builder
,你可以輕鬆地為多個平台打包應用,並且使用 Electron Updater 可以確保應用在發佈新版本後自動更新,提升使用者體驗。
這些工具和流程讓應用從開發階段順利過渡到實際使用者手中,並且保持更新迭代,確保應用隨時保持最新的功能和修復。