Как установить Firefox-аддон из командной строки в скриптах?

Я хочу улучшить свой автоматический сценарий, добавив некоторый аддон Firefox, однако я не могу найти способ,

Может кто-то помочь узнать, как это сделать?

Пример: (хотите установить плагин adblockPlus и установить новую веб-страницу по умолчанию)

wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
firefox -silent -install-global-extension addon-1865-latest.xpi -setDefaultBrowser www.google.es

Спасибо заранее.

23
задан 29 October 2011 в 14:25

11 ответов

Использование вашего метода

gksudo firefox -install-global-extension addon-1865-latest.xpi похоже на трюк для вас. Это установит расширение для всех пользователей вашей системы.

Чтобы установить расширение только для вашего пользователя, используйте путь расширения в качестве аргумента

firefox addon-1865-latest.xpi

Вам все равно нужно нажать Install, хотя!

Автоматизация установки

Firefox не нуждается в имени имени аддона, но идентификатор из аддона в качестве имени пакета. Это означает, что если вы планируете устанавливать аддон без вмешательства пользователя, вам нужно извлечь его в папку с именем строки идентификатора аддона, а не с именем аддона.

Строка идентификатора может быть найденный в первых строках файла манифеста установки addon install.rdf, и он выглядит так: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Все, что находится внутри {} (включая фигурные скобки), является идентификатором.

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

Глобальная установка аддона

Если вы хотите автоматически установить расширение для всех пользователей вашей системы, вам необходимо извлечь его , переименуйте папку, содержащую аддон, в строку идентификатора аддона и скопируйте ее в папку firefox глобальных расширений /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/, все, что вы там используете, будет вызываться автоматически при открытии пользователем firefox.

Установленная пользователем установка

Если вы хотите автоматически установить расширение только одному пользователю в вашей системе, вам необходимо извлечь его, переименовать папку, содержащую аддон, в строку идентификатора аддона и скопировать ее на firefox папка пользовательских расширений /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ (создайте ее, если она не существует), все, что вы там используете, будет вызываться automa tic, когда пользователь открывает firefox.

Как создать аддон для автоматической установки - Пример

Сделайте папку extensions в своем доме и загрузите в нее аддон

mkdir ~/extensions
cd ~/extensions
wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi

Извлеките его и удалите оригинал

unzip ~/extensions/addon-1865-latest.xpi
rm ~/extensions/addon-1865-latest.xpi

Прочитайте первую строку в файле install.rdf, чтобы получить идентификатор аддона (в этом случае это будет {d10d0bf8 -f5b5-c8b4-a8b2-2b9879e08c5d}). и создайте папку с этим именем

mkdir ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

Переместите все файлы в папку extensions во вновь созданный ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}, и вы готовы к установке, перемещая папку {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}, как описано , для локальной установки или для глобальной установки.

Как установить домашнюю страницу по умолчанию

Чтобы изменить домашнюю страницу без использования настроек внутри firefox, вам необходимо отредактировать ~/.mozilla/firefox/*.default/prefs.js (где *.default - папка внутри ~/.mozilla/firefox, созданная для вашего пользователя) и добавьте эту строку в конец

user_pref("browser.startup.homepage", "http://uptechtalk.com");

или используя эту команду

echo "user_pref("browser.startup.homepage", "http://uptechtalk.com");" >> ~/.mozilla/firefox/*.default/prefs.js

Вам нужно сделать это после закрытия firefox, или программа перезапишет настройку при выходе.

Если ваш пользователь еще не использовал firefox, и вы хотите установить домашнюю страницу для всех новых пользователей (установить на главной странице в глобальном масштабе) используйте эту команду

echo "user_pref("browser.startup.homepage", "http://uptechtalk.com");" >> /etc/xul-ext/ubufox.js

. Комментарии к вашему вопросу

-silent не существуют, вам будет предложено установить это расширение xpi в любом случае, и вам нужно нажмите кнопку, чтобы установить его;

-setDefaultBrowser не будет устанавливать вашу домашнюю страницу, это будет e firefox ваш браузер по умолчанию

24
ответ дан 31 July 2018 в 10:35

Для полноты я нашел еще один очень хорошо документированный сценарий на http://bernaerts.dyndns.org/linux/74-ubuntu/271-ubuntu-firefox-thunderbird-addon-commandline , который в основном делает именно то, что предложил Бруно Перейра в своем ответе.

0
ответ дан 2 August 2018 в 02:39

Для некоторых из вас этот скрипт оболочки может оказаться полезным. Он анализирует первое вхождение тега em:id в install.rdf (, описанное Bruno Pereira ):

#!/bin/sh
var=`grep -m 1 -e em:id install.rdf`   
var=${var#*\>}
var=${var%<*}

... дает вам идентификатор (включая {}). [/ д2]

1
ответ дан 2 August 2018 в 02:39

Использование вашего метода

gksudo firefox -install-global-extension addon-1865-latest.xpi похоже на трюк для вас. Это установит расширение для всех пользователей вашей системы.

Чтобы установить расширение только для вашего пользователя, используйте путь расширения в качестве аргумента

firefox addon-1865-latest.xpi

Вам все равно нужно нажать Install, хотя!

Автоматизация установки

Firefox не нуждается в имени имени аддона, но идентификатор из аддона в качестве имени пакета. Это означает, что если вы планируете устанавливать аддон без вмешательства пользователя, вам нужно извлечь его в папку с именем строки идентификатора аддона, а не с именем аддона.

Строка идентификатора может быть найденный в первых строках файла манифеста установки addon install.rdf, и он выглядит так: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Все, что находится внутри {} (включая фигурные скобки), является идентификатором.

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

Глобальная установка аддона

Если вы хотите автоматически установить расширение для всех пользователей вашей системы, вам необходимо извлечь его , переименуйте папку, содержащую аддон, в строку идентификатора аддона и скопируйте ее в папку firefox глобальных расширений /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/, все, что вы там используете, будет вызываться автоматически при открытии пользователем firefox.

Установленная пользователем установка

Если вы хотите автоматически установить расширение только одному пользователю в вашей системе, вам необходимо извлечь его, переименовать папку, содержащую аддон, в строку идентификатора аддона и скопировать ее на firefox папка пользовательских расширений /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ (создайте ее, если она не существует), все, что вы там используете, будет вызываться automa tic, когда пользователь открывает firefox.

Как создать аддон для автоматической установки - Пример

Сделайте папку extensions в своем доме и загрузите в нее аддон

mkdir ~/extensions
cd ~/extensions
wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi

Извлеките его и удалите оригинал

unzip ~/extensions/addon-1865-latest.xpi
rm ~/extensions/addon-1865-latest.xpi

Прочитайте первую строку в файле install.rdf, чтобы получить идентификатор аддона (в этом случае это будет {d10d0bf8 -f5b5-c8b4-a8b2-2b9879e08c5d}). и создайте папку с этим именем

mkdir ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

Переместите все файлы в папку extensions во вновь созданный ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}, и вы готовы к установке, перемещая папку {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}, как описано , для локальной установки или для глобальной установки.

Как установить домашнюю страницу по умолчанию

Чтобы изменить домашнюю страницу без использования настроек внутри firefox, вам необходимо отредактировать ~/.mozilla/firefox/*.default/prefs.js (где *.default - папка внутри ~/.mozilla/firefox, созданная для вашего пользователя) и добавьте эту строку в конец

user_pref("browser.startup.homepage", "http://uptechtalk.com");

или используя эту команду

echo "user_pref("browser.startup.homepage", "http://uptechtalk.com");" >> ~/.mozilla/firefox/*.default/prefs.js

Вам нужно сделать это после закрытия firefox, или программа перезапишет настройку при выходе.

Если ваш пользователь еще не использовал firefox, и вы хотите установить домашнюю страницу для всех новых пользователей (установить на главной странице в глобальном масштабе) используйте эту команду

echo "user_pref("browser.startup.homepage", "http://uptechtalk.com");" >> /etc/xul-ext/ubufox.js

. Комментарии к вашему вопросу

-silent не существуют, вам будет предложено установить это расширение xpi в любом случае, и вам нужно нажмите кнопку, чтобы установить его;

-setDefaultBrowser не будет устанавливать вашу домашнюю страницу, это будет e firefox ваш браузер по умолчанию

24
ответ дан 2 August 2018 в 02:39

Я создал простой скрипт, основанный на ответе Бруно .

Он устанавливает расширение для текущего пользователя без какого-либо взаимодействия. Вам нужно только число, которое Mozilla использует в своем URL s на addons.mozilla.org . Сохраните сценарий как файл .sh и используйте номер в качестве аргумента при его вызове.

Протестировано и работает над Linux Mint 17 с Firefox 40 , убедитесь, что ваша версия Firefox использует ту же структуру каталогов, что и несколько раз изменила ее.

#!/bin/bash
extensionnumber=$1

# find profile dir (first profile in the ini file)
profiledir=`sed -n -e 's/^.*Path=//p' ${HOME}/.mozilla/firefox/profiles.ini | 
            head -n 1`
extensiondir="${HOME}/.mozilla/firefox/${profiledir}/extensions/"

if [ -z "$profiledir" ]; then
    printf "Can't find profile directory."
    exit 1
fi

mkdir /tmp/extension
cd /tmp/extension || exit $?

upstream=""https://addons.mozilla.org/firefox/downloads/latest"

# get extension and unzip
wget -O extension.xpi \
  "${upstream}/${extensionnumber}/addon-${extensionnumber}-latest.xpi" || 
  exit $?
unzip extension.xpi && rm extension.xpi

# get extension id from installation file
extensionid=`grep -m 1 -e em:id install.rdf`   
extensionid=${extensionid#*\>}
extensionid=${extensionid%<*}

# move all files to the directory with the right id
mkdir $extensionid || exit $?
shopt -s extglob dotglob
mv !($extensionid) $extensionid/
shopt -u dotglob

# create new firefox extension dir (if it's a clean install) 
# and move the extension
mkdir -p "${extensiondir}"
mv "${extensionid}" "${extensiondir}"

rmdir /tmp/extension
printf "Installed extension."
exit 0
1
ответ дан 4 August 2018 в 18:26

Использование вашего метода

gksudo firefox -install-global-extension addon-1865-latest.xpi похоже на трюк для вас. Это установит расширение для всех пользователей вашей системы.

Чтобы установить расширение только для вашего пользователя, используйте путь расширения в качестве аргумента

firefox addon-1865-latest.xpi

Вам все равно нужно нажать Install, хотя!

Автоматизация установки

Firefox не нуждается в имени имени аддона, но идентификатор из аддона в качестве имени пакета. Это означает, что если вы планируете устанавливать аддон без вмешательства пользователя, вам нужно извлечь его в папку с именем строки идентификатора аддона, а не с именем аддона.

Строка идентификатора может быть найденный в первых строках файла манифеста установки addon install.rdf, и он выглядит так: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Все, что находится внутри {} (включая фигурные скобки), является идентификатором.

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

Глобальная установка аддона

Если вы хотите автоматически установить расширение для всех пользователей вашей системы, вам необходимо извлечь его , переименуйте папку, содержащую аддон, в строку идентификатора аддона и скопируйте ее в папку firefox глобальных расширений /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/, все, что вы там используете, будет вызываться автоматически при открытии пользователем firefox.

Установленная пользователем установка

Если вы хотите автоматически установить расширение только одному пользователю в вашей системе, вам необходимо извлечь его, переименовать папку, содержащую аддон, в строку идентификатора аддона и скопировать ее на firefox папка пользовательских расширений /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ (создайте ее, если она не существует), все, что вы там используете, будет вызываться automa tic, когда пользователь открывает firefox.

Как создать аддон для автоматической установки - Пример

Сделайте папку extensions в своем доме и загрузите в нее аддон

mkdir ~/extensions
cd ~/extensions
wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi

Извлеките его и удалите оригинал

unzip ~/extensions/addon-1865-latest.xpi
rm ~/extensions/addon-1865-latest.xpi

Прочитайте первую строку в файле install.rdf, чтобы получить идентификатор аддона (в этом случае это будет {d10d0bf8 -f5b5-c8b4-a8b2-2b9879e08c5d}). и создайте папку с этим именем

mkdir ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

Переместите все файлы в папку extensions во вновь созданный ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}, и вы готовы к установке, перемещая папку {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}, как описано , для локальной установки или для глобальной установки.

Как установить домашнюю страницу по умолчанию

Чтобы изменить домашнюю страницу без использования настроек внутри firefox, вам необходимо отредактировать ~/.mozilla/firefox/*.default/prefs.js (где *.default - папка внутри ~/.mozilla/firefox, созданная для вашего пользователя) и добавьте эту строку в конец

user_pref("browser.startup.homepage", "http://uptechtalk.com");

или используя эту команду

echo "user_pref("browser.startup.homepage", "http://uptechtalk.com");" >> ~/.mozilla/firefox/*.default/prefs.js

Вам нужно сделать это после закрытия firefox, или программа перезапишет настройку при выходе.

Если ваш пользователь еще не использовал firefox, и вы хотите установить домашнюю страницу для всех новых пользователей (установить на главной странице в глобальном масштабе) используйте эту команду

echo "user_pref("browser.startup.homepage", "http://uptechtalk.com");" >> /etc/xul-ext/ubufox.js

. Комментарии к вашему вопросу

-silent не существуют, вам будет предложено установить это расширение xpi в любом случае, и вам нужно нажмите кнопку, чтобы установить его;

-setDefaultBrowser не будет устанавливать вашу домашнюю страницу, это будет e firefox ваш браузер по умолчанию

24
ответ дан 7 August 2018 в 20:32

Я создал простой скрипт, основанный на ответе Бруно .

Он устанавливает расширение для текущего пользователя без какого-либо взаимодействия. Вам нужно только число, которое Mozilla использует в своем URL s на addons.mozilla.org . Сохраните сценарий как файл .sh и используйте номер в качестве аргумента при его вызове.

Протестировано и работает над Linux Mint 17 с Firefox 40 , убедитесь, что ваша версия Firefox использует ту же структуру каталогов, что и несколько раз изменила ее.

#!/bin/bash
extensionnumber=$1

# find profile dir (first profile in the ini file)
profiledir=`sed -n -e 's/^.*Path=//p' ${HOME}/.mozilla/firefox/profiles.ini | 
            head -n 1`
extensiondir="${HOME}/.mozilla/firefox/${profiledir}/extensions/"

if [ -z "$profiledir" ]; then
    printf "Can't find profile directory."
    exit 1
fi

mkdir /tmp/extension
cd /tmp/extension || exit $?

upstream=""https://addons.mozilla.org/firefox/downloads/latest"

# get extension and unzip
wget -O extension.xpi \
  "${upstream}/${extensionnumber}/addon-${extensionnumber}-latest.xpi" || 
  exit $?
unzip extension.xpi && rm extension.xpi

# get extension id from installation file
extensionid=`grep -m 1 -e em:id install.rdf`   
extensionid=${extensionid#*\>}
extensionid=${extensionid%<*}

# move all files to the directory with the right id
mkdir $extensionid || exit $?
shopt -s extglob dotglob
mv !($extensionid) $extensionid/
shopt -u dotglob

# create new firefox extension dir (if it's a clean install) 
# and move the extension
mkdir -p "${extensiondir}"
mv "${extensionid}" "${extensiondir}"

rmdir /tmp/extension
printf "Installed extension."
exit 0
1
ответ дан 10 August 2018 в 08:54

Для полноты я нашел еще один очень хорошо документированный сценарий на http://bernaerts.dyndns.org/linux/74-ubuntu/271-ubuntu-firefox-thunderbird-addon-commandline , который в основном делает именно то, что предложил Бруно Перейра в своем ответе.

0
ответ дан 10 August 2018 в 08:54

Глобальные плагины не включены по умолчанию, и вам необходимо добавить их в список в файле prefs.js в своем профиле, чтобы они были включены. Основная проблема для массового развертывания.

Вот пример сценария, когда мы сбросили кучу файлов prefs.js с клиентских машин до сети и изменили с IETab на IETab2, перенесли их настройки и т. д.

Другой способ - создать пользовательский профиль, который вам нравится на ящике, загрузить его в сеть, затем клонировать его на машинах в Firefox\defaults\profile, и все новые пользователи наследуют этот профиль.

`

----------------------------------------------------------------------
#!/bin/bash

pjsbase="/data/M_drive/Temp/prefsjs"

for userf in `find ${pjsbase} -maxdepth 1 -type f -name *.prefs.js -printf "%f\n"`
do
  echo ${userf}
  # add in IETab2 GUID and remove IETab GUID
  grep extensions.enabledItems ${pjsbase}/${userf} | 
  /bin/sed 's/\")/\,\{1BC9BA34-1EED-42ca-A505-6D2F1A935BBB\}\:2\.12\.21\.1\")/' | 
  /bin/sed 's/{77b819fa-95ad-4f2c-ac7c-486b356188a9}:1.5.20090525,//' > \
     ${pjsbase}/tmp1
  /bin/sed 's/0\.3\.8\.[0-9]*/0\.3\.8\.4/g' ${pjsbase}/tmp1 > ${pjsbase}/tmp
  /bin/sed /extensions.enabledItems/d ${pjsbase}/${userf}   > ${pjsbase}/tmp2
  cat ${pjsbase}/tmp2 > ${pjsbase}/${userf}.new2
  cat ${pjsbase}/tmp >> ${pjsbase}/${userf}.new2
  # add in IETab2 preferences
  echo user_pref\(\"extensions.ietab2.hasRun\"\,\ true\)\; >> \
     ${pjsbase}/${userf}.new2
  echo user_pref\(\"extensions.ietab2.ietab2PrefsMigrated\"\,\ true\)\; >> \
     ${pjsbase}/${userf}.new2
  echo user_pref\(\"extensions.ietab2.prefsMigrated\"\,\ true\)\; >> \
     ${pjsbase}/${userf}.new2
  echo user_pref\(\"extensions.ietab2.version\"\,\ \"2.12.21.1\"\)\; >> \
     ${pjsbase}/${userf}.new2
  echo user_pref\(\"extensions.update.notifyUser\"\,\ false\)\; >> \
     ${pjsbase}/${userf}.new2
  # if they have a preference list then migrate it
  if [ ! `grep user_pref\(\"ietab.filterlist\" ${pjsbase}/${userf} |
          wc -l` -eq 0 ]; then
    echo "user_pref(\"extensions.ietab2.filterlist"$(
       grep user_pref\(\"ietab.filterlist\" ${pjsbase}/${userf} | 
       sed 's/user\_pref(\"ietab\.filterlist//')"" >> ${pjsbase}/${userf}.new2
  fi
  # make sure prefs are alphabetised
  egrep -v ^u > ${pjsbase}/${userf}.new ${pjsbase}/${userf}.new2
  egrep ^u  ${pjsbase}/${userf}.new2 | sort >> ${pjsbase}/${userf}.new
done

`

2
ответ дан 10 August 2018 в 08:54

Для некоторых из вас этот скрипт оболочки может оказаться полезным. Он анализирует первое вхождение тега em:id в install.rdf (, описанное Bruno Pereira ):

#!/bin/sh
var=`grep -m 1 -e em:id install.rdf`   
var=${var#*\>}
var=${var%<*}

... дает вам идентификатор (включая {}). [/ д2]

1
ответ дан 15 August 2018 в 21:41

Firefox дополняет один лайнер. Adblock Plus , FlashBlock и Download Helper загружены в этом порядке, затем в firefox, открыв все найденные файлы .xpi, затем удалив эти .xpi файлы:

wget \ 
 https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi \ 
 https://addons.mozilla.org/firefox/downloads/latest/433/addon-433-latest.xpi \
 https://addons.mozilla.org/firefox/downloads/latest/3006/addon-3006-latest.xpi && 
firefox *.xpi && rm *.xpi
1
ответ дан 19 August 2018 в 00:06

Другие вопросы по тегам:

Похожие вопросы: