Come installare Firefox addon dalla riga di comando negli script?

23

Voglio migliorare il mio script incustodito aggiungendo un addon di Firefox, tuttavia non trovo il modo,

Qualcuno può aiutare a scoprire come?

Esempio: (vuoi installare il plugin 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.

    
posta glococo 29.10.2011 - 11:25

7 risposte

25

Utilizzo del metodo

gksudo firefox -install-global-extension addon-1865-latest.xpi sembra fare il trucco per te. Questo installerà l'estensione a tutti gli utenti del tuo sistema.

Per installare l'estensione solo per il tuo utente usa il percorso dell'estensione come argomento

firefox addon-1865-latest.xpi

Devi comunque cliccare il pulsante Install !

Automazione dell'installazione

Firefox non ha bisogno del nome del file addon ma dell'identificatore dall'addon come nome di un pacchetto. Ciò significa che se stai pianificando di installare un addon senza l'intervento dell'utente, devi estrarlo in una cartella con il nome della stringa identificatore di addon, non il nome dell'addon.

La stringa identificatore può essere trovata nelle prime righe del file manifest di installazione di addon install.rdf e assomiglia a questo: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id> . Tutto all'interno di {} (comprese le parentesi graffe) è l'identificatore.

Per far funzionare un addon è necessario estrarre il pacchetto, rinominare la cartella che contiene i file nella stringa identificatore di addon e posizionarla sulla cartella globale dell'addon o all'interno della cartella degli utenti.

Installazione di addon globali

Se vuoi installare automaticamente un'estensione per tutti gli utenti del tuo sistema, devi estrarla, rinominare la cartella che contiene l'addon alla stringa id dell'addon e copiarla nella cartella% estensioni firefox co_de%, tutto ciò che utilizzi sarà richiamato automaticamente quando un utente apre /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ .

Installazione specifica dell'utente

Se vuoi installare automaticamente un'estensione su un solo utente del tuo sistema, devi estrarla, rinominare la cartella che contiene l'addon alla stringa id dell'addon e copiarla nella cartella% estensioni firefox firefox (creala se non esiste), tutto ciò che usi sarà richiamato automaticamente quando un utente apre /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ .

Come preparare un addon per l'installazione automatica - Esempio

Crea una cartella firefox nella tua casa e scarica l'addon in essa

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

Estrai e cancella l'originale

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

Leggi la prima riga nel file extensions per ottenere l'ID del componente aggiuntivo (in questo caso sarà {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}). e creare una cartella con quel nome

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

Sposta tutti i file nella tua cartella install.rdf nel extensions appena creato e sei pronto per l'installazione spostando la cartella ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d} , 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 di firefox devi modificare {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d} (dove ~/.mozilla/firefox/*.default/prefs.js è una cartella all'interno di *.default creata per il tuo utente) e aggiungere questa linea alla fine di esso

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

Devi farlo dopo aver chiuso ~/.mozilla/firefox o il programma sovrascriverà l'impostazione all'uscita.

Se il tuo utente non ha ancora utilizzato firefox e vuoi impostare la home page per tutti i nuovi utenti (imposta la homepage globalmente) usa questo comando

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

Commenti sulla tua domanda

firefox non esiste, ti verrà richiesto di installare comunque quell'estensione -silent e devi fare clic sul pulsante per installarlo;

xpi non imposterà la tua home page, renderà -setDefaultBrowser il tuo browser predefinito

    
risposta data Bruno Pereira 29.10.2011 - 12:10
3

Questo è problematico poiché nelle diverse versioni di Firefox, funzionano diverse cose e in alcuni non funziona nulla. Per le versioni più recenti è sufficiente rinominare il file .xpi in <addon id>.xpi e posizionarlo in una cartella delle estensioni. Quando avvierai firefox in seguito, ti verrà chiesto di accettare l'installazione di tutti gli addon aggiunti qui.

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/.*>\(.*\)<.*//"'
    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/.*>\(.*\)<.*//"'
    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"
    
risposta data Pithikos 23.12.2015 - 14:21
2

I plug-in globali non sono abilitati per impostazione predefinita e devi aggiungerli all'elenco nel file prefs.js nel loro profilo per poterli abilitare. Un grave problema per le distribuzioni di massa.

Ecco uno script di esempio per quando abbiamo scaricato un gruppo di file prefs.js dalle macchine client fino alla rete e cambiato da IETab a IETab2 , migrato le loro preferenze, ecc.

Un altro modo è creare un profilo utente che ti piace su una scatola, caricarlo sulla rete, quindi clonarlo su macchine in Firefox\defaults\profile e 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

'

    
risposta data Andrew 21.03.2013 - 18:30
1

Per alcuni di voi questo script di shell potrebbe essere utile. Analizza la prima occorrenza del tag em:id 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 (compreso il {} ).

    
risposta data Equanox 11.08.2015 - 23:33
1

Firefox aggiunge una fodera. Adblock Plus , FlashBlock e Scarica Helper scaricati in tale ordine, quindi in firefox aprendo tutti i file .xpi trovati, quindi rimuovendo quelli .xpi file:

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
    
risposta data Kangarooo 14.05.2012 - 19:21
0

Ho creato un semplice script basato sulla risposta di Bruno .

Installa un'estensione per utente corrente senza alcuna interazione necessaria. Hai solo bisogno del numero che Mozilla usa nel loro URL su addons.mozilla.org . Salva lo script come file .sh e usa il numero come argomento quando lo chiami.

Testato e funzionante su Linux Mint 17 con Firefox 40 , assicurati di controllare se la tua versione di Firefox utilizza la stessa struttura di directory dal l'hanno cambiato poche 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
    
risposta data arne 08.09.2015 - 22:02
0

Per completezza, ho trovato un altro script molto ben documentato su link che fondamentalmente fa esattamente ciò che Bruno Pereira ha suggerito nella sua risposta.

    
risposta data balu 06.12.2017 - 23:47

Leggi altre domande sui tag