Skip to content

Referência de Integração de Projeto Electron Usando Componente Oficial electron-updater

1. Introdução ao Componente Oficial electron-updater

O componente oficial electron-updater fornecido pelo Electron suporta atualizações automáticas de aplicativos por meio de servidores de atualização ou arquivos estáticos, com recursos core incluindo:

  • Verificação de versão compatível com o protocolo de atualização do Electron
  • Processo de download e instalação de pacote de instalação multiplataforma
  • Configuração flexível de estratégia de atualização

Recursos Core

Lógica Geral: Ao chamar a API de estratégia de atualização fornecida pelo UpgradeLink, o componente electron-updater executa o processo de atualização específico, alcançando integração perfeita com o sistema de atualização oficial.

Diagrama de Fluxo de Integração

2. Passos Core de Integração

Endereço do projeto de referência electron-demo

1. Instalar Componente de Atualização Oficial

2. Ler Documentação Oficial do Servidor de Atualização Dinâmica, Entender Processo de Integração. Endereço da Documentação

O UpgradeLink fornece API de atualização que cumpre totalmente os parâmetros de solicitação e estrutura de resposta necessários pela especificação oficial, permitindo substituição perfeita.

3. Adicionar Arquivo dev-update.yml para Configurar Endereço de Download do Pacote de Atualização

yaml
provider: generic
updaterCacheDirName: electron-demo-updater # Diretório de download

4. Substituição de Código, Ajustar Método de Verificação de Atualização

Com base no código oficial de verificação de atualização, só precisamos substituir o endereço da interface no método oficial checkForUpdates pelo endereço fornecido pelo UpgradeLink.

javascript
// Imprimir parâmetros relacionados
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();
// Imprimir resultado de retorno
console.log("result: ", result);

if (!result || !result.updateInfo) {
    // Falha na chamada da interface
    return {
        error: "Informações de atualização não podem ser obtidas",
        currentVersion: app.getVersion()
    };
} else if (result.updateInfo.version === app.getVersion()) {
    // Se o número da versão retornada for consistente com o atual, indica que a versão atual é a mais recente
    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. Substituição de Código, Ajustar Método de Download e Atualização, Ajustar Endereço de Download para o Endereço Retornado pela Interface de Verificação de Atualização

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();

// Imprimir resultado de retorno da interface de verificação de atualização
console.log(result);

autoUpdater.setFeedURL({
    url: result.updateInfo.path,
    provider: 'generic',
});
console.log('[Process] Download de atualização iniciado, URL:', result.updateInfo.path);
try {
    await autoUpdater.downloadUpdate();
    console.log('[Process] Download de atualização concluído');
} catch (e) {
    console.error('[Process] Falha no download da atualização:', e);
    console.error('[DEBUG] Pilha de erro:', e.stack);
    throw e;
}

Os parâmetros de solicitação do protocolo de atualização (como platform, arch) e a estrutura de resposta são totalmente compatíveis com a especificação oficial pelo UpgradeLink, permitindo substituição direta.

O acima é o guia de integração. Se você precisar ajustar detalhes do conteúdo ou complementar descrições de cenários específicos, informe os requisitos específicos.

toolsetlink@163.com