Справочник по интеграции проекта Electron с использованием официального компонента electron-updater
1. Введение в официальный компонент electron-updater
Официальный компонент electron-updater, предоставляемый Electron, поддерживает автоматические обновления приложений через серверы обновления или статические файлы, с основными функциями, включая:
- Проверка версии, совместимая с протоколом обновления Electron
- Кроссплатформенный процесс загрузки и установки установочных пакетов
- Гибкая конфигурация стратегии обновления
Основные ресурсы
- Официальная документация Адрес: Документация
- Адрес API UpgradeLink: Документация
Общая логика: Вызывая API стратегии обновления, предоставляемое UpgradeLink, компонент electron-updater выполняет конкретный процесс обновления, достигая бесшовной интеграции с официальной системой обновления.
Диаграмма интеграции
2. Основные шаги интеграции
Адрес проекта-примера electron-demo
1. Установка официального компонента обновления
2. Прочитайте официальную документацию динамического сервера обновления, изучите процесс интеграции. Адрес документации
UpgradeLink предоставляет API обновления, полностью соответствующее параметрам запроса и структуре ответа, требуемым официальной спецификацией, что позволяет бесшовную замену.
3. Добавьте файл dev-update.yml для настройки адреса загрузки пакета обновления
provider: generic
updaterCacheDirName: electron-demo-updater # Download directory4. Замена кода, регулировка метода проверки обновления
На основе официального кода проверки обновления нам只需 заменить адрес интерфейса в официальном методе checkForUpdates на адрес, предоставленный UpgradeLink.
// Print related parameters
console.log(app.getVersion());
console.log(process.platform);
console.log(process.arch);
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
url: FeedURL,
provider: 'generic',
});
autoUpdater.requestHeaders = {
'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();
// Print return result
console.log("result: ", result);
if (!result || !result.updateInfo) {
// Interface call failed
return {
error: "Update information cannot be obtained",
currentVersion: app.getVersion()
};
} else if (result.updateInfo.version === app.getVersion()) {
// If the returned version number is consistent with the current one, it indicates that the current version is the latest
return {
updateAvailable: false,
currentVersion: app.getVersion()
};
} else if (result.updateInfo.version) {
return {
updateAvailable: true,
currentVersion: app.getVersion(),
newVersion: result.updateInfo.version
};
}
return {
updateAvailable: false,
currentVersion: app.getVersion()
};5. Замена кода, регулировка метода загрузки и обновления, регулировка адреса загрузки на адрес, возвращаемый интерфейсом проверки обновления
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
url: FeedURL,
provider: 'generic',
});
autoUpdater.requestHeaders = {
'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();
// Print check update interface return result
console.log(result);
autoUpdater.setFeedURL({
url: result.updateInfo.path,
provider: 'generic',
});
console.log('[Process] Download update started, URL:', result.updateInfo.path);
try {
await autoUpdater.downloadUpdate();
console.log('[Process] Download update completed');
} catch (e) {
console.error('[Process] Download update failed:', e);
console.error('[DEBUG] Error stack:', e.stack);
throw e;
}Параметры запроса протокола обновления (например, platform, arch) и структура ответа полностью совместимы с официальной спецификацией в UpgradeLink, что позволяет прямой замене.
В вышеуказанном руководстве по интеграции. Если вам нужно скорректировать детали содержимого или дополнить описания конкретных сценариев, пожалуйста, сообщите об определенных требованиях.