实现自动更新
使用 `electron-updater` 将自动更新功能集成到 Electron 应用中,无缝向用户交付新版本
实现自动更新 是 CoddyKit 上的免费 Electron Desktop App Development 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Electron Desktop App Development 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Electron Desktop App Development 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
Why Auto-Updates?
Keeping your desktop application up-to-date is crucial for user experience and security. Auto-updates ensure users always have the latest features and bug fixes.
- Improved Security: Patches vulnerabilities quickly.
- New Features: Delivers enhancements without manual effort.
- Bug Fixes: Resolves issues seamlessly.
- Better User Experience: Users enjoy a consistently fresh and stable app.
Introducing `electron-updater`
electron-updater is a powerful module that simplifies adding auto-update functionality to your Electron app. It handles the complex logic of checking for new versions, downloading them, and installing them.
It works by looking for new releases on a configured update server (like GitHub Releases, Amazon S3, or a custom server) and managing the update process.
Installation & Setup
First, you need to install electron-updater as a dependency in your Electron project. It's best to add it as a regular dependency, not a dev dependency, as it's part of your deployed application.
Open your terminal in your project's root directory and run:
npm install electron-updaterInitial Setup in `main.js`
To use electron-updater, you'll primarily work in your app's main process (usually main.js). You'll import autoUpdater and call its checkForUpdates() method when your app is ready.
Note: This code is part of an Electron app's main process and requires a full Electron environment to run. It won't execute in a standard JavaScript playground.
const { app, BrowserWindow } = require('electron');
const { autoUpdater } = require('electron-updater');
// ... other app setup ...
app.on('ready', () => {
// createWindow(); // Your window creation function
autoUpdater.checkForUpdates();
console.log('Checking for updates...');
});
// ... other app lifecycle events ...Understanding Update Events
electron-updater uses an event-driven model. This means you 'listen' for specific events that occur during the update process and react to them. This allows you to provide feedback to your users.
checking-for-update: Update check started.update-available: New version found.update-not-available: No new version.download-progress: Update download progress.update-downloaded: Update ready to install.error: Something went wrong.
Handling `checking-for-update`
The checking-for-update event is fired as soon as checkForUpdates() is called. It's a good place to show a loading indicator or a message to the user.
Remember: This code needs to be in your Electron main.js file.
const { autoUpdater } = require('electron-updater');
autoUpdater.on('checking-for-update', () => {
console.log('App is now checking for updates...');
// You might send a message to the renderer process
// to update the UI here.
});Handling `update-available`
When electron-updater finds a new version, it emits the update-available event. At this point, the update download usually begins automatically. You can use this event to notify the user that an update is being downloaded.
const { autoUpdater } = require('electron-updater');
autoUpdater.on('update-available', (info) => {
console.log(`Update available! Version: ${info.version}`);
// Display a message to the user that an update is downloading.
});Handling `update-downloaded` & Install
Once the update has been fully downloaded, the update-downloaded event is emitted. This is the critical moment! You should notify the user and ask them to restart the application to apply the update.
The autoUpdater.quitAndInstall() method will close all windows and install the update, then relaunch the app.
const { autoUpdater } = require('electron-updater');
autoUpdater.on('update-downloaded', (info) => {
console.log('Update downloaded. Restarting app to install...');
// In a real app, you'd prompt the user here:
// dialog.showMessageBox({ /* ... */ }).then(() => autoUpdater.quitAndInstall());
autoUpdater.quitAndInstall();
});Handling Errors & No Updates
It's important to handle cases where there are no updates or if an error occurs during the process. The update-not-available event lets you know when your app is already the latest version.
The error event is crucial for debugging and informing users if something went wrong during the update check or download.
const { autoUpdater } = require('electron-updater');
autoUpdater.on('update-not-available', (info) => {
console.log('No new updates available.');
});
autoUpdater.on('error', (err) => {
console.error('Error during auto-update:', err);
// You might display an error message to the user.
});Update Flow Check
You've learned about the main events in the electron-updater lifecycle. Which of the following statements about auto-updates are generally true?
Recap: Keep Your App Fresh!
In this lesson, you've learned how to implement auto-update functionality in your Electron applications using the electron-updater module.
- We covered its installation and basic setup in the main process.
- You explored key events like
checking-for-update,update-available,update-downloaded, anderror. - Understanding these events allows you to build a robust and user-friendly update experience, ensuring your users always have the best version of your app.
常见问题解答
「实现自动更新」课时是免费的吗?
是的 — 「实现自动更新」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Electron Desktop App Development 课程的其余内容,请升级到 CoddyKit PRO。 Electron Desktop App Development 课程共包含 4 节课。
「实现自动更新」这节课中我会学到什么?
使用 `electron-updater` 将自动更新功能集成到 Electron 应用中,无缝向用户交付新版本 你通过在浏览器中直接运行的动手代码来练习 Electron Desktop App Development,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Electron Desktop App Development 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Electron Desktop App Development 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「实现自动更新」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Electron Desktop App Development 课中编写并运行代码吗?
能。每节 Electron Desktop App Development 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 管理应用生命周期事件
- 实现自动更新
- 崩溃报告
- 深层链接与协议处理器