Come installare il componente aggiuntivo di Firefox dalla riga di comando negli script?


25

Voglio migliorare il mio script automatico aggiungendo un componente aggiuntivo per Firefox, tuttavia non riesco a trovare la strada,

Qualcuno può aiutare a scoprire come?

Esempio: (vuoi installare il plug-in adblockPlus e impostare una nuova pagina web predefinita)

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

Grazie in anticipo.


Aggiunte istruzioni per automatizzare l'installazione di un componente aggiuntivo, se hai bisogno di uno script fammi sapere, è possibile.
Bruno Pereira,

Questa è una grande domanda ora poiché ora sto lottando per trovare il modo per CLI in modo da installare il pacchetto Adblock come in precedenza il 10.04 con solo apt-get install adblock-plus la strega non esiste in 11.10 :( E SÌ- abbiamo bisogno di script :)
Kangarooo

Risposte:


25

Usando il tuo metodo

gksudo firefox -install-global-extension addon-1865-latest.xpisembra fare il trucco per te. Ciò installerà l'estensione a tutti gli utenti sul tuo sistema.

Per installare l'estensione solo per l'utente, utilizzare il percorso dell'estensione come argomento

firefox addon-1865-latest.xpi

Devi comunque fare clic sul Installpulsante!

Automatizzare l'installazione

Firefoxnon richiede il nome del file del componente aggiuntivo ma l'identificatore del componente aggiuntivo come nome del pacchetto. Ciò significa che se si prevede di installare un componente aggiuntivo senza l'intervento dell'utente, è necessario estrarlo in una cartella con il nome della stringa identificativa del componente aggiuntivo, non il nome del componente aggiuntivo.

La stringa di identificazione può essere trovato sulle prime righe del addon installare file manifesto install.rdfe sembra che questo: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Tutto all'interno del {}(comprese le parentesi graffe) è l'identificatore.

Per far funzionare un componente aggiuntivo è necessario estrarre il pacchetto, rinominare la cartella che contiene i file nella stringa identificativa del componente aggiuntivo e posizionarlo nella cartella del componente aggiuntivo globale o nella cartella del componente aggiuntivo dell'utente.

Installazione del componente aggiuntivo globale

Se si desidera installare automaticamente un'estensione per tutti gli utenti del sistema, è necessario estrarla, rinominare la cartella che contiene il componente aggiuntivo nella stringa ID del componente aggiuntivo e copiarlo nella firefoxcartella delle estensioni globali /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/, verrà richiamato tutto ciò che si utilizza lì automatico all'apertura di un utente firefox.

Installazione specifica dell'utente

Se si desidera installare automaticamente un'estensione su un solo utente nel proprio sistema, è necessario estrarla, rinominare la cartella che contiene il componente aggiuntivo nella stringa ID del componente aggiuntivo e copiarlo nella firefoxcartella delle estensioni dell'utente /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(crearla se non esiste) , tutto ciò che usi lì verrà richiamato automaticamente all'apertura di un utente firefox.

Come preparare un componente aggiuntivo per l'installazione automatica - Esempio

Crea una extensionscartella in casa e scarica il componente aggiuntivo

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

Estrai ed elimina l'originale

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

Leggi la prima riga nel install.rdffile per ottenere l'id dell'addon (in questo caso sarà {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}). e crea una cartella con quel nome

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

Sposta tutti i file nella tua extensionscartella nella nuova creazione ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}e sei pronto per l'installazione spostando la {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}cartella, come descritto, per un'installazione locale o per un'installazione globale.

Come impostare la home page predefinita

Per cambiare la tua homepage senza usare le preferenze all'interno di Firefox devi modificare ~/.mozilla/firefox/*.default/prefs.js(dove *.defaultè stata ~/.mozilla/firefoxcreata una cartella all'interno per il tuo utente) e aggiungere questa riga alla fine di essa

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

o usando questo comando

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

È necessario farlo dopo la chiusura firefoxo il programma sovrascriverà l'impostazione all'uscita.

Se l'utente non ha ancora utilizzato firefoxe si desidera impostare la home page per tutti i nuovi utenti (impostare la home page a livello globale) utilizzare questo comando

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

Commenti sulla tua domanda

-silentnon esiste, ti verrà richiesto di installare xpicomunque tale estensione e dovrai fare clic sul pulsante per installarlo;

-setDefaultBrowsernon imposterà la tua homepage, renderà il firefoxtuo browser predefinito


gksudo firefox -install-global-extension addon-1865-latest.xpi rende solo per tutti i nuovi utenti EXEPT Guest sì? Perché l'ho fatto e l'ospite non ha ancora plugin.
Canguro,

install-global-extensionè deprecato.
studente

1
Mi sono spesso chiesto quali sono i meccanismi interni del sistema di estensioni, molte buone informazioni qui, grazie!
Madd0g

1
Se hai un sacco di componenti aggiuntivi, ti suggerisco di utilizzare il componente aggiuntivo FEBE, estrarrà tutti i tuoi componenti aggiuntivi in ​​uno e semplificherà gran parte del tuo codice: D
Ooker

2
Penso che install.rdf o almeno l'id al suo interno non sia necessariamente presente in WebExtensions. Nota, entro la fine del 2017 Firefox eliminerà il supporto per estensioni diverse da WebExtensions.
Forivin,

4

Ciò è problematico poiché in diverse versioni di Firefox funzionano diverse cose e in alcuni casi non funzionano. Per le versioni più recenti devi solo rinominare il .xpi <addon id>.xpie posizionarlo in una cartella delle estensioni. Quando avvierai firefox in seguito, ti verrà chiesto di accettare l'installazione di tutti i componenti aggiuntivi che hai aggiunto lì.

Ecco alcune funzioni BASH che ti semplificano la vita.

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
}

Installiamo Adblock ..

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

Grazie, questo è ora il percorso corretto da utilizzare per un'installazione invisibile
all'utente

2

I plug-in globali non sono abilitati per impostazione predefinita ed è necessario aggiungerli all'elenco nel prefs.jsfile nel loro profilo per poter essere abilitati. Un grande dolore per le distribuzioni di massa.

Ecco uno script di esempio per quando abbiamo scaricato un mucchio di prefs.jsfile dalle macchine client alla rete e modificato da IETaba IETab2, migrato le loro preferenze, ecc.

Un altro modo è quello di creare un profilo utente che ti piace su una scatola, caricarlo sulla rete, quindi clonarlo su tutte le macchine Firefox\defaults\profilee tutti i nuovi utenti erediteranno quel profilo.

`

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

Per alcuni di voi questo script di shell potrebbe essere utile. Analizza la prima occorrenza del em:idtag in install.rdf( descritto da Bruno Pereira ):

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

... dandoti l'id (incluso il {}).


1

Componenti aggiuntivi di Firefox una riga. Adblock Plus , FlashBlock e Download Helper scaricati in questo ordine, quindi firefoxaprendo tutti i .xpifile trovati , quindi rimuovendo quei .xpifile:

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

Ho creato una semplice sceneggiatura basata sulla risposta di Bruno .

Installa un'estensione per l' utente corrente senza alcuna interazione necessaria. Hai solo bisogno del numero che Mozilla usa nei loro URL su addons.mozilla.org . Salvare lo script come file .sh e utilizzare il numero come argomento quando lo si chiama.

Testato e funzionante su Linux Mint 17 con Firefox 40 , assicurati di verificare se la tua versione di Firefox utilizza la stessa struttura di directory poiché l'hanno cambiata alcune volte.

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



0

Per le ultime versioni di Firefox, la procedura è stata semplificata molto!

  1. Unzip extension.xpi
  2. Leggi applications.gecko.iddamanifest.json
  3. Rinomina extension.xpiin<ID>.xpi
  4. Copia in una delle cartelle di installazione standard elencate qui
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.