Як встановити додаток Firefox з командного рядка в сценарії?


25

Я хочу вдосконалити свій бездоглядний сценарій, додавши додаток 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

Заздалегідь спасибі.


Додані інструкції для автоматизації встановлення додатка, якщо вам потрібен сценарій, дайте мені знати, його можливе.
Бруно Перейра

Це велике запитання зараз, оскільки я зараз намагаюся знайти спосіб CLI встановити пакет Adblock, як раніше 10.04, тільки що вдало встановіть встановлення adblock плюс відьма не існує в 11.10 :( І ТАК - нам потрібен сценарій :)
Kangarooo

Відповіді:


25

Використовуючи свій метод

gksudo firefox -install-global-extension addon-1865-latest.xpiздається, робить трюк для вас. Це встановить розширення для всіх користувачів вашої системи.

Щоб встановити розширення лише для свого користувача, використовуйте шлях розширення як аргумент

firefox addon-1865-latest.xpi

Вам все одно потрібно натиснути Installкнопку!

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

Firefoxне потрібно ім'я файлу аддона, а ідентифікатор від аддона як імені пакета. Це означає, що якщо ви плануєте встановити аддон без втручання користувача, вам потрібно витягнути його в папку з іменем рядка ідентифікатора аддона, а не ім'ям аддона.

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

Для того, щоб аддон працював, вам потрібно витягнути пакунок, перейменуйте папку, що містить файли, в рядок ідентифікатора аддона та розмістіть її або в глобальній папці додатка, або в папці користувача addon.

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

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

Встановлення користувача

Якщо ви хочете автоматично встановити розширення лише одному користувачеві у вашій системі, вам потрібно його витягнути, перейменуйте папку, що містить аддон, у рядок ідентифікатора addon та скопіюйте його у firefoxпапку розширень користувача /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(створіть його, якщо його не існує) , все, що ви там використовуєте, буде викликано автоматично, коли користувач відкриється 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не встановить вашу домашню сторінку, вона зробить firefoxваш браузер за замовчуванням


gksudo firefox -install-Global-extension addon-1865-latest.xpi призначений лише для всіх нових користувачів EXEPT Guest так? Couse я це зробив, і гість ще не має плагінів.
Кенгуру

install-global-extensionзастаріло.
учень

1
Я часто замислювався про внутрішню роботу системи розширень, багато хорошої інформації тут, дякую!
Madd0g

1
Якщо у вас є купа аддону, я пропоную вам скористатися додатком FEBE, він витягне всі ваші аддони в один і спростить більшу частину вашого коду: D
Ooker,

2
Я думаю, що install.rdf або принаймні id всередині нього не обов'язково присутній у WebExtensions. Зауважте, до кінця 2017 року Firefox припинить підтримку розширень, окрім WebExtensions.
Форівін

4

Це проблематично, оскільки в різних версіях Firefox різні речі працюють і в деяких нічого не працюють. Для нових версій вам просто потрібно перейменувати .xpi <addon id>.xpiі помістити його в папку з розширеннями. Після цього, коли ви запустите Firefox, вам буде запропоновано прийняти встановлення всіх доданих вами додатків.

Ось деякі функції BASH, які полегшують ваше життя ..

EXTENSIONS_SYSTEM='/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/'
EXTENSIONS_USER=`echo ~/.mozilla/firefox/*.default/extensions/`

# -------------------------- xpi tools ---------------------------------

get_addon_id_from_xpi () { #path to .xpi file
    addon_id_line=`unzip -p $1 install.rdf | egrep '<em:id>' -m 1`
    addon_id=`echo $addon_id_line | sed "s/.*>\(.*\)<.*/\1/"`
    echo "$addon_id"
}

get_addon_name_from_xpi () { #path to .xpi file
    addon_name_line=`unzip -p $1 install.rdf | egrep '<em:name>' -m 1`
    addon_name=`echo $addon_name_line | sed "s/.*>\(.*\)<.*/\1/"`
    echo "$addon_name"
}

# Installs .xpi given by relative path
# to the extensions path given
install_addon () {
    xpi="${PWD}/${1}"
    extensions_path=$2
    new_filename=`get_addon_id_from_xpi $xpi`.xpi
    new_filepath="${extensions_path}${new_filename}"
    addon_name=`get_addon_name_from_xpi $xpi`
    if [ -f "$new_filepath" ]; then
        echo "File already exists: $new_filepath"
        echo "Skipping installation for addon $addon_name."
    else
        cp "$xpi" "$new_filepath"
    fi
}

Давайте встановимо Adblock ..

wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
install_addon addon-1865-latest.xpi "$EXTENSIONS_USER"

Дякую, це правильний шлях для безшумної установки
myol

2

Глобальні плагіни не включені за замовчуванням, і вам потрібно додати їх до списку у 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

`


1

Для когось із вас цей скрипт оболонки може бути корисним. Він аналізує перше виникнення em:idтегу в install.rdf( описане Бруно Перейрою ):

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

... дає вам ідентифікатор (включаючи {}).


1

Firefox доповнює один вкладиш. Adblock Plus , FlashBlock та Helper Download завантажуються в тому порядку, потім 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

0

Я створив простий сценарій на основі відповіді Бруно .

Він встановлює розширення для поточного користувача без будь-якої взаємодії. Вам потрібен лише номер, який Mozilla використовує у своїх URL-адресах на 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

яке число для цього addons.mozilla.org/en-US/firefox/addon/vimium-ff
alhelal


0

Для останніх версій Firefox процедуру значно спростили!

  1. Розпакуйте extension.xpi
  2. Читати applications.gecko.idзmanifest.json
  3. Перейменувати extension.xpiна<ID>.xpi
  4. Скопіюйте в одну зі стандартних інсталяційних папок, перелічених тут
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.