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

glo*_*oco 34 command-line firefox scripts plugins

我想改进我的无人值守脚本添加一些 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
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Bru*_*ira 27

使用你的方法

gksudo firefox -install-global-extension addon-1865-latest.xpi似乎对你有用。这会将扩展安装到您系统上的所有用户。

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

firefox addon-1865-latest.xpi
Run Code Online (Sandbox Code Playgroud)

你仍然需要点击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

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

extensions在您的家中创建一个文件夹并将插件下载到其中

mkdir ~/extensions
cd ~/extensions
wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
Run Code Online (Sandbox Code Playgroud)

解压并删除原来的

unzip ~/extensions/addon-1865-latest.xpi
rm ~/extensions/addon-1865-latest.xpi
Run Code Online (Sandbox Code Playgroud)

读取install.rdf文件中的第一行以获取插件的 id(在本例中为 {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d})。并创建一个具有该名称的文件夹

mkdir ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}
Run Code Online (Sandbox Code Playgroud)

将文件extensions夹中的所有文件移动到新创建~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}文件夹中,然后您就可以通过移动文件夹进行安装了,如上所述,本地安装或全局安装。

如何设置默认主页

要在不使用 Firefox 中的首选项的情况下更改主页,您必须编辑~/.mozilla/firefox/*.default/prefs.js(其中为您的用户创建*.default的文件夹~/.mozilla/firefox)并将此行添加到它的末尾

user_pref("browser.startup.homepage", "http://uptechtalk.com");
Run Code Online (Sandbox Code Playgroud)

或使用此命令

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

您需要在关闭后执行此操作,firefox否则程序将在退出时覆盖设置。

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

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

关于你的问题的评论

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

-setDefaultBrowser不会设置您的主页,它将成为firefox您的默认浏览器

  • 我认为 install.rdf 或至少其中的 id 不一定存在于 WebExtensions 中。请注意,到 2017 年底,Firefox 将不再支持 WebExtensions 以外的扩展程序。 (2认同)

Pit*_*kos 5

这是有问题的,因为在不同版本的 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
}
Run Code Online (Sandbox Code Playgroud)

让我们安装 Adblock..

wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
install_addon addon-1865-latest.xpi "$EXTENSIONS_USER"
Run Code Online (Sandbox Code Playgroud)