當前位置: 首頁>>技術教程>>正文


如何從腳本中的命令行安裝 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/zh-tw/article/12179.html,未經允許,請勿轉載。