Жизненный цикл обновления расширения Chrome

В этом руководстве подробно описан весь процесс обновления расширений, включая стандартный процесс обновления, ручное внесение изменений, API для разработчиков и существенное влияние корпоративных политик.

Стандартный цикл обновления

Chrome автоматически обновляет установленные расширения до последних версий, обеспечивая пользователям доступ к новым функциям и исправлениям безопасности. По умолчанию Chrome проверяет наличие обновлений расширений при запуске и каждые несколько часов.

Критически важным аспектом процесса обновления является то, что обновление устанавливается только тогда, когда расширение считается неактивным . Для того чтобы расширение считалось неактивным, его компоненты не должны активно использоваться. В контексте Manifest V3 это в первую очередь означает, что сервис-воркер расширения не запущен. Сервис-воркер разработан как событийно-ориентированный и завершает работу после периода бездействия . Кроме того, любые открытые страницы расширения, такие как боковая панель, всплывающее окно или страница параметров, не позволяют расширению считаться неактивным. Активный скрипт контента не влияет на то, считается ли расширение неактивным или нет.

Требование о простое может вызывать задержки в обновлении часто используемых расширений. Если сервис-воркер расширения постоянно запускается событиями, он может никогда не перейти в состояние простоя, и обновление будет отложено до перезапуска браузера.

Распространение обновлений расширений мониторинга

Чтобы узнать, сколько ваших пользователей используют последнюю версию вашего расширения, воспользуйтесь панелью аналитики Chrome WebStore. Перейдите в панель разработчика Chrome WebStore и выберите одно из опубликованных вами расширений. В боковой панели навигации перейдите в раздел: Аналитика -> Пользователи и прокрутите вниз до диаграммы «Ежедневное количество пользователей по элементам» . Здесь вы можете увидеть, сколько пользователей уже используют вашу последнюю версию.

Скриншот, показывающий количество ежедневных пользователей для каждой версии тестового расширения.

Обновляйте расширения вручную

Если пользователи хотят получать последние обновления немедленно, Chrome предоставляет механизм ручного обновления. Это также полезный инструмент при тестировании обновлений.

Отдельные пользователи могут принудительно обновить все установленные расширения, выполнив следующие действия:

  1. Перейдите по адресу chrome://extensions.
  2. Включите режим разработчика с помощью переключателя в правом верхнем углу.
  3. Нажмите появившуюся кнопку «Обновить» .

Это действие заставляет Chrome немедленно загрузить последние версии всех установленных расширений из Chrome Web Store.

Проверьте наличие обновлений от расширения.

API chrome.runtime предоставляет расширениям инструменты для взаимодействия с механизмом обновления.

Проверяйте наличие обновлений по запросу.

Функция chrome.runtime.requestUpdateCheck() позволяет расширению программно инициировать проверку обновлений. Это особенно полезно для расширений, которые критически зависят от серверной службы и должны убедиться, что они используют последнюю совместимую версию.

При вызове этой функции Chrome запрашивает у Chrome Web Store новую версию и загружает её, если она доступна. Функция обратного вызова получает статус, указывающий на результат проверки.

Следите за обновлениями

Событие chrome.runtime.onUpdateAvailable срабатывает, когда обновление загружено и готово к установке. В подробностях этого события указан номер новой версии. Прослушивая это событие, расширение может определить наличие обновления и при необходимости перейти в режим ожидания или перезагрузить страницу, используя chrome.runtime.reload().

Следующий код демонстрирует базовый шаблон реализации:

В исключительных случаях можно принудительно заставить браузер проверить наличие обновлений расширений, используя метод chrome.runtime.requestUpdateCheck() :

Важно отметить, что частые вызовы функции requestUpdateCheck() будут ограничиваться браузером. Используйте эту функцию только тогда, когда вы знаете, что доступно обновление. Например, когда обновленная версия бэкэнда требует более новой версии расширения.

Управление обновлениями с помощью корпоративной политики

В управляемых корпоративных средах стандартный процесс обновления расширений подчиняется политикам, установленным системными администраторами. Эти политики могут переопределять поведение по умолчанию для обеспечения безопасности и стабильности.

Принудительная установка

Политика ExtensionInstallForcelist позволяет администраторам устанавливать определенные расширения для своих пользователей в фоновом режиме. Пользователи не могут отключать или удалять расширения, установленные с помощью этой политики.

версия расширения для пина

Однако предприятиям часто необходимо контролировать точную версию используемого расширения, чтобы обеспечить совместимость с другим программным обеспечением. Для этого администраторы могут «закрепить» расширение за определенной версией . Это делается через консоль администратора Google, где администратор может выбрать необходимую версию для подразделения организации. Когда расширение закреплено, Chrome не будет обновлять его после указанной версии.

Переопределите источник обновления

Предприятия могут размещать собственные форки расширений в целях безопасности или персонализации. Для этого используйте политику ExtensionSettings со свойством override_update_url, установленным в значение true. Это заставит Chrome получать расширение и его обновления с указанного URL-адреса, а не из Chrome Web Store.

Установите минимальную версию Chrome.

В файле манифеста расширения можно указать параметр minimum_chrome_version . Это гарантирует, что расширение будет установлено только в тех версиях Chrome, которые поддерживают используемые им API.

Для новых установок Chrome Web Store не позволит пользователям старых версий Chrome установить расширение, отображая сообщение «Несовместимо». Для существующих пользователей, если обновление расширения увеличит параметр minimum_chrome_version до версии выше установленной у пользователя версии Chrome, они незаметно перестанут получать обновления для этого расширения. Разработчики должны знать об этом и информировать пользователей, если это может затронуть значительную часть их пользовательской базы.