Автообновление
Автообновление — проверка новой версии при запуске, загрузка её в фоне и установка при следующем перезапуске. Без него пользователи годами сидят на старой версии с ошибками и уязвимостями. В Electron для этого нужны две части: место, где лежат новые версии, и код в программе, который их проверяет.
Как это устроено
- Вы увеличиваете
versionвpackage.jsonи собираете программу. - Сборка публикуется на сервер обновлений, например в GitHub Releases.
- Установленная программа спрашивает сервер, нет ли версии новее.
- Если есть, скачивает её и предлагает перезапуститься.
Встроенный модуль Electron autoUpdater работает в Windows (с установщиком Squirrel) и в macOS. В Linux обновления обычно доставляет менеджер пакетов системы.
Публикация на GitHub
Forge публикует сборки через издателей (publishers). Для GitHub:
npm install --save-dev @electron-forge/publisher-github// forge.config.js
module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: { owner: 'anna', name: 'notes' },
prerelease: false,
},
},
],
};Команда npm run publish соберёт установщики и загрузит их в новый релиз репозитория anna/notes. Для доступа к GitHub нужен токен в переменной окружения GITHUB_TOKEN.
Проверка обновлений
Для программ с открытым кодом на GitHub есть бесплатный сервис update.electronjs.org и модуль для него:
npm install update-electron-app// main.js
const { updateElectronApp } = require('update-electron-app');
updateElectronApp();Модуль читает адрес репозитория из поля repository в package.json, проверяет обновления при запуске и затем периодически. Когда новая версия скачана, он показывает диалог с предложением перезапустить программу.
Встроенный autoUpdater
Если сервер обновлений свой, используют модуль autoUpdater напрямую:
// main.js
const { autoUpdater } = require('electron');
autoUpdater.setFeedURL({ url: 'https://updates.example.com/notes' });
autoUpdater.on('update-downloaded', () => {
autoUpdater.quitAndInstall();
});
autoUpdater.checkForUpdates();update-downloaded срабатывает, когда новая версия скачана, а quitAndInstall перезапускает программу уже обновлённой. Обычно перед этим спрашивают пользователя через dialog.showMessageBox.
Другие варианты
Инструмент electron-builder — альтернатива Forge для сборки — имеет свой модуль обновлений electron-updater. Он поддерживает больше форматов, в том числе AppImage для Linux. Смешивать его с Forge не нужно: выбирают один инструмент.
Частая ошибка
Обновления не проверяются при запуске через npm start: модули обновления работают только в собранной и установленной программе, а в macOS — ещё и только в подписанной. Проверяйте автообновление на настоящих сборках: установите версию 1.0.0, опубликуйте 1.0.1 и запустите установленную программу.