Wie installiere ich das Firefox-Addon von der Kommandozeile in Skripten?

25

Ich möchte mein unbeaufsichtigtes Skript verbessern, indem ich ein Firefox-Addon hinzufüge.

Kann jemand helfen, herauszufinden, wie es geht?

Beispiel: (Sie möchten das AdblockPlus-Plugin installieren und eine neue Standard-Webseite einrichten.)

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

Danke im Voraus.

Glokoko
quelle
Es wurden Anweisungen hinzugefügt, um die Installation eines Addons zu automatisieren. Wenn Sie ein Skript benötigen, lassen Sie es mich wissen, es ist möglich.
Bruno Pereira
Dies ist eine große Frage ist nun , da im jetzt finden Weg , um CLI Art und Weise installiert Adblock Pakete wie zuvor auf 10,04 mit nur apt-get install adblock-plus Hexe doesnt exist in 11,10 strugling :( UND ja- wir brauchen Skript :)
Kangarooo

Antworten:

25

Verwenden Sie Ihre Methode

gksudo firefox -install-global-extension addon-1865-latest.xpischeint den Trick für Sie zu tun. Dadurch wird die Erweiterung für alle Benutzer auf Ihrem System installiert.

Um die Erweiterung nur für Ihren Benutzer zu installieren, verwenden Sie den Erweiterungspfad als Argument

firefox addon-1865-latest.xpi

Sie müssen jedoch noch auf die InstallSchaltfläche klicken !

Automatisierung der Installation

Firefoxbenötigt nicht den Addon-Dateinamen, sondern den Bezeichner des Addons als Paketnamen. Das heißt, wenn Sie ein Addon ohne Benutzereingriff installieren möchten, müssen Sie es in einen Ordner mit dem Namen der Addon-ID-Zeichenfolge extrahieren, nicht mit dem Namen des Addons.

Die Kennung String kann auf den ersten Zeilen des Add - ons installieren Manifest - Datei zu finden , install.rdfund es sieht wie folgt aus : <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Alles in {}(einschließlich der geschweiften Klammern) ist der Bezeichner.

Um ein Addon zum Laufen zu bringen, müssen Sie das Paket extrahieren, den Ordner, der die Dateien enthält, in die Addon-ID-Zeichenfolge umbenennen und entweder im globalen Addon-Ordner oder im Benutzer-Addon-Ordner ablegen.

Globale Addon-Installation

Wenn Sie eine Erweiterung automatisch für alle Benutzer in Ihrem System installieren möchten, müssen Sie sie extrahieren. Benennen Sie den Ordner, der das Addon enthält, in die ID-Zeichenfolge des Addons um und kopieren Sie sie in den firefoxOrdner für globale Erweiterungen /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/. Alles, was Sie dort verwenden, wird aufgerufen automatisch, wenn ein Benutzer öffnet firefox.

Benutzerspezifische Installation

Wenn Sie eine Erweiterung automatisch für nur einen Benutzer in Ihrem System installieren möchten, müssen Sie sie extrahieren. Benennen Sie den Ordner, der das Addon enthält, in die ID-Zeichenfolge des Addons um und kopieren Sie sie in den firefoxBenutzererweiterungsordner /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(erstellen Sie sie, wenn sie nicht vorhanden ist). Alles, was Sie dort verwenden, wird beim Öffnen eines Benutzers automatisch aufgerufen firefox.

So bereiten Sie ein Addon für die automatische Installation vor - Beispiel

Erstellen Sie einen extensionsOrdner in Ihrem Zuhause und laden Sie das Addon darin herunter

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

Extrahieren Sie es und löschen Sie das Original

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

Lesen Sie die erste Zeile in der install.rdfDatei, um die ID des Addons abzurufen (in diesem Fall lautet sie {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}). und erstellen Sie einen Ordner mit diesem Namen

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

Verschieben Sie alle Dateien in Ihrem extensionsOrdner in den neu erstellten ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}und Sie können die Installation {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}starten, indem Sie den Ordner wie beschrieben für eine lokale oder globale Installation verschieben.

So legen Sie die Standardhomepage fest

Um Ihre Homepage zu ändern, ohne die Einstellungen in Firefox zu verwenden, müssen Sie sie bearbeiten ~/.mozilla/firefox/*.default/prefs.js(wo *.defaultbefindet sich ein Ordner, ~/.mozilla/firefoxder für Ihren Benutzer erstellt wurde) und diese Zeile am Ende der Seite einfügen

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

oder mit diesem Befehl

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

Sie müssen dies nach dem Schließen tun, sonst firefoxüberschreibt das Programm die Einstellung beim Beenden.

Wenn Ihr Benutzer noch nicht verwendet firefoxhat und Sie die Homepage für alle neuen Benutzer festlegen möchten (Homepage global festlegen), verwenden Sie diesen Befehl

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

Kommentare zu Ihrer Frage

-silentnicht vorhanden ist, werden Sie xpitrotzdem aufgefordert, diese Erweiterung zu installieren, und Sie müssen auf die Schaltfläche klicken, um sie zu installieren.

-setDefaultBrowserwird Ihre Homepage nicht einstellen, wird es firefoxIhr Standardbrowser machen

Bruno Pereira
quelle
gksudo firefox -install-global-extension addon-1865-latest.xpi macht nur für alle neuen Benutzer EXEPT Gast ja? Weil ich es getan habe und der Gast noch keine Plugins hat.
Kangarooo
install-global-extensionist veraltet.
Anfänger
1
Ich habe mich oft über die Funktionsweise des Erweiterungssystems gewundert, viele gute Informationen hier, danke!
Madd0g
1
Wenn Sie Reihe von Add - on haben, empfehle ich Ihnen FEBE Addon zu verwenden, wird es alle Ihre Add - ons in einem extrahieren und viel von Ihrem Code vereinfachen: D
Ooker
2
Ich denke, die install.rdf oder zumindest die ID darin ist in WebExtensions nicht unbedingt vorhanden. Hinweis: Bis Ende 2017 wird Firefox die Unterstützung für andere Erweiterungen als WebExtensions einstellen.
Forivin
4

Dies ist problematisch, da in verschiedenen Versionen von Firefox verschiedene Dinge funktionieren und bei manchen nichts. Für die neueren Versionen müssen Sie nur die .xpi in umbenennen <addon id>.xpiund in einem Erweiterungsordner ablegen . Wenn Sie danach Firefox starten, werden Sie aufgefordert, die Installation aller dort hinzugefügten Addons zu akzeptieren.

Hier sind einige BASH-Funktionen, die Ihnen das Leben erleichtern.

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
}

Lass uns Adblock installieren.

wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
install_addon addon-1865-latest.xpi "$EXTENSIONS_USER"
Pithikos
quelle
Danke, dies ist jetzt der richtige Pfad für eine
unbeaufsichtigte
2

Globale Plugins sind standardmäßig nicht aktiviert. Sie müssen sie der Liste in der prefs.jsDatei in ihrem Profil hinzufügen, damit sie aktiviert werden. Ein großer Schmerz für Masseneinsätze.

Hier ist ein Beispielskript für den Fall, dass wir eine Reihe von prefs.jsDateien von Client-Computern in das Netzwerk kopiert und von IETabauf geändert haben IETab2, ihre Einstellungen migriert haben usw.

Eine andere Möglichkeit besteht darin, ein Benutzerprofil zu erstellen, das Sie für eine Box verwenden möchten, es in das Netzwerk hochzuladen und es dann über mehrere Computer hinweg zu klonen. Firefox\defaults\profileAlle neuen Benutzer übernehmen dieses Profil.

`

----------------------------------------------------------------------
#!/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

`

Andrew
quelle
1

Für einige von Ihnen könnte dieses Shell-Skript hilfreich sein. Es analysiert das erste Vorkommen des em:idTags in install.rdf( beschrieben von Bruno Pereira ):

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

... geben Sie die ID (einschließlich der {}).

Equanox
quelle
1

Firefox-Add-Ons einzeilig. Adblock Plus , FlashBlock und Download Helper werden in dieser Reihenfolge heruntergeladen. Anschließend werden firefoxalle gefundenen .xpiDateien geöffnet und die folgenden .xpiDateien entfernt:

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
Känguru
quelle
0

Ich habe ein einfaches Skript basierend auf Brunos Antwort erstellt .

Es installiert eine Erweiterung für den aktuellen Benutzer, ohne dass eine Interaktion erforderlich ist. Sie müssen nur die Nummer Mozilla Anwendungen in ihrer URL s auf addons.mozilla.org . Speichern Sie das Skript als .sh- Datei und verwenden Sie die Nummer als Argument, wenn Sie es aufrufen.

Wenn Sie mit Firefox 40 unter Linux Mint 17 getestet wurden und arbeiten , müssen Sie sicherstellen, dass Ihre Firefox- Version dieselbe Verzeichnisstruktur verwendet, da sie diese einige Male geändert hat.

#!/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
Arne
quelle
Was ist die Nummer für diese addons.mozilla.org/en-US/firefox/addon/vimium-ff
alhelal
0

Für die neuesten Versionen von Firefox wurde das Verfahren erheblich vereinfacht!

  1. Entpacken extension.xpi
  2. Lesen Sie applications.gecko.idausmanifest.json
  3. Umbenennen extension.xpiin<ID>.xpi
  4. Kopieren Sie in einen der hier aufgeführten Standardinstallationsordner
dunkler Drache
quelle