autoUpdater
Habilita aplicações a se atualizarem automaticamente.
Processo: Main
See also: A detailed guide about how to implement updates in your application.
autoUpdater
é um EventEmitter.
Avisos de plataforma
Atualmente, apenas o macOS e o Windows são suportados. Não há suporte nativo para o atualizador automático no Linux - portanto, recomendamos usar o gerenciador de pacotes da distribuição para atualizar seu app.
Além disso, existem algumas diferenças sutis em cada plataforma:
macOS
No macOS, o módulo autoUpdater
é construído em cima do Squirrel.Mac, ou seja, você não precisa de nenhuma configuração especial para que funcione. Para os requisitos do lado do servidor, você pode ler o Suporte do servidor. Note that App Transport Security (ATS) applies to all requests made as part of the update process. Aplicações que precisam desativar o ATS podem adicionar a chave NSAllowsArbitraryLoads
no plist de sua aplicação.
Nota: Seu aplicativo precisa estar assinado para que seja automaticamente atualizado no macOS. Isto é um requisito do Squirrel.Mac
.
Windows
On Windows, you have to install your app into a user's machine before you can use the autoUpdater
, so it is recommended that you use the electron-winstaller, Electron Forge or the grunt-electron-installer package to generate a Windows installer.
When using electron-winstaller or Electron Forge make sure you do not try to update your app the first time it runs (Also see this issue for more info). Também é recomendado utilizar o electron-squirrel-startup para obter atalhos da área de trabalho para sua aplicação.
O instalador gerado com o Squirrel criará um ícone de atalho com um ID de Modelo da Aplicação do Usuário no formato com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE
, são exemplos com.squirrel.slack.Slack
e com.squirrel.code.Code
. Você deve usar o mesmo ID para sua aplicação com a API app.setAppUserModelId
, caso contrário, o Windows não será capaz de fixar sua aplicação corretamente na barra de tarefas.
Like Squirrel.Mac, Windows can host updates on S3 or any other static file host. Você pode ler a documentação do Squirrel.Windows para obter mais detalhes sobre como funciona o Squirrel.Windows.
Eventos
O objeto autoUpdater
emite os seguintes eventos:
Evento: 'error'
Retorna:
- Erro
error
Emitido quando há um erro durante a atualização.
Evento: 'checking-for-update'
Emitido ao verificar se uma atualização começou.
Evento: 'update-available'
Emitido quando houver uma atualização disponível. A atualização é baixada automaticamente.
Evento: 'update-not-available'
Emitido quando não há atualização disponível.
Evento: 'update-downloaded'
Retorna:
event
Event- string
releaseNotes
- string
releaseName
- Data
releaseDate
- string
updateURL
Emitido quando uma atualização foi baixada.
No Windows apenas o releaseName
está disponível.
Nota: Não é estritamente necessário tratar este evento. Uma atualização baixada com sucesso ainda será aplicada na próxima vez que o aplicativo iniciar.
Evento: 'before-quit-for-update'
Este evento é emitido depois de um usuário chamar quitAndInstall()
.
Quando esta API é chamada, o evento before-quit
não é emitido antes de todas as janelas serem fechadas. Como resultado, você deve ouvir este evento se você deseja executar ações antes das janelas serem fechadas enquanto um processo é encerrado, Além de ouvir before-quit
.
Métodos
O objeto autoUpdater
possui os seguintes métodos:
autoUpdater.setFeedURL(options)
Define a url
e inicializa a atualização automática.
autoUpdater.getFeedURL()
Returns string
- The current update feed URL.
autoUpdater.checkForUpdates()
Pergunta para o servidor se há alguma atualização. Você precisa chamar o setFeedURL
antes de usar esta API.
Note: If an update is available it will be downloaded automatically. Calling autoUpdater.checkForUpdates()
twice will download the update two times.
autoUpdater.quitAndInstall()
Reinicia o aplicativo e instala a atualização após ela ter sido baixada. Deve ser chamado apenas após o evento update-downloaded
ter sido emitido.
Sob o capô chamando autoUpdater.quitAndInstall()
fechará todos os aplicativos janelas primeiro, e automaticamente chamar app.quit()
depois de todas as janelas foram Fechado.
Nota: Não é estritamente necessário para lidar com este evento. Uma atualização baixada com sucesso ainda será aplicada na próxima vez que o aplicativo for iniciado.