Làm cách nào để cài đặt Firefox addon từ dòng lệnh trong script?


25

Tôi muốn cải thiện tập lệnh không giám sát của mình bằng cách thêm một số addon Firefox, tuy nhiên tôi không thể tìm thấy cách,

Ai đó có thể giúp để tìm hiểu làm thế nào để?

Ví dụ: (Muốn cài đặt plugin adblockPlus và đặt trang web mặc định mới)

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

Cảm ơn trước.


Đã thêm hướng dẫn để tự động cài đặt một addon, nếu bạn cần một đoạn script hãy cho tôi biết, nó có thể.
Bruno Pereira

Đây là một câu hỏi rất hay vì bây giờ tôi đang cố gắng tìm cách cài đặt gói Adblock như trước đây vào ngày 10.04 chỉ với apt-get install adblock-plus không tồn tại trong 11.10 :( VÀ CÓ - chúng tôi cần tập lệnh :)
Kangarooo

Câu trả lời:


25

Sử dụng phương pháp của bạn

gksudo firefox -install-global-extension addon-1865-latest.xpidường như để làm cho các mẹo cho bạn. Điều đó sẽ cài đặt tiện ích mở rộng cho tất cả người dùng trên hệ thống của bạn.

Để chỉ cài đặt tiện ích mở rộng cho người dùng của bạn, hãy sử dụng đường dẫn tiện ích mở rộng làm đối số

firefox addon-1865-latest.xpi

Bạn vẫn cần phải nhấp vào Installnút mặc dù!

Tự động cài đặt

Firefoxkhông cần tên tệp addon mà là định danh từ addon làm tên gói. Điều đó có nghĩa là nếu bạn dự định cài đặt một addon mà không có sự can thiệp của người dùng, bạn cần trích xuất nó vào một thư mục có tên của chuỗi định danh addon, không phải tên của addon.

Chuỗi định danh có thể được tìm thấy trên các dòng đầu tiên của tệp kê khai cài đặt addon install.rdfvà nó trông như thế này : <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Tất cả mọi thứ trong {}(bao gồm cả dấu ngoặc nhọn) là định danh.

Để có một addon hoạt động, bạn cần giải nén gói, đổi tên thư mục chứa các tệp thành chuỗi định danh addon và đặt nó vào thư mục addon toàn cầu hoặc trong thư mục addon người dùng.

Cài đặt addon toàn cầu

Nếu bạn muốn tự động cài đặt tiện ích mở rộng cho tất cả người dùng trong hệ thống của mình, bạn cần giải nén nó, đổi tên thư mục chứa addon thành chuỗi id của addon và sao chép nó vào firefoxthư mục tiện ích mở rộng toàn cầu /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/, mọi thứ bạn sử dụng sẽ được gọi lên tự động khi người dùng mở firefox.

Cài đặt cụ thể của người dùng

Nếu bạn muốn tự động cài đặt tiện ích mở rộng cho chỉ một người dùng trong hệ thống của mình, bạn cần giải nén nó, đổi tên thư mục chứa addon thành chuỗi id của addon và sao chép nó vào firefoxthư mục tiện ích mở rộng người dùng /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(tạo nó nếu không tồn tại) , mọi thứ bạn sử dụng sẽ được gọi tự động khi người dùng mở firefox.

Cách chuẩn bị một addon để cài đặt tự động - Ví dụ

Tạo một extensionsthư mục trong nhà của bạn và tải addon vào nó

mkdir ~/extensions
cd ~/extensions
wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi

Giải nén nó và xóa bản gốc

unzip ~/extensions/addon-1865-latest.xpi
rm ~/extensions/addon-1865-latest.xpi

Đọc dòng đầu tiên trong install.rdftệp để nhận id của addon (trong trường hợp này sẽ là {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}). và tạo một thư mục có tên đó

mkdir ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

Di chuyển tất cả các tệp trong extensionsthư mục của bạn vào tệp mới tạo ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}và bạn đã sẵn sàng cài đặt bằng cách di chuyển {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}thư mục, như được mô tả, cho cài đặt cục bộ hoặc cho cài đặt toàn cầu.

Cách đặt trang chủ mặc định

Để thay đổi trang chủ của bạn mà không sử dụng các tùy chọn bên trong firefox, bạn phải chỉnh sửa ~/.mozilla/firefox/*.default/prefs.js(nơi *.defaultmột thư mục bên trong ~/.mozilla/firefoxđược tạo cho người dùng của bạn) và thêm dòng này vào cuối của nó

user_pref("browser.startup.homepage", "http://uptechtalk.com");

hoặc sử dụng lệnh này

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

Bạn cần thực hiện sau khi đóng firefoxhoặc chương trình sẽ ghi đè cài đặt khi thoát.

Nếu người dùng của bạn chưa sử dụng firefoxvà bạn muốn đặt trang chủ cho tất cả người dùng mới (đặt trang chủ trên toàn cầu), hãy sử dụng lệnh này

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

Nhận xét về câu hỏi của bạn

-silentkhông tồn tại, bạn sẽ được nhắc cài đặt xpitiện ích mở rộng đó và bạn phải nhấp vào nút để cài đặt nó;

-setDefaultBrowsersẽ không đặt trang chủ của bạn, nó sẽ làm cho firefoxtrình duyệt mặc định của bạn


gksudo firefox -install-global-extension addon-1865-muộn.xpi chỉ dành cho tất cả người dùng mới EXEPT Khách có? Couse tôi đã làm điều đó và khách vẫn không có plugin.
Kangarooo

install-global-extensionbị phản đối
người học

1
Tôi thường tự hỏi về hoạt động bên trong của hệ thống tiện ích mở rộng, rất nhiều thông tin tốt ở đây, cảm ơn!
Madd0g

1
Nếu bạn có một loạt addon, tôi khuyên bạn nên sử dụng addon FEBE, nó sẽ trích xuất tất cả các addon của bạn thành một và đơn giản hóa phần lớn mã của bạn: D
Ooker

2
Tôi nghĩ rằng install.rdf hoặc ít nhất là id bên trong nó không nhất thiết phải có trong WebExtensions. Lưu ý, vào cuối năm 2017 Firefox sẽ bỏ hỗ trợ cho các tiện ích mở rộng khác ngoài WebExtensions.
Forivin

4

Đây là vấn đề vì trong các phiên bản khác nhau của Firefox, những thứ khác nhau hoạt động và ở một số thứ không hoạt động. Đối với các phiên bản mới hơn, bạn chỉ cần đổi tên .xpi thành <addon id>.xpivà đặt nó vào thư mục tiện ích mở rộng. Khi bạn bắt đầu firefox sau đó, bạn sẽ được yêu cầu chấp nhận cài đặt tất cả các addon bạn đã thêm vào đó.

Dưới đây là một số chức năng BASH giúp cuộc sống của bạn dễ dàng hơn ..

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
}

Hãy cài đặt Adblock ..

wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
install_addon addon-1865-latest.xpi "$EXTENSIONS_USER"

Cảm ơn, đây là đường dẫn chính xác để sử dụng cho cài đặt im lặng
myol

2

Các plugin toàn cầu không được bật theo mặc định và bạn cần thêm chúng vào danh sách trong prefs.jstệp trong hồ sơ của chúng để chúng được bật. Một nỗi đau lớn cho việc triển khai hàng loạt.

Đây là một tập lệnh mẫu khi chúng ta kết xuất một loạt các prefs.jstệp từ các máy khách lên mạng và thay đổi từ IETabthành IETab2, di chuyển tùy chọn của chúng, v.v.

Một cách khác là tạo một hồ sơ người dùng mà bạn thích trên một hộp, tải nó lên mạng, sau đó sao chép nó trên các máy Firefox\defaults\profilevà tất cả người dùng mới sẽ thừa hưởng hồ sơ đó.

`

----------------------------------------------------------------------
#!/bin/bash

pjsbase="/data/M_drive/Temp/prefsjs"

for userf in `find ${pjsbase} -maxdepth 1 -type f -name *.prefs.js -printf "%f\n"`
do
  echo ${userf}
  # add in IETab2 GUID and remove IETab GUID
  grep extensions.enabledItems ${pjsbase}/${userf} | 
  /bin/sed 's/\")/\,\{1BC9BA34-1EED-42ca-A505-6D2F1A935BBB\}\:2\.12\.21\.1\")/' | 
  /bin/sed 's/{77b819fa-95ad-4f2c-ac7c-486b356188a9}:1.5.20090525,//' > \
     ${pjsbase}/tmp1
  /bin/sed 's/0\.3\.8\.[0-9]*/0\.3\.8\.4/g' ${pjsbase}/tmp1 > ${pjsbase}/tmp
  /bin/sed /extensions.enabledItems/d ${pjsbase}/${userf}   > ${pjsbase}/tmp2
  cat ${pjsbase}/tmp2 > ${pjsbase}/${userf}.new2
  cat ${pjsbase}/tmp >> ${pjsbase}/${userf}.new2
  # add in IETab2 preferences
  echo user_pref\(\"extensions.ietab2.hasRun\"\,\ true\)\; >> \
     ${pjsbase}/${userf}.new2
  echo user_pref\(\"extensions.ietab2.ietab2PrefsMigrated\"\,\ true\)\; >> \
     ${pjsbase}/${userf}.new2
  echo user_pref\(\"extensions.ietab2.prefsMigrated\"\,\ true\)\; >> \
     ${pjsbase}/${userf}.new2
  echo user_pref\(\"extensions.ietab2.version\"\,\ \"2.12.21.1\"\)\; >> \
     ${pjsbase}/${userf}.new2
  echo user_pref\(\"extensions.update.notifyUser\"\,\ false\)\; >> \
     ${pjsbase}/${userf}.new2
  # if they have a preference list then migrate it
  if [ ! `grep user_pref\(\"ietab.filterlist\" ${pjsbase}/${userf} |
          wc -l` -eq 0 ]; then
    echo "user_pref(\"extensions.ietab2.filterlist"$(
       grep user_pref\(\"ietab.filterlist\" ${pjsbase}/${userf} | 
       sed 's/user\_pref(\"ietab\.filterlist//')"" >> ${pjsbase}/${userf}.new2
  fi
  # make sure prefs are alphabetised
  egrep -v ^u > ${pjsbase}/${userf}.new ${pjsbase}/${userf}.new2
  egrep ^u  ${pjsbase}/${userf}.new2 | sort >> ${pjsbase}/${userf}.new
done

`


1

Đối với một số bạn kịch bản shell này có thể hữu ích. Nó phân tích cú pháp xuất hiện đầu tiên của em:idthẻ trong install.rdf( được mô tả bởi Bruno Pereira ):

#!/bin/sh
var=`grep -m 1 -e em:id install.rdf`   
var=${var#*\>}
var=${var%<*}

... cung cấp cho bạn id (bao gồm cả {}).


1

Firefox bổ trợ một lớp lót. Adblock Plus , FlashBlockTrình trợ giúp tải xuống được tải xuống theo thứ tự đó, sau đó firefoxmở tất cả .xpicác tệp tìm thấy , sau đó xóa các .xpitệp đó:

wget \ 
 https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi \ 
 https://addons.mozilla.org/firefox/downloads/latest/433/addon-433-latest.xpi \
 https://addons.mozilla.org/firefox/downloads/latest/3006/addon-3006-latest.xpi && 
firefox *.xpi && rm *.xpi

0

Tôi đã tạo ra một kịch bản đơn giản dựa trên câu trả lời của Bruno .

Nó cài đặt một phần mở rộng cho người dùng hiện tại mà không cần bất kỳ sự tương tác nào. Bạn chỉ cần số Mozilla sử dụng trong URL của họ trên addons.mozilla.org . Lưu tập lệnh dưới dạng tệp .sh và sử dụng số làm đối số khi bạn gọi nó.

Đã thử nghiệm và hoạt động trên Linux Mint 17 với Firefox 40 , hãy chắc chắn kiểm tra xem phiên bản Firefox của bạn có sử dụng cùng cấu trúc thư mục hay không vì chúng đã thay đổi nó một vài lần.

#!/bin/bash
extensionnumber=$1

# find profile dir (first profile in the ini file)
profiledir=`sed -n -e 's/^.*Path=//p' ${HOME}/.mozilla/firefox/profiles.ini | 
            head -n 1`
extensiondir="${HOME}/.mozilla/firefox/${profiledir}/extensions/"

if [ -z "$profiledir" ]; then
    printf "Can't find profile directory."
    exit 1
fi

mkdir /tmp/extension
cd /tmp/extension || exit $?

upstream=""https://addons.mozilla.org/firefox/downloads/latest"

# get extension and unzip
wget -O extension.xpi \
  "${upstream}/${extensionnumber}/addon-${extensionnumber}-latest.xpi" || 
  exit $?
unzip extension.xpi && rm extension.xpi

# get extension id from installation file
extensionid=`grep -m 1 -e em:id install.rdf`   
extensionid=${extensionid#*\>}
extensionid=${extensionid%<*}

# move all files to the directory with the right id
mkdir $extensionid || exit $?
shopt -s extglob dotglob
mv !($extensionid) $extensionid/
shopt -u dotglob

# create new firefox extension dir (if it's a clean install) 
# and move the extension
mkdir -p "${extensiondir}"
mv "${extensionid}" "${extensiondir}"

rmdir /tmp/extension
printf "Installed extension."
exit 0

số lượng cho điều này là những gì addons.mozilla.org/en-US/firefox/addon/vimium-ff
alhelal


0

Đối với các phiên bản Firefox mới nhất, quy trình đã được đơn giản hóa rất nhiều!

  1. Giải nén extension.xpi
  2. Đọc applications.gecko.idtừmanifest.json
  3. Đổi tên extension.xpithành<ID>.xpi
  4. Sao chép vào một trong các thư mục cài đặt tiêu chuẩn được liệt kê ở đây
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.