我在Arch上使用Firefox91.10.0esr(所以,Firefox ),我正在寻找一种使用终端安装默认火狐插件的方法。我知道通过调用下载的addon .xpi作为firefox-esr <addon-name>.xpi
来安装它们的方法,但是它打开火狐并要求进一步确认安装。
我的目的是只通过命令行执行.xpi文件的安装,而不与浏览器GUI交互,并避免进一步的安装确认(浏览器打开的弹出窗口上的"Add“按钮)。
根据几个来源(即https://askubuntu.com/questions/73474/how-to-install-firefox-addon-from-command-line-in-scripts),流程被解释为包含install.rdf
文件的加载项,因此很容易管理这种情况。
我的问题与那些不包括包含应用程序ID的.xpi文件的install.rdf
文件有关。
例如,如果我们考虑FoxyProxy插件并下载并解压缩它:
mkdir foxyproxy && cd foxyproxy
wget https://addons.mozilla.org/firefox/downloads/file/3611407/foxyproxy_standard-7.5.1.xpi
unzip foxyproxy_standard-7.5.1.xpi
在提取的文件中,没有包含扩展名通常的十六进制ID的install.rdf
文件。我看到的唯一ID是在没有十六进制格式的manifest.json
文件中。以FoxyProxy为例,我试图使用它的ID foxyproxy@eric.h.jung
,方法是使进程如下:
mkdir -p /usr/share/mozilla/extensions/foxyproxy@eric.h.jung
或
mkdir -p /home/user/.mozilla/extensions/foxyproxy@eric.h.jung
然后在其中一个目录中复制所有解压缩的内容of.xpi,但没有任何结果。
CLI是否可以在没有install.rdf
文件的情况下安装这种加载项?
发布于 2022-11-23 16:39:54
TL;DR
运行以下config_firefox.sh
脚本:
#!/bin/bash
sudo mkdir -p /etc/firefox/policies
sudo cp policies.json /etc/firefox/policies/policies.json
哪个副本(必须与policies.json
脚本放在同一个文件夹中的下列config_firefox.sh
文件):
{
"policies": {
"Extensions": {
"Install": [
"https://addons.mozilla.org/firefox/downloads/file/3551054/ublock_origin-latest.xpi"
]
},
"ExtensionUpdate": true,
"DisableTelemetry": true,
"DisableFirefoxStudies": true,
"EnableTrackingProtection": {
"Value": true,
"Locked": false,
"Cryptomining": true,
"Fingerprinting": true,
"Exceptions": []
}
}
}
转到:`/etc/ Firefox /policies/policies.json并重新启动Firefox。(您不必再单击“接受”任何内容,它们将自动安装。
答案XY-问题,不起作用:
这个脚本从manifest.json
文件中获取.xpi
文件的扩展名:(但是,如果我将.xpi
文件导出到:/home/<username>/snap/firefox/common/.mozilla/firefox/<profilename>.default/extensions
,它们不会自动安装。
#!/bin/bash
# Constants
#FIREFOX_PATH=~/.mozilla/firefox
FIREFOX_PATH=~/snap/firefox/common/.mozilla/firefox/
echo "FIREFOX_PATH=$FIREFOX_PATH"
FIREFOX_PROFILE=$(cat ${FIREFOX_PATH}/profiles.ini | grep "Path=" | cut -d= -f2)
echo "FIREFOX_PROFILE=$FIREFOX_PROFILE"
FIREFOX_PROFILE_PATH=${FIREFOX_PATH}/${FIREFOX_PROFILE}
#read -p "FIREFOX_PROFILE_PATH=$FIREFOX_PROFILE_PATH"
FIREFOX_EXT_PATH=${FIREFOX_PROFILE_PATH}/extensions
#FIREFOX_EXT_PATH=${FIREFOX_PATH}/extensions
echo "FIREFOX_EXT_PATH=$FIREFOX_EXT_PATH"
mkdir -p "$FIREFOX_EXT_PATH"
install_firefox_extensions () {
echo ">>> Installing Firefox extensions ..."
mkdir -p /tmp/firefox-install-extensions
cd /tmp/firefox-install-extensions
install_extension "uBlock"\
https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/addon-607454-latest.xpi
exit 5
install_extension "uMatrix"\
https://addons.mozilla.org/firefox/downloads/latest/umatrix/addon-613250-latest.xpi
install_extension "Vimperator"\
https://addons.mozilla.org/firefox/downloads/file/450078/vimperator-latest-fx.xpi
install_extension "Tab Groups"\
https://addons.mozilla.org/firefox/downloads/latest/tab-groups-panorama/addon-671381-latest.xpi
install_extension "Cookies Manager+"\
https://addons.mozilla.org/firefox/downloads/latest/cookies-manager-plus/addon-92079-latest.xpi
rm -rf /tmp/firefox-install-extensions
}
get_rhs_of_line_till_character() {
local line=$1
local character=$2
rhs=$(cut -d "$character" -f2- <<< "$line")
echo "$rhs"
}
get_extension_id(){
local keyword="$1"
local ext_uid=$(unzip -p addon.xpi manifest.json | grep "$keyword" | head -n 1)
# If not is None, get everything after:'"id": "' and drop last quotation and comma.
if [ "$ext_uid" != "" ]; then
local first_cut=$(get_rhs_of_line_till_character "$ext_uid" ":")
#echo "first_cut=$first_cut"
local second_cut=$(get_rhs_of_line_till_character "$first_cut" '"')
#echo "second_cut=$second_cut"
local trim_tail=${second_cut::-2}
#echo "trim_tail=$trim_tail"
echo "$trim_tail"
fi
}
manual_assert_file_exists() {
local filepath="$1"
if [ ! -f "$filepath" ]; then
echo "The file: $filepath does not exist."
exit 29
fi
}
install_extension () {
local ext_name=$1
local ext_url=$2
echo ">>> Installing ${ext_name} ..."
rm addon.xpi
wget --quiet -O addon.xpi "${ext_url}"
STATUS=$?
if [ $STATUS -ne 0 ]; then
echo ">>>> error downloading $ext_name"
fi
manual_assert_file_exists "addon.xpi"
local xpi_id=$(get_extension_id "id")
if [ "$xpi_id" == "" ]; then
xpi_id=$(get_extension_id "short_name")
fi
if [ "$xpi_id" == "" ]; then
echo "Error, did not find xpi-id for:$ext_name"
fi
echo "xpi_id=$xpi_id"
cp -f addon.xpi "${FIREFOX_EXT_PATH}/${xpi_id}.xpi"
unzip addon.xpi -d "${FIREFOX_EXT_PATH}/${xpi_id}"
}
install_firefox_extensions
#echo ">>>> changing default search to DuckDuckGo"
#while [ ! -f "$FIREFOX_PROFILE/search.json.mozlz4" ]
#do
# echo ">>>> waiting for search.json.mozlz4 to be created..."
# sleep 1
#done
https://stackoverflow.com/questions/72572010
复制相似问题