Bagaimana cara menginstal addon Firefox dari baris perintah dalam skrip?


25

Saya ingin meningkatkan skrip tanpa pengawasan saya menambahkan beberapa addon Firefox, namun saya tidak dapat menemukan jalannya,

Adakah yang bisa membantu mencari tahu caranya?

Contoh: (Ingin menginstal plugin adblockPlus dan menetapkan halaman web default baru)

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

Terima kasih sebelumnya.


Petunjuk yang ditambahkan untuk mengotomatiskan pemasangan addon, jika Anda memerlukan skrip beri tahu saya, itu mungkin.
Bruno Pereira

Ini adalah pertanyaan yang bagus sekarang karena saya sekarang sedang berjuang untuk menemukan cara untuk menginstal CLI cara menginstal paket Adblock seperti sebelumnya pada 10,04 dengan hanya apt-get install adblock-plus penyihir tidak ada di 11,10 :( DAN YA- kita perlu skrip :)
Kangarooo

Jawaban:


25

Menggunakan metode Anda

gksudo firefox -install-global-extension addon-1865-latest.xpiSepertinya melakukan trik untuk Anda. Itu akan menginstal ekstensi untuk semua pengguna di sistem Anda.

Untuk menginstal ekstensi hanya untuk pengguna Anda gunakan jalur ekstensi sebagai argumen

firefox addon-1865-latest.xpi

Anda masih perlu mengklik Installtombolnya!

Mengotomatiskan instalasi

Firefoxtidak perlu nama file addon tetapi pengenal dari addon sebagai nama paket. Itu berarti bahwa jika Anda berencana menginstal addon tanpa intervensi pengguna, Anda perlu mengekstraknya ke folder dengan nama string pengenal addon, bukan nama addon.

Identifier string dapat ditemukan pada baris pertama dari addon instalasi file manifest install.rdfdan terlihat seperti ini: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. Segala sesuatu di dalam {}(termasuk kurung kurawal) adalah pengidentifikasi.

Agar addon berfungsi, Anda perlu mengekstrak paket, mengganti nama folder yang berisi file ke string pengenal addon dan menempatkannya di folder addon global atau di dalam folder addon pengguna.

Instalasi addon global

Jika Anda ingin menginstal ekstensi secara otomatis ke semua pengguna di sistem Anda, Anda perlu mengekstraknya, mengganti nama folder yang berisi addon ke string id addon dan menyalinnya ke firefoxfolder ekstensi global /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/, apa pun yang Anda gunakan di sana akan dipanggil otomatis ketika pengguna membuka firefox.

Instal khusus pengguna

Jika Anda ingin menginstal ekstensi secara otomatis ke hanya satu pengguna di sistem Anda, Anda perlu mengekstraknya, ganti nama folder yang berisi addon ke string id addon dan salin ke firefoxfolder ekstensi pengguna /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(buat jika tidak ada) , apa pun yang Anda gunakan di sana akan dipanggil secara otomatis ketika pengguna membuka firefox.

Cara menyiapkan addon untuk pemasangan otomatis - Contoh

Buat extensionsfolder di rumah Anda dan unduh add-in di dalamnya

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

Ekstrak dan hapus yang asli

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

Baca baris pertama dalam install.rdffile untuk mendapatkan id addon (dalam hal ini adalah {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}). dan buat folder dengan nama itu

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

Pindahkan semua file di extensionsfolder Anda ke yang baru dibuat ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}dan Anda siap menginstal dengan memindahkan {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}folder, seperti yang dijelaskan, untuk instalasi lokal atau untuk instalasi global.

Cara mengatur halaman beranda default

Untuk mengubah beranda Anda tanpa menggunakan preferensi di dalam firefox Anda harus mengedit ~/.mozilla/firefox/*.default/prefs.js(di mana *.defaultfolder di dalamnya ~/.mozilla/firefoxdibuat untuk pengguna Anda) dan tambahkan baris ini di akhir

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

atau menggunakan perintah ini

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

Anda harus melakukannya setelah menutup firefoxatau program akan menimpa pengaturan saat keluar.

Jika pengguna Anda belum digunakan firefoxdan Anda ingin mengatur beranda untuk semua pengguna baru (mengatur beranda secara global) gunakan perintah ini

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

Komentar tentang pertanyaan Anda

-silenttidak ada, Anda akan diminta untuk menginstal xpiekstensi itu dan Anda harus mengklik tombol untuk menginstalnya;

-setDefaultBrowsertidak akan mengatur beranda Anda, itu akan membuat firefoxperamban default Anda


gksudo firefox -install-global-extension addon-1865-latest.xpi membuat hanya untuk semua pengguna baru KECUALI Tamu ya? Couse saya lakukan dan tamu masih belum memiliki plugin.
Kangarooo

install-global-extensionsudah ditinggalkan.
pelajar

1
Saya sering bertanya-tanya tentang cara kerja sistem ekstensi, banyak info bagus di sini, terima kasih!
Madd0g

1
Jika Anda memiliki banyak addon, saya sarankan Anda menggunakan FEBE addon, itu akan mengekstraksi semua addon Anda menjadi satu dan menyederhanakan banyak kode Anda: D
Ooker

2
Saya pikir install.rdf atau setidaknya id di dalamnya belum tentu ada di WebExtensions. Catatan, pada akhir 2017 Firefox akan menghentikan dukungan untuk ekstensi selain WebExtensions.
Forivin

4

Ini bermasalah karena di berbagai versi Firefox, hal-hal yang berbeda berfungsi dan pada beberapa hal tidak berfungsi. Untuk versi yang lebih baru, Anda hanya perlu mengubah nama .xpi menjadi <addon id>.xpidan menempatkannya di folder ekstensi. Ketika Anda memulai firefox sesudahnya, Anda akan diminta untuk menerima instalasi semua addons yang Anda tambahkan di sana.

Berikut adalah beberapa fungsi BASH yang membuat hidup Anda lebih mudah ..

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
}

Mari kita instal Adblock ..

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

Terima kasih, ini sekarang jalur yang benar untuk digunakan untuk pemasangan diam
myol

2

Plugin global tidak diaktifkan secara default, dan Anda perlu menambahkannya ke daftar di prefs.jsfile di profil mereka agar dapat diaktifkan. Rasa sakit utama untuk penyebaran massal.

Berikut ini contoh skrip ketika kami membuang sekelompok prefs.jsfile dari mesin klien ke jaringan dan berubah dari IETabmenjadi IETab2, memigrasikan preferensi mereka, dll.

Cara lain adalah dengan membuat profil pengguna yang Anda sukai pada sebuah kotak, mengunggahnya ke jaringan, lalu mengkloningnya di mesin-mesin Firefox\defaults\profiledan semua pengguna baru akan mewarisi profil itu.

`

----------------------------------------------------------------------
#!/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

Bagi sebagian dari Anda, skrip shell ini mungkin bisa membantu. Ini mem-parsing kemunculan pertama em:idtag di install.rdf( dijelaskan oleh Bruno Pereira ):

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

... memberi Anda id (termasuk {}).


1

Pengaya Firefox satu liner. Adblock Plus , FlashBlock , dan Download Helper diunduh dalam urutan itu, lalu firefoxmembuka semua .xpifile yang ditemukan , lalu menghapus .xpifile - file itu:

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

Saya membuat skrip sederhana berdasarkan jawaban Bruno .

Itu menginstal ekstensi untuk pengguna saat ini tanpa interaksi apa pun yang diperlukan. Anda hanya perlu nomor yang digunakan Mozilla di URL-nya di addons.mozilla.org . Simpan skrip sebagai file .sh dan gunakan nomor tersebut sebagai argumen saat Anda menyebutnya.

Diuji dan bekerja pada Linux Mint 17 dengan Firefox 40 , pastikan untuk memeriksa apakah versi Firefox Anda menggunakan struktur direktori yang sama karena mereka mengubahnya beberapa kali.

#!/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



0

Untuk versi terbaru Firefox, prosedurnya telah banyak disederhanakan!

  1. Unzip extension.xpi
  2. Baca applications.gecko.iddarimanifest.json
  3. Ganti nama extension.xpimenjadi<ID>.xpi
  4. Salin ke salah satu folder instalasi standar yang tercantum di sini
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.