Автоматическая установка расширений для Chromium и Edge

В админских делах слишком часто приходится воевать со всевозможными вариантами работы с электронными ключами для бухгалтерии. В силу того что для ЛК налоговой существует в плане работы только два варианта работы с электронными ключами - Yandex-браузер и Chromium-Gost написал себе скрипт автоустановки любых нужных расширений в Chromium-Gost, Chromium, Google Crome, Microsoft Edge.
Yandex-браузер по причине монструозности в этом плане не рассматриваю ;) - хотя принцип автоустановки одинаков для всех хромоногих браузеров....
Итак вводная - рабочих методов автоустановки я обнаружил ровно три:
- Автоматическая установка плагинов для x64-браузера при первом запуске. Потом их надо будет включить через интерфейс управления расширениями.
- Автоматическая установка плагинов для x86-браузера при первом запуске. Потом их надо будет включить через интерфейс управления расширениями.
Принудительная установка неотключаемых пользователем плагинов через политики. Независима от разрядности браузера. - временно не рассматриваем!
@ECHO OFF
:: Установка плагинов из списков в конце скрипта при первом запуске. Потом их надо будет включить.
:: Установка вида браузера
:: SET "BROWSER=EDGE"
SET "BROWSER=CHROME"

:: Установка разрядности браузера
::SET "BROWSER_ARCH=X86"
SET "BROWSER_ARCH=X64"

CALL :%BROWSER%_%BROWSER_ARCH%

FOR /F "usebackq tokens=1 delims=:" %%a IN (`FINDSTR /N /B /C:":BEGIN_%BROWSER%" "%~0"`) DO SET "SKIP_LINE=%%a"
CALL :WORK "%SKIP_LINE%" ":END_%BROWSER%" "%~0"
GOTO :EOF

:WORK
FOR /F "usebackq skip=%~1 tokens=1,2 eol=; delims=|" %%a IN (`TYPE "%~3"`) DO IF NOT "%%a"=="%~2" (CALL :INSTALL_PROCEDURE "%%a" "%%b") ELSE (GOTO :EOF)
GOTO :EOF

:INSTALL_PROCEDURE
(
REG add "%INSTALL_PATH%\%~1" /v update_url /t REG_SZ /d "%~2" /f
)
GOTO :EOF

:EDGE_X64
SET "INSTALL_PATH=HKLM\Software\Wow6432Node\Microsoft\Edge\Extensions"
GOTO :EOF

:EDGE_X86
SET "INSTALL_PATH=HKLM\Software\Microsoft\Edge\Extensions"
GOTO :EOF

:CHROME_X64
SET "INSTALL_PATH=HKLM\Software\Wow6432Node\Google\Chrome\Extensions"
GOTO :EOF

:CROME_X86
SET "INSTALL_PATH=HKLM\Software\Google\Chrome\Extensions"
GOTO :EOF

;Идентификатор расширения;Путь откуда выполняется установка - специфичен для каждого магазина;Наименование расширения
; Символ ";" в начале строки - признак коментария и такая строка игнорируется
:BEGIN_CHROME
; Общие расширения
dlnpfhfhmkiebpnlllpehlmklgdggbhn|https://clients2.google.com/service/update2|Don't Close Window With Last Tab
cjpalhdlnbpafiamejdnhcphjbkeiagm|https://clients2.google.com/service/update2|uBlock Origin
npgcnondjocldhldegnakemclmfkngch|https://clients2.google.com/service/update2|Обход блокировок Рунета
; "Ключевые" расширения
iifchhfnnmpdbibifmljnfjhpififfog|https://clients2.google.com/service/update2|CryptoPro Extension for CAdES Browser Plug-in
ohedcglhbbfdgaogjhcclacoccbagkjg|https://clients2.google.com/service/update2|Адаптер Рутокен Плагин
momffihklfhkoakghidmkdocdkbfmoac|https://clients2.google.com/service/update2|Контур.Расширение
pbefkdcndngodfeigfdgiodgnmbgcfha|https://clients2.google.com/service/update2|Расширение для плагина Госуслуг.
:END_CHROME

;Идентификатор расширения;Путь откуда выполняется установка - специфичен для каждого магазина;Наименование расширения
; Символ ";" в начале строки - признак коментария и такая строка игнорируется
:BEGIN_EDGE
; Общие расширения
feebepaidmpgnkpngmeldoooofaacbhi|https://edge.microsoft.com/extensionwebstorebase/v1/crx|Don't Close Window With Last Tab
odfafepnkmbhccpbejgmiehpchacaeak|https://edge.microsoft.com/extensionwebstorebase/v1/crx|uBlock Origin
ajgpnodjpffiagcfmifildjpoaeiobfh|https://edge.microsoft.com/extensionwebstorebase/v1/crx|Обход блокировок Рунета
; "Ключевые" расширения
iifchhfnnmpdbibifmljnfjhpififfog|https://clients2.google.com/service/update2|CryptoPro Extension for CAdES Browser Plug-in
ohedcglhbbfdgaogjhcclacoccbagkjg|https://clients2.google.com/service/update2|Адаптер Рутокен Плагин
nhbmmgegnhdhkcclaandbaipceebnckc|https://edge.microsoft.com/extensionwebstorebase/v1/crx|Контур.Расширение
pbefkdcndngodfeigfdgiodgnmbgcfha|https://clients2.google.com/service/update2|Расширение для плагина Госуслуг.
:END_EDGE

Комментарии

Ах да - строки вида "iifchhfnnmpdbibifmljnfjhpififfog" -это идентификатор расширения в магазине гугла. Смотрится в расширениях при включенном режиме разработчика...

---
упс..

Здравствуйте! Скажите пожалуйста - с каким раскширением сохранять срипт и куда положить расширения? Проблема в установке оных БЕЗ доступа к интернетам

Ну расширение скрипта или CMD или BAT... Но вот по поводу установки без интернета даже не задумывался - вроде как браузер предполагает работу онлайн так что и с оффлайн установкой расширений непонятно зачем возиться.
Именно из файла сохраненное расширение таким способом поставить не удастся.

---
упс..

Так - установка из файла расширения все-таки возможна ;)

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

Найду время для тестирования и модифицирую скрипт под три варианта: из репозитория гугла, из собственного WEB-сервера, из файловой системы по относительному от расположения инсталлятора абсолютному пути...

Хотя в принципе при установке через политики собственно установка происходит в момент запуска браузера и текущий контекст соответственный. Значит пути должны быть абсолютными: или WEB или локальный или UNC. Можно конечно в момент установки выполнять копирование из относительного пути по отношению к инсталлятору в абсолютный путь, но тут слишком много нюансов возникает - так что я пожалуй ограничусь вариантами абсолютного пути - ну нет у меня времени писать полностью корректный полноценный инсталлятор, а неполноценный или некорректный - нет желания ;)

Времени тут часа 3-4 надо чтобы проверить все нюансы... Пока столько времени уделить вопросу не могу, но обязательно сделаю...

---
упс..

Итак - в силу изменения концепции скрипта для каждого плагина указывается источник установки. Помимо официальных репозиториев источником установки может выступать собственный WEB-сервер или UNC-шара.
В собственном источнике надо расположить файл plugin.xml следующей структуры:
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns=']]>http://www.google.com/update2/response']]> protocol='2.0'>
<app appid='APPID_MY_EXTENTION'>
<updatecheck codebase='http://MY_WEB_SERVER/FILE_MY_EXTENTION.crx'
version='VERSION_MY_EXTENTION' />
</app>
</gupdate>
или
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns=']]>http://www.google.com/update2/response']]> protocol='2.0'>
  <app appid='APPID_MY_EXTENTION'>
    <updatecheck codebase='file:///UNC-PATH-TO-CRX-FILE_MY_EXTENTION' version='VERSION_MY_EXTENTION' />
  </app>
</gupdate>
И в качестве ссылки на источник установки надо указывать именно на него...

---
упс..

Страницы