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
- Documentação Oficial Endereço: Documentação
- Endereço da API do UpgradeLink: Documentação
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
provider: generic
updaterCacheDirName: electron-demo-updater # Diretório de download4. 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.
// 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
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.