问题描述
我想改进我的无人值守脚本添加一些 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
不需要插件文件名,而是插件的标识符作为包名。这意味着,如果您计划在没有用户干预的情况下安装插件,您需要将其解压缩到带有插件标识符字符串名称的文件夹中,而不是插件名称。
标识符字符串可以在插件安装清单文件 install.rdf
的第一行找到,它看起来像这样: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>
。 {}
中的所有内容(包括花括号)都是标识符。
要使插件工作,您需要解压缩包,将包含文件的文件夹重命名为插件标识符字符串,并将其放置在全局插件文件夹或用户插件文件夹中。
全局插件安装
如果您想为系统中的所有用户自动安装扩展,您需要解压缩它,将包含插件的文件夹重命名为插件的 id 字符串并将其复制到 firefox
全局扩展文件夹 /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
,您在那里使用的任何内容都会当用户打开 firefox
时自动调用。
用户特定安装
如果您想为系统中的一个用户自动安装扩展,您需要解压缩它,将包含插件的文件夹重命名为插件的 id 字符串,并将其复制到 firefox
用户扩展文件夹 /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
(如果没有,则创建它存在),当用户打开 firefox
时,您在那里使用的任何内容都会被自动调用。
How-to 为自动安装准备插件 – 示例
在您的家中创建一个 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}
文件夹来进行安装了,如上所述,用于本地安装或全局安装。
How-to 设置默认主页
要在不使用 firefox 中的首选项的情况下更改主页,您必须编辑 ~/.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 重命名为 <addon id>.xpi
并将其放在扩展文件夹中。之后启动 firefox 时,系统会要求您接受安装在那里添加的所有插件。
这里有一些 BASH 函数可以让你的生活更轻松..
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
}
让我们安装 Adblock..
wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
install_addon addon-1865-latest.xpi "$EXTENSIONS_USER"