Автоматическая установка расширения Google Chrome не будет работать! - PullRequest
5 голосов
/ 04 мая 2011

Я работаю на работе, связанной с этой страницей

Я написал скрипт NSIS, который пытается автоматически установить расширения chrome. (Почему? Потому что наше расширение может предлагаться с другим потоком установки продукта через флажок, тогда, если пользователь выберет наше расширение, которое будет добавлено, оно будет автоматически установлено в браузере chrome пользователя с использованием установки без вывода сообщений NSIS)

Я перепробовал много сценариев, и мне нужна помощь, на сайте Google говорят, что вы можете сделать это

  • Использование файла настроек JSON
  • Использование реестра Windows

Они также говорят, что «Использование файла настроек» содержит ошибку (примечание Windows: пока ошибка 41902 не будет исправлена, вы можете захотеть использовать реестр Windows вместо файла настроек).

Напоминание: Расширение, которое устанавливается автоматически, называется внешним расширением

  • Поэтому я попробовал «Использование реестра Windows»

Чтобы добавить расширения Google Chrome через реестр:

  • добавить этот ключ: "HKEY_LOCAL_MACHINE \ SOFTWARE \ Google \ Chrome \ Extensions (мой идентификатор расширения)" *
  • добавить "путь" с путем к .crx
  • добавить "версию" с версией расширения

Вот что я попробовал (используя скрипт NSIS):

  • Если я добавлю раздел реестра Он установит расширение, НО, если пользователь удалит его вручную, Chrome включит флаг черного списка, и расширение не может быть переустановлено с помощью любого другого сценария. Остается только один путь - пользователь устанавливает вручную. Хуже того, если пользователь установит вручную и удалит вручную (это отключит флаг черного списка), и когда chrome будет перезапущен, он автоматически переустановит расширения (без каких-либо действий пользователя), поскольку ключ реестра все еще там.

  • Если я удаляю ключ реестра, когда мы запускаем или закрываем браузер, причудливым способом (используя dll (NPAPI) внутри crx), chrome автоматически удалит каталог расширений при перезапуске браузера.

  • Если мне удастся удалить раздел реестра, когда пользователь удалит расширение. Мы попали в черный список, поэтому автоинсталлятор больше не будет работать, пока пользователь не отключит флаг черного списка, установив и удалив расширение вручную.

  • Если я создаю каталог в "C: \ Users \ (имя пользователя) \ AppData \ Local \ Google \ Chrome \ Данные пользователя \ Default \ Extensions \ (extensionID) \ (версия) _0 \ (мои файлы здесь) ", у меня много проблем, потому что chrome удалит мои файлы, как только перезапустит браузер.

Кто-нибудь сталкивался с этой проблемой и что нужно сделать. Я попытаюсь с файлом JSON, но пока ошибка не будет устранена, реестр будет единственным способом.

Спасибо всем, кто успел все это прочитать! Любая помощь будет оценена, спасибо!

Ответы [ 3 ]

2 голосов
/ 11 ноября 2013

[ 2013-11-11 ]
[Ответы на этот вопрос скоро устаревают, поэтому вот более актуальный ответ.]


Согласно недавнему сообщению в блоге Chromium, автоматическая установка расширения Chrome не будет доступна в ближайшем будущем:

Начиная с января [2014 года] на стабильных и бета-каналах Windows нам потребуется для всех расширений в Chrome Web Store.

В качестве альтернативы разработчики и поставщики смогут использовать встроенную установку :

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


Итак, в основном вам нужно сделать следующее:

  1. Разместите ваше расширение в Интернет-магазине Chrome (возможно, оставив его скрытым от списков).
  2. Пусть ваш установщик откроет окно браузера Chrome, указывающее на веб-страницу вашего сайта.
  3. На этой странице есть вся необходимая информация и данные, чтобы пользователь мог начать процесс установки расширения.(Ключевой концепцией здесь является то, что пользователь должен инициировать процесс установки, например, нажав кнопку.

Как встроенная установка работа:

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

<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/itemID">

Чтобы фактически начать встроенную установку, должна быть вызвана функция chrome.webstore.install (url, successCallback, failCallback). ЭтоФункция может быть вызвана только в ответ на пользовательский жест , например, в обработчике события щелчка; в противном случае будет выдано исключение.

(выделено мной)

Дополнительная информация о встроенной установке .

0 голосов
/ 31 января 2013

"Разработчики приложений Windows должны попросить пользователей установить расширения Chrome изнутри Chrome. Отличный способ разрешить пользователям устанавливать расширение Chrome, связанное с вашим приложением Windows, - это связать пользователей с вашим веб-сайтом и использовать inline.установка . "

также см. полный пост в блоге

0 голосов
/ 12 мая 2011

Есть более простой способ ... Когда флажок установлен, запустите этот код из background page:

chrome.tabs.create({ url:"FILEPATH.crx" } );

Предполагаемое расширение, которое вы хотите установить (файл .crx), может быть размещено в сети или находиться в папке вашего исходного расширения ... Вам понадобится разрешение tabs в вашем manifest

...