通过终端安装 Firefox 扩展?

通过终端安装 Firefox 扩展?

这可能吗?理想情况下,我试图编写一个脚本,该脚本将获取文件(我的扩展备份文件)并替换或安装到其他用户的计算机中,同时保存所有设置。这可能吗?即使我必须替换整个 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。

相关内容