Жизненный цикл обновления расширения 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.

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

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

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