Comment installer l'addon Firefox à partir de la ligne de commande dans les scripts?


25

Je veux améliorer mon script sans assistance en ajoutant un module complémentaire Firefox, mais je ne trouve pas le moyen,

Quelqu'un peut-il aider à savoir comment faire?

Exemple: (Vous souhaitez installer le plugin adblockPlus et définir une nouvelle page Web par défaut)

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

Merci d'avance.


Ajout d'instructions pour automatiser l'installation d'un addon, si vous avez besoin d'un script, faites-le moi savoir, c'est possible.
Bruno Pereira

C'est une grande question maintenant car je cherche maintenant à trouver le moyen d'installer le package Adblock de manière CLI comme précédemment le 10.04 avec juste apt-get install adblock-plus qui n'existe pas en 11.10 :( ET OUI - nous avons besoin d'un script :)
Kangarooo

Réponses:


25

Utiliser votre méthode

gksudo firefox -install-global-extension addon-1865-latest.xpisemble faire l'affaire pour vous. Cela installera l'extension à tous les utilisateurs de votre système.

Pour installer l'extension uniquement pour votre utilisateur, utilisez le chemin d'extension comme argument

firefox addon-1865-latest.xpi

Vous devez toujours cliquer sur le Installbouton!

Automatiser l'installation

Firefoxn'a pas besoin du nom de fichier de l'addon mais de l'identifiant de l'addon comme nom de package. Cela signifie que si vous prévoyez d'installer un module complémentaire sans intervention de l'utilisateur, vous devez l'extraire dans un dossier portant le nom de la chaîne d'identification du module complémentaire, et non le nom du module complémentaire.

La chaîne d'identification se trouve sur les premières lignes du fichier d' installation addon manifeste install.rdfet il ressemble à ceci: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Tout ce qui se trouve à l'intérieur {}(y compris les accolades) est l'identifiant.

Pour faire fonctionner un module complémentaire, vous devez extraire le package, renommer le dossier qui contient les fichiers en chaîne d'identificateur de module complémentaire et le placer sur le dossier de module complémentaire global ou dans le dossier de module complémentaire utilisateur.

Installation de l'addon global

Si vous souhaitez installer une extension automatiquement pour tous les utilisateurs de votre système, vous devez l'extraire, renommer le dossier qui contient l'addon à la chaîne id de l'addon et le copier dans le firefoxdossier d'extensions globales /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/, tout ce que vous y utiliserez sera appelé automatique lorsqu'un utilisateur ouvre firefox.

Installation spécifique à l'utilisateur

Si vous souhaitez installer une extension automatiquement pour un seul utilisateur de votre système, vous devez l'extraire, renommer le dossier qui contient l'addon à la chaîne d'identification de l'addon et le copier dans le firefoxdossier d'extensions utilisateur /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(créez-le s'il n'existe pas) , tout ce que vous y utiliserez sera appelé automatiquement lors de l'ouverture d'un utilisateur firefox.

Comment préparer un module complémentaire pour une installation automatique - Exemple

Créez un extensionsdossier dans votre maison et téléchargez-y l'addon

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

Extrayez-le et supprimez l'original

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

Lisez la première ligne du install.rdffichier pour obtenir l'ID de l'addon (dans ce cas, ce sera {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}). et créer un dossier avec ce nom

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

Déplacez tous les fichiers de votre extensionsdossier dans le fichier nouvellement créé ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}et vous êtes prêt à installer en déplaçant le {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}dossier, comme décrit, pour une installation locale ou pour une installation globale.

Comment définir la page d'accueil par défaut

Pour modifier votre page d'accueil sans utiliser les préférences de Firefox, vous devez modifier ~/.mozilla/firefox/*.default/prefs.js(où se *.defaulttrouve un dossier à l'intérieur ~/.mozilla/firefoxcréé pour votre utilisateur) et ajouter cette ligne à la fin

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

ou en utilisant cette commande

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

Vous devez le faire après la fermeture firefoxou le programme écrasera le paramètre à la sortie.

Si votre utilisateur n'a pas firefoxencore utilisé et que vous souhaitez définir la page d'accueil pour tous les nouveaux utilisateurs (définir la page d'accueil globalement), utilisez cette commande

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

Commentaires sur votre question

-silentn'existe pas, vous serez invité à installer cette xpiextension de toute façon et vous devrez cliquer sur le bouton pour l'installer;

-setDefaultBrowserne définira pas votre page d'accueil, il fera firefoxvotre navigateur par défaut


gksudo firefox -install-global-extension addon-1865-latest.xpi fait uniquement pour tous les nouveaux utilisateurs EXEPT Guest oui? Couse je l'ai fait et l'invité n'a toujours pas de plugins.
Kangarooo

install-global-extensionest obsolète.
apprenant

1
Je me suis souvent posé des questions sur le fonctionnement interne du système d'extensions, beaucoup de bonnes informations ici, merci!
Madd0g

1
Si vous avez un tas d'addon, je vous suggère d'utiliser l'addon FEBE, il extraira tous vos addons en un seul et simplifiera une grande partie de votre code: D
Ooker

2
Je pense que le fichier install.rdf ou au moins l'ID à l'intérieur n'est pas nécessairement présent dans les extensions Web. Notez qu'à la fin de 2017, Firefox supprimera la prise en charge des extensions autres que WebExtensions.
Forivin

4

Cela est problématique car dans différentes versions de Firefox, différentes choses fonctionnent et, dans certains cas, rien ne fonctionne. Pour les versions plus récentes, il vous suffit de renommer le .xpi en <addon id>.xpiet de le placer dans un dossier d'extensions. Lorsque vous démarrez ensuite Firefox, il vous sera demandé d'accepter l'installation de tous les addons que vous y avez ajoutés.

Voici quelques fonctions BASH qui vous facilitent la vie.

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
}

Installons Adblock ..

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

Merci, c'est maintenant le bon chemin à utiliser pour une installation silencieuse
myol

2

Les plugins globaux ne sont pas activés par défaut, et vous devez les ajouter à la liste du prefs.jsfichier dans leur profil pour qu'ils soient activés. Une douleur majeure pour les déploiements de masse.

Voici un exemple de script pour quand nous avons vidé un tas de prefs.jsfichiers des machines clientes sur le réseau et changé de IETabà IETab2, migré leurs préférences, etc.

Une autre façon consiste à créer un profil utilisateur que vous aimez sur une boîte, à le télécharger sur le réseau, puis à le cloner sur des machines Firefox\defaults\profileet tous les nouveaux utilisateurs hériteront de ce 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

"


1

Pour certains d'entre vous, ce script shell peut être utile. Il analyse la première occurrence de la em:idbalise install.rdf( décrite par Bruno Pereira ):

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

... vous donnant l'id (y compris le {}).


1

Modules complémentaires Firefox un liner. Adblock Plus , FlashBlock et Download Helper téléchargés dans cet ordre, puis en firefoxouvrant tous les .xpifichiers trouvés , puis en supprimant ces .xpifichiers:

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

J'ai créé un script simple basé sur la réponse de Bruno .

Il installe une extension pour l' utilisateur actuel sans aucune interaction nécessaire. Vous avez seulement besoin du nombre que Mozilla utilise dans leurs URL sur addons.mozilla.org . Enregistrez le script en tant que fichier .sh et utilisez le numéro comme argument lorsque vous l'appelez.

Testé et fonctionnant sur Linux Mint 17 avec Firefox 40 , assurez-vous de vérifier si votre version de Firefox utilise la même structure de répertoires puisqu'ils l'ont changée plusieurs fois.

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

Pour les dernières versions de Firefox, la procédure a été beaucoup simplifiée!

  1. Décompressez extension.xpi
  2. lire à applications.gecko.idpartirmanifest.json
  3. Renommer extension.xpien<ID>.xpi
  4. Copiez dans l'un des dossiers d'installation standard répertoriés ici
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.