Skip to main content

autoUpdater

Позвольте приложениям автоматически обновляться.

Процесс: Главный

См. также: Подробное руководство о том, как внедрять обновления в Ваше приложение.

autoUpdater это EventEmitter.

Платформа заметок#

В настоящее время поддерживаются только macOS и Windows. На Linux нет встроенной поддержи автоматического обновление, поэтому рекомендуется использовать менеджер пакетов для обновления вашего приложения.

Кроме того есть некоторые тонкие различия на каждой платформе:

macOS#

На macOS модуль autoUpdater построен на Squirrel.Mac, что означает, что Вам не нужно делать каких-либо специальных настроек, чтобы заставить его работать. Для серверных условий, Вы можете прочитать Поддержку сервера. Заметьте, что App Transport Security (ATS) применяется ко всем запросам, сделанным как часть процесса обновления. Приложению, у которого требуется отключить ATS, можно добавить ключ NSAllowsArbitraryLoads в список свойств приложения (plist).

Примечание: Ваше приложение должно быть подписано для автоматических обновлений на macOS. Это требование Squirrel.Mac.

Windows#

На Windows Вам придется установить приложение на компьютер пользователя, прежде чем Вы сможете использовать autoUpdater, поэтому рекомендуется использовать пакет electron-winstaller, electron-forge или grunt-electron-installer для создания установщика Windows.

При использовании electron-winstaller или electron-forge убедитесь, что Вы не пытаетесь обновить ваше приложение при первом запуске (также см. этот вопрос для получения дополнительной информации). Также рекомендуется использовать electron-squirrel-startup, для получения ярлыка Вашего приложения на рабочем столе.

Установщик, сгенерированный с помощью Squirrel, создаст ярлык с Application User Model ID в формате com.squirrel.PACKAGE_ID.YOUR_EXE_WITHOUT_DOT_EXE, com.squirrel.slack.Slack и com.squirrel.code.Code. Вы должны использовать тот же ID для Вашего приложения в app.setAppUserModelId API, иначе Windows не сможет должным образом закрепить приложение в панели задач.

Как и Squirrel.Mac, Windows может размещать обновления на S3 или любом другом статическом файловом хосте. Вы можете прочитать документацию о Squirrel.Windows, для получения более подробной информации о том, как работает Squirrel.Windows.

События#

Объект autoUpdater имеет следующие события:

Событие: 'error'#

Возвращает:

  • error Error

Возникает когда происходит ошибка при обновлении.

Событие: 'checking-for-update'#

Возникает при проверке, если обновление началось.

Событие: 'update-available'#

Происходит при наличии доступного обновления. Обновление загружается автоматически.

Событие: 'update-not-available'#

Возникает, когда нет доступных обновлений.

Событие: 'update-downloaded'#

Возвращает:

  • Событие типа event
  • releaseNotes String
  • releaseName String
  • releaseDate Date
  • updateURL String

Возникает при загрузке обновления.

На Windows доступен только releaseName.

Примечание: Не обязательно обрабатывать это событие. Успешно загруженное обновление будет применено при следующем запуске приложения.

Событие: 'before-quit-for-update'#

Это событие происходит после вызова quitAndInstall().

Когда это API вызывается, событие before-quit не будет происходить, до тех пор, пока все окна не будут закрыты. В результате Вы должны прослушивать это событие, если хотите выполнить действия до закрытия окон, во время завершения процесса, а также прослушивать before-quit.

Методы#

Объект autoUpdater имеет следующие методы:

autoUpdater.setFeedURL(options)#

  • options Object
    • url String
    • headers Record<String, String> (optional) macOS - HTTP request headers.
    • serverType String (опционально) macOS - может быть json, либо default, смотрите README Squirrel.Mac для подробной информации.

Задает 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(), после того, как все окна будут закрыты.

Note: It is not strictly necessary to call this function to apply an update, as a successfully downloaded update will always be applied the next time the application starts.