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.
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 Install
name__!
Firefox
n'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.
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 firefox
global extensions /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
. Tout ce que vous utiliserez sera appelé automatiquement quand un utilisateur ouvre firefox
name__.
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 firefox
name__.
Créez un dossier extensions
dans 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 extensions
dans 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.
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 firefox
ou le programme écrasera le paramètre à la sortie.
Si votre utilisateur n'a pas encore utilisé firefox
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
-silent
n'existe pas, vous serez invité à installer cette extension xpi
de 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 firefox
votre navigateur par défaut
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"
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
`
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 {}
).
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
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.
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