Skip to content

Справочник по интеграции проекта Electron с использованием официального компонента electron-updater

1. Введение в официальный компонент electron-updater

Официальный компонент electron-updater, предоставляемый Electron, поддерживает автоматические обновления приложений через серверы обновления или статические файлы, с основными функциями, включая:

  • Проверка версии, совместимая с протоколом обновления Electron
  • Кроссплатформенный процесс загрузки и установки установочных пакетов
  • Гибкая конфигурация стратегии обновления

Основные ресурсы

Общая логика: Вызывая API стратегии обновления, предоставляемое UpgradeLink, компонент electron-updater выполняет конкретный процесс обновления, достигая бесшовной интеграции с официальной системой обновления.

Диаграмма интеграции

2. Основные шаги интеграции

Адрес проекта-примера electron-demo

1. Установка официального компонента обновления

2. Прочитайте официальную документацию динамического сервера обновления, изучите процесс интеграции. Адрес документации

UpgradeLink предоставляет API обновления, полностью соответствующее параметрам запроса и структуре ответа, требуемым официальной спецификацией, что позволяет бесшовную замену.

3. Добавьте файл dev-update.yml для настройки адреса загрузки пакета обновления

yaml
provider: generic
updaterCacheDirName: electron-demo-updater # Download directory

4. Замена кода, регулировка метода проверки обновления

На основе официального кода проверки обновления нам只需 заменить адрес интерфейса в официальном методе checkForUpdates на адрес, предоставленный UpgradeLink.

javascript
// 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. Замена кода, регулировка метода загрузки и обновления, регулировка адреса загрузки на адрес, возвращаемый интерфейсом проверки обновления

javascript
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, что позволяет прямой замене.

В вышеуказанном руководстве по интеграции. Если вам нужно скорректировать детали содержимого или дополнить описания конкретных сценариев, пожалуйста, сообщите об определенных требованиях.

toolsetlink@163.com