autoUpdater
Позвольте приложениям автоматически обновляться.
Процесс: Главный
См. также: Подробное руководство о том, как внедрять обновления в Ваше приложение.
autoUpdater
is an EventEmitter.
Платформа заметок
В настоящее время поддерживаются только macOS и Windows. На Linux нет встроенной поддержи автоматического обновление, поэтому рекомендуется использовать менеджер пакетов для обновления вашего приложения.
Кроме того есть некоторые тонкие различия на каждой платформе:
macOS
На macOS модуль autoUpdater
построен на Squirrel.Mac, что означает, что Вам не нужно делать каких-либо специальных настроек, чтобы заставить его работать. Для серверных условий, Вы можете прочитать Поддержку сервера. Note that App Transport Security (ATS) applies to all requests made as part of the update process. Приложению, у которого требуется отключить ATS, можно добавить ключ NSAllowsArbitraryLoads
в список свойств приложения (plist).
Примечание: Ваше приложение должно быть подписано для автоматических обновлений на macOS. Это требование 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 electron-winstaller or Electron Forge's Squirrel.Windows maker to generate a Windows installer.
Apps built with Squirrel.Windows will trigger custom launch events that must be handled by your Electron application to ensure proper setup and teardown.
Squirrel.Windows apps will launch with the --squirrel-firstrun
argument immediately after installation. During this time, Squirrel.Windows will obtain a file lock on your app, and autoUpdater
requests will fail until the lock is released. In practice, this means that you won't be able to check for updates on first launch for the first few seconds. You can work around this by not checking for updates when process.argv
contains the --squirrel-firstrun
flag or by setting a 10-second timeout on your update checks (see electron/electron#7155 for more information).
The installer generated with Squirrel.Windows will create a shortcut icon with an Application User Model ID in the format of com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE
, examples are com.squirrel.slack.Slack
and com.squirrel.code.Code
. Вы должны использовать тот же ID для Вашего приложения в app.setAppUserModelId
API, иначе Windows не сможет должным образом закрепить приложение в панели задач.
События
Объект autoUpdater
имеет следующие события:
Событие: 'error'
Возвращает:
error
Error
Возникает когда происходит ошибка при обновлении.
Событие: 'checking-for-update'
Возникает при проверке, если обновление началось.
Событие: 'update-available'
Происходит при наличии доступного обновления. Обновление загружается автоматически.
Событие: 'update-not-available'
Возникает, когда нет доступных обновлений.
Событие: 'update-downloaded'
Возвращает:
- Событие типа
event
releaseNotes
stringreleaseName
stringreleaseDate
DateupdateURL
string
Возникает при загрузке обновления.
На Windows доступен только releaseName
.
Примечание: Не обязательно обрабатывать это событие. Успешно загруженное обновление будет применено при следующем запуске приложения.
Событие: 'before-quit-for-update'
Это событие происходит после вызова quitAndInstall()
.
Когда это API вызывается, событие before-quit
не будет происходить, до тех пор, пока все окна не будут закрыты. В результате Вы должны прослушивать это событие, если хотите выполнить действия до закрытия окон, во время завершения процесса, а также прослушивать before-quit
.
Методы
Объект autoUpdater
имеет следующие методы:
autoUpdater.setFeedURL(options)
Задает url
и инициализирует автоматическое обновление.
autoUpdater.getFeedURL()
Возвращает string
- URL текущего канала обновления.
autoUpdater.checkForUpdates()
Спрашивает сервер, есть ли обновление. Вы должны вызвать setFeedURL
перед использованием API.
Note: If an update is available it will be downloaded automatically. Calling autoUpdater.checkForUpdates()
twice will download the update two times.
autoUpdater.quitAndInstall()
Перезапускает приложение и устанавливает обновление после его загрузки. Следует вызывать только после произошедшего update-downloaded
.
Внутри, вызов autoUpdater.quitAndInstall()
сначала закроет все окна приложения, и автоматически вызовет app.quit()
, после того, как все окна будут закрыты.
Примечание: Не обязательно вызывать эту функцию, чтобы применить обновление, успешно загруженное обновление будет применено в следующий раз, когда приложение запустится.