当前位置: 首页>>技术教程>>正文


如何从脚本中的命令行安装 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 不需要插件文件名,而是插件的标识符作为包名。这意味着,如果您计划在没有用户干预的情况下安装插件,您需要将其解压缩到带有插件标识符字符串名称的文件夹中,而不是插件名称。

标识符字符串可以在插件安装清单文件 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"

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12179.html,未经允许,请勿转载。