ElectronJs — Configurando auto-update
Olá Gente!
No tutorial anterior aprendemos a compilar nossa aplicação criada em ElectronJs utilizando o Github Action e criar um release com a compilação.
Hoje iremos configurar para que nossa aplicação atualize automaticamente sempre que um novo release for criado.
Em minha aplicação utilizo o Electron Forge para facilitar as ações, recomendo muito a utilização:
Não precisamos instalar nada adicional, o próprio ElectronJs já possui os recursos para configurar o AutoUpdate.
Para identificar as novas versões iremos utilizar o https://update.electronjs.org/ que busca as versões com base nos release.
Dentro de nosso arquivo main.js carrega o “autoUpdater” e o “Notification” do repositório “electron”:
import { Notification, autoUpdater } from 'electron';
Agora iremos configurar uma função para facilitar as ações de AutoUpdate:
function setupUpdate()
{
const FeedUrl = 'https://update.electronjs.org/[UsuarioGit]/[RepositorioGit]/' + process.platform + '-' + process.arch + '/' + app.getVersion();
try {
autoUpdater.setFeedURL(FeedUrl)
autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName, releaseDate, updateURL) => {
const dialogOpts = {
type: 'info',
buttons: ['Reiniciar Agora', 'Reiniciar Depois'],
title: 'Atualização Automática',
message: process.platform === 'win32' ? releaseNotes : releaseName,
detail: 'Uma nova versão do Aplicativo foi Instalada. Reinicie o Aplicativo para iniciar a nova versão'
};
dialog.showMessageBox(dialogOpts).then(({ response }) => {
if(response === 0)
{
autoUpdater.quitAndInstall();
}
})
});
autoUpdater.checkForUpdates()
setInterval(() => {
autoUpdater.checkForUpdates()
}, ( 1 * 60 * 60 * 1000 ))
}catch (err){
//
}
}
Aqui precisamos antes configurar a variável FeedUrl, que é a Url de onde serão checadas as atualizações.
Neste link:
- [UsuarioGit]: Seu usuário do GitHub
- [RepositorioGit]: O nome do repositório no GitHub
Podemos também alterar o tempo de checagem, no “setInterval”.
Para este exemplo, esta configurado para 1 hora:
1 * 60 * 60 * 1000
Agora iremos colocar a chamada desta função dentro do evento “ready”:
app.on('ready', () => {
setupUpdate();
});
Por hoje é isto, queridos desenvolvedores! 👩💼
Até logo! 👋