web-dev-qa-db-fra.com

Comment installer l'addon Firefox en ligne de commande dans les scripts?

Je veux améliorer mon script sans surveillance en ajoutant un addon Firefox, mais je ne trouve pas le chemin,

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.

24
glococo

En utilisant votre méthode

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

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

firefox addon-1865-latest.xpi

Vous devez néanmoins cliquer sur le bouton Installname__!

Automatiser l'installation

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

La chaîne d'identification se trouve sur les premières lignes du fichier manifeste d'installation addon install.rdf et se présente comme suit: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Tout ce qui se trouve dans {} (y compris les accolades) correspond à l'identifiant.

Pour qu'un addon fonctionne, vous devez extraire le package, renommez le dossier contenant les fichiers avec la chaîne d'identificateur d'addon et placez-le dans le dossier global du addon ou dans le dossier du complément utilisateur.

Addon global installer

Si vous souhaitez installer automatiquement une extension sur tous les utilisateurs de votre système, vous devez l'extraire, renommer le dossier contenant l'addon en chaîne d'identifiant de l'addon et le copier dans le dossier firefoxglobal extensions /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/. Tout ce que vous utiliserez sera appelé automatiquement quand un utilisateur ouvre firefoxname__.

Installation spécifique à l'utilisateur

Si vous souhaitez installer automatiquement une extension sur un seul utilisateur de votre système, vous devez l'extraire, renommez le dossier contenant l'addon en chaîne d'id de l'addon et copiez-le dans le dossier firefox/home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ (créez-le s'il ne fonctionne pas.) exist), tout ce que vous utiliserez ici sera appelé automatiquement lorsqu'un utilisateur ouvrira firefoxname__.

Comment préparer un addon pour une installation automatique - Exemple

Créez un dossier extensionsdans votre maison et téléchargez l’addon dans celui-ci.

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 fichier install.rdf pour obtenir l'id de l'addon (dans ce cas, il s'agira de {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 dossier extensionsdans le ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d} nouvellement créé et vous êtes prêt à installer en déplaçant le dossier {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}, comme décrit, pour une installation locale ou globale.

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

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

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 de firefoxou le programme écrasera le paramètre à la sortie.

Si votre utilisateur n'a pas encore utilisé firefoxet 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

-silent n'existe pas, vous serez invité à installer cette extension xpide toute façon et vous devrez cliquer sur le bouton pour l'installer;

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

25
Bruno Pereira

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

Voici quelques fonctions de BASH qui vous simplifient 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"
4
Pithikos

Les plugins globaux ne sont pas activés par défaut et vous devez les ajouter à la liste dans le fichier prefs.js de leur profil pour pouvoir les activer. Une douleur majeure pour les déploiements de masse.

Voici un exemple de script pour le vidage d’un groupe de fichiers prefs.js des ordinateurs clients vers le réseau et le passage de IETab à IETab2, la migration de leurs préférences, etc.

Une autre méthode consiste à créer un profil utilisateur sur une boîte, à le télécharger sur le réseau, puis à le cloner sur des ordinateurs dans Firefox\defaults\profile. 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

`

2
Andrew

Pour certains d'entre vous, ce script Shell pourrait être utile. Il analyse la première occurrence de la balise em:id dans install.rdf ( décrit par Bruno Pereira ):

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

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

1
Equanox

Firefox add-ons un liner. Adblock Plus, FlashBlock, et Aide au téléchargement téléchargés dans cet ordre, puis dans firefox en ouvrant tous les fichiers .xpi trouvés, puis en supprimant ces fichiers .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
1
Kangarooo

Pour être complet, j’ai trouvé un autre script très bien documenté sur http://bernaerts.dyndns.org/linux/74-ubuntu/271-ubuntu-firefox-Thunderbird-addon-commandline qui est en train de faire exactement ce que Bruno Pereira a suggéré dans sa réponse.

0
balu

J'ai créé un script simple basé sur 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 s sur addons.mozilla.org . Enregistrez le script en tant que fichier . Sh et utilisez le nombre comme argument lorsque vous l'appelez.

Testé et travaillant 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 car ils l'ont changé 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
arne