这可能吗?理想情况下,我试图编写一个脚本,该脚本将获取文件(我的扩展备份文件)并替换或安装到其他用户的计算机中,同时保存所有设置。这可能吗?即使我必须替换整个 Mozilla Firefox 目录也没关系,但最好只安装保存所有设置的扩展。我不能使用 gui,所以我只寻找终端。例如,一个 bash 脚本和一些文件,我可以将它们提供给客户,他们可以轻松安装它。这可能吗?我试图以这种方式在人们的计算机上安装的扩展是用户代理覆盖。
答案1
下载扩展
$ wget http://www.addons...../extension-name
$ firefox extension-name
Ubuntu-it 菜单上的示例:
$ wget https://addons.cdn.mozilla.net/storage/public-staging/4684/ubuntu_it_menu-1.1.0-fx.xpi
$ firefox ubuntu_it_menu-1.1.0-fx.xpi
信息:'https://addons.mozilla.org/en-US/firefox/addon/ubuntu-it-menu/?src=search
‘
答案2
这花了我一些时间,但这里有一个解决方案,供脚本编写者使用。本质上,您必须将每个 .xpi 文件放入<addon id>.xpi
所需的扩展文件夹中。
EXTENSIONS_SYSTEM='/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/'
EXTENSIONS_USER=`echo ~/.mozilla/firefox/*.default/extensions/`
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_zipped () {
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_for_user addon-1865-latest.xpi $EXTENSIONS_USER
现在,如果您启动 Firefox,系统将询问您是否安装 Adblock。