Firefox addon'u komut satırlarından komut dosyalarına nasıl yükleyebilirim?


25

Katılımsız betiğimi bazı Firefox addon ekleyerek geliştirmek istiyorum, ancak yolu bulamıyorum,

Birisi nasıl yapılacağını bulmak için yardımcı olabilir mi?

Örnek: (adblockPlus plugin yüklemek ve yeni bir varsayılan web sayfası ayarlamak istiyorum)

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

Şimdiden teşekkürler.


Eklentinin kurulumunu otomatikleştirmek için talimatlar eklendi, eğer bir betiğe ihtiyacınız varsa, bunun mümkün olduğunu bana bildirin.
Bruno Pereira

Bu şimdi çok güzel bir soruyum, çünkü şimdi CLI yolunu daha önce 10.04'te olduğu gibi Adblock paketini kurmanın yolunu bulmak için uğraşıyorum ve adblock-plus cadı 11.10 :( AND YES
Kangarooo

Yanıtlar:


25

Yöntemin kullanılması

gksudo firefox -install-global-extension addon-1865-latest.xpisenin için hile yapmak gibi görünüyor. Bu, uzantıyı sisteminizdeki tüm kullanıcılara yükler.

Uzantıyı yalnızca kullanıcınıza yüklemek için, uzantı yolunu bağımsız değişken olarak kullanın

firefox addon-1865-latest.xpi

Yine de Installbutona tıklamanız gerekiyor !

Kurulumu otomatikleştirme

Firefoxaddon dosya adına ihtiyaç duymaz, ancak addon'dan bir tanımlayıcı olarak paket ismi olarak tanımlayıcıya ihtiyaç duyar. Bu, kullanıcı müdahalesi olmadan bir addon yüklemeyi planlıyorsanız, onu addon adının değil, addon tanımlayıcı dizesinin adı olan bir klasöre çıkarmanız gerektiği anlamına gelir.

Tanımlayıcı dize bildirim dosyasını yüklemek addon ilk satırlarda bulunabilir install.rdfve şuna benzer: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. İçindeki her şey {}(kaşlı ayraçlar dahil) tanımlayıcıdır.

Bir addon'un çalışması için paketi çıkartmanız, dosyaları içeren klasörü addon tanımlayıcı dizisine yeniden adlandırmanız ve onu global addon klasörüne veya kullanıcı addon klasörüne yerleştirmeniz gerekir.

Genel addon kurulumu

Sisteminizdeki tüm kullanıcılara otomatik olarak bir uzantı yüklemek istiyorsanız, çıkartmanız gereken, firefoxeklentiyi içeren klasörü eklentinin id dizesine yeniden adlandırın ve onu genel uzantılar klasörüne kopyalayın /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/, orada kullandığınız her şey çağrılır. Bir kullanıcı açıldığında otomatik firefox.

Kullanıcıya özel kurulum

Bir uzantıyı sisteminizde yalnızca bir kullanıcıya otomatik olarak yüklemek istiyorsanız, çıkartmanız gereken, firefoxeklentiyi içeren klasörü eklentinin id dizesine yeniden adlandırın ve kullanıcı uzantıları klasörüne kopyalayın /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(yoksa oluşturun) Kullandığınız herhangi bir şey, bir kullanıcı açıldığında otomatik olarak çağrılır firefox.

Otomatik yükleme için bir addon nasıl hazırlanır - Örnek

extensionsEvinizde bir klasör oluşturun ve eklentiyi ona indirin

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

Çıkart ve orijinali sil

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

install.rdfEklentinin kimliğini almak için dosyadaki ilk satırı okuyun (bu durumda {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d} olacaktır). ve bu isimde bir klasör oluşturun.

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

extensionsKlasörünüzdeki tüm dosyaları yeni oluşturulan dosyaya taşıyın ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}ve {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}yerel yükleme veya genel yükleme için açıklandığı gibi klasörü taşıyarak yüklemeye hazırsınız .

Varsayılan giriş sayfası nasıl ayarlanır

Ana sayfanızı firefox içindeki tercihleri ​​kullanmadan değiştirmek için düzenlemelisiniz ~/.mozilla/firefox/*.default/prefs.js( kullanıcı için oluşturulmuş *.defaultbir klasör nerede ~/.mozilla/firefox) ve bu satırı sonuna ekleyin

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

veya bu komutu kullanarak

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

Kapattıktan sonra yapmanız gerekir, aksi halde firefoxprogram çıkıştaki ayarın üzerine yazacaktır.

Kullanıcınız firefoxhenüz kullanmadıysa ve tüm yeni kullanıcılar için ana sayfayı ayarlamak istiyorsanız (ana sayfayı genel olarak ayarla) bu komutu kullanın.

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

Sorunuz hakkında yorumlar

-silentyoksa, bu xpiuzantıyı yine de yüklemeniz istenir ve yüklemek için düğmeyi tıklatmanız gerekir;

-setDefaultBrowserana sayfanızı ayarlamaz firefox, varsayılan tarayıcınızı yapar


gksudo firefox -install-global-eklentisi addon-1865-latest.xpi sadece tüm yeni kullanıcılar içindir EXEPT Guest yes? Çünkü ben yaptım ve konuğumuzun hala eklentileri yok.
Kangarooo

install-global-extensionkullanımdan kaldırıldı.
Öğrenci

1
Sık sık uzantı sisteminin içsel işleyişini merak ettim, burada çok iyi bilgi, teşekkürler!
Madd0g

1
Eğer bir miktar addon'unuz varsa, FEBE addon'u kullanmanızı öneririm, tüm eklentilerinizi bir tanesine çıkaracak ve kodunuzun çoğunu basitleştirecektir: D
Ooker

2
İnstall.rdf dosyasının veya en azından içindeki kimliğin mutlaka WebExtensions'ta bulunmadığını düşünüyorum. Not, 2017'nin sonunda Firefox, WebExtensions dışındaki uzantıları destekleyecektir.
Forivin

4

Firefox'un farklı sürümlerinde, farklı şeyler çalıştığı ve hiçbir şey olmadığı için bu sorunludur. Yeni sürümler için .xpi dosyasını yeniden adlandırmanız <addon id>.xpive bir uzantı klasörüne yerleştirmeniz yeterlidir . Firefox'u daha sonra başlattığınızda, orada eklediğiniz tüm eklentilerin yüklenmesini kabul etmeniz istenecektir.

İşte hayatınızı kolaylaştıran bazı BASH işlevleri ..

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'u yükleyelim ..

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

Teşekkürler, bu şimdi sessiz bir kurulum için kullanmak için doğru yoldur
myol

2

Genel eklentiler varsayılan olarak etkin değildir ve etkinleştirilmeleri prefs.jsiçin bunları profillerindeki dosya listesine eklemeniz gerekir . Kitle konuşlandırmaları için büyük bir acı.

Burada bir demet terk ettiğinde için örnek bir senaryo prefs.jsağa istemci makinelerden kadar dosya ve değiştirilen IETabiçin IETab2vs. tercihlerini, göç,

Başka bir yol, bir kutuda sevdiğiniz bir kullanıcı profili oluşturmak, onu ağa yüklemek, ardından makinelerde klonlamak Firefox\defaults\profileve tüm yeni kullanıcılar bu profili devralacak.

'

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

Bazılarınız için bu kabuk betiği yardımcı olabilir. em:idEtiketin ilk oluşumunu ayrıştırır install.rdf( Bruno Pereira tarafından tanımlanmıştır ):

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

... size kimliği vererek (dahil {}).


1

Firefox eklentileri bir liner. Adblock Plus , FlashBlock ve Download Helper bu sırada indirilmiş, daha sonra bulunan firefoxtüm .xpidosyaları açıp bu .xpidosyaları kaldırarak :

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

Bruno'nun cevabını temel alan basit bir senaryo oluşturdum .

Mevcut kullanıcı için herhangi bir etkileşime ihtiyaç duymadan bir uzantı yükler . Yalnızca kendi numara Mozilla kullandığı ihtiyaç URL ilgili addons.mozilla.org . Komut dosyasını bir .sh dosyası olarak kaydedin ve aradığınızda sayıyı argüman olarak kullanın.

Test edilmiş ve üzerinde çalışan Linux Mint 17 ile Firefox 40 , sürümünüz olmadığını kontrol edin Firefox bir kaç kere değişmiştir beri aynı dizin yapısını kullanır.

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

Firefox'un en son sürümleri için prosedür çok basitleştirildi!

  1. halletmek extension.xpi
  2. oku applications.gecko.iddanmanifest.json
  3. yeniden adlandırma extension.xpiiçin<ID>.xpi
  4. Burada listelenen standart kurulum klasörlerinden birine kopyalayın
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.