如何在脚本中从命令行安装Firefox插件?

我想改进我的无人值守脚本添加一些Firefox插件,但是我找不到方法,

有人可以帮忙找出如何?

示例:(想要安装adblockPlus插件并设置新的默认网页)

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 

提前致谢。

使用你的方法

gksudo firefox -install-global-extension addon-1865-latest.xpi似乎为你做了诀窍。 这将为您系统上的所有用户安装扩展。

要仅为您的用户安装扩展,请使用扩展路径作为参数

 firefox addon-1865-latest.xpi 

您仍然需要单击“ Install按钮!

自动化安装

Firefox不需要插件文件名,而是插件中的标识符作为包名。 这意味着如果您计划在没有用户干预的情况下安装插件,则需要将其提取到具有插件标识符字符串名称的文件夹,而不是插件的名称。

标识符字符串可以在addon安装清单文件install.rdf的第一行找到,它看起来像这样: {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}{}内的所有内容(包括花括号)都是标识符。

要使插件工作,您需要解压缩包,将包含文件的文件夹重命名为插件标识符字符串,并将其放在全局插件文件夹或用户插件文件夹中。

全局插件安装

如果要自动为系统中的所有用户安装扩展,需要将其解压缩,将包含插件的文件夹重命名为addon的id字符串,并将其复制到firefox全局扩展文件夹/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ ,当用户打开firefox时,您在那里使用的任何内容都将被自动调用。

用户特定安装

如果要自动向系统中的一个用户安装扩展,则需要将其解压缩,将包含插件的文件夹重命名为addon的id字符串,并将其复制到firefox用户扩展文件夹/home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ (如果它不存在则创建它),当用户打开firefox时,你在那里使用的任何东西都会被自动调用。

如何为自动安装准备插件 – 示例

在您的家中制作一个extensions文件夹,然后将插件下载到其中

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

解压缩并删除原始文件

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

读取install.rdf文件中的第一行以获取插件的id(在这种情况下,它将是{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d})。 并创建一个具有该名称的文件夹

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

将您的extensions文件夹中的所有文件移动到新创建的~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}然后移动{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}文件夹即可安装。描述,用于本地安装或全局安装。

如何设置默认主页

要在不使用firefox内部首选项的情况下更改主页,您必须编辑~/.mozilla/firefox/*.default/prefs.js *.default ~/.mozilla/firefox/*.default/prefs.js (其中*.default是为您的用户创建的~/.mozilla/firefox的文件夹)并添加这一行到了最后

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

或使用此命令

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

关闭firefox后你需要这样做,否则程序会在退出时覆盖设置。

如果您的用户尚未使用firefox ,并且您想为所有新用户设置主页(全局设置主页),请使用此命令

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

关于你的问题的评论

-silent不存在,无论如何都会提示您安装该xpi扩展,您必须单击按钮进行安装;

-setDefaultBrowser不会设置你的主页,它会使firefox你的默认浏览器

这是有问题的,因为在不同版本的Firefox中,不同的东西起作用,并且在某些东西上起作用。 对于较新的版本,您只需将.xpi重命名为.xpi并将其放在extensions文件夹中。 当你启动firefox之后,系统会要求你接受你在那里添加的所有插件的安装。

这里有一些BASHfunction,让您的生活更轻松..

 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 '' -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 '' -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 } 

我们安装Adblock ..

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

默认情况下不启用全局插件,您需要将它们添加到其配置文件中prefs.js文件的列表中,以便启用它们。 大规模部署的主要痛苦。

这是一个示例脚本,用于将一堆prefs.js文件从客户端计算机转储到网络并从IETab更改为IETab2 ,迁移其首选项等。

另一种方法是在盒子上创建您喜欢的用户配置文件,将其上传到网络,然后在Firefox\defaults\profile机器上克隆它,并且所有新用户都将inheritance该配置文件。

`

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

`

对于你们这些人来说,这个shell脚本可能会有所帮助 它解析install.rdf第一次出现的em:id标记( 由Bruno Pereira描述 ):

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

...给你id(包括{} )。

Firefox附加一个内衬。 按顺序下载 Adblock PlusFlashBlockDownload Helper ,然后在firefox打开所有找到的.xpi文件,然后删除那些.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 

我根据布鲁诺的答案创建了一个简单的脚本。

它为当前用户安装扩展,无需任何交互。 您只需要在addons.mozilla.org上的URL中使用Mozilla使用的数字。 将脚本另存为.sh文件,并在调用时将该数字用作参数。

使用Firefox 40Linux Mint 17进行测试和处理,请务必检查您的Firefox版本是否使用相同的目录结构,因为它们更改了几次。

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

为了完整起见,我在http://bernaerts.dyndns.org/linux/74-ubuntu/271-ubuntu-firefox-thunderbird-addon-commandline上找到了另一个记录完备的脚本,这基本上完全符合Bruno Pereira在他的建议回答。