Scriptlerde komut satırından Firefox addon nasıl yüklenir?

21

Katılımsız komut dosyamı bazı Firefox eklentileri ekleyerek geliştirmek istiyorum, ancak yolu bulamıyorum,

Birisi nasıl yapılacağını öğrenmeye yardımcı olabilir mi?

Örnek: (adblockPlus eklentisini yüklemek ve yeni bir varsayılan web sayfası kurmak istiyorsanız)

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.

    
sordu glococo 29.10.2011 11:25

7 cevap

24

Metodunuzu kullanma

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

Uzantıyı yalnızca kullanıcı için yüklemek için uzantı yolunu argüman olarak kullanın

firefox addon-1865-latest.xpi

Yine de Install düğmesini tıklamanız gerekiyor!

Yüklemeyi otomatikleştirme

Firefox , addon dosya adına değil, addon'daki tanımlayıcıya paket adı olarak ihtiyaç duymaz. Bu, kullanıcı müdahalesi olmadan bir eklenti yüklemeyi planlıyorsanız, eklentinin adı değil, addon tanımlayıcı dizesinin adıyla bir klasöre çıkarmanız gerektiği anlamına gelir.

Tanımlayıcı dizesi, addon yükleme bildirim dosyası install.rdf 'nin ilk satırlarında bulunabilir ve şuna benziyor: <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id> . % Co_de% içindeki her şey (küme parantezleri dahil) tanımlayıcıdır.

Çalışmaya bir eklenti almak için paketi ayıklamanız gerekir, dosyaları içeren klasörü addon tanımlayıcı dizesine yeniden adlandırın ve onu global addon klasörüne veya kullanıcı eklenti klasörüne yerleştirin.

Genel addon kurulumu

Sisteminizdeki tüm kullanıcılara otomatik olarak bir uzantı yüklemek isterseniz, onu ayıklamanız gerekir, addon'u içeren klasörü addon'un id dizesine yeniden adlandırın ve {} global uzantı klasörüne kopyalayın firefox , Kullanmakta olduğunuz her şey bir kullanıcı /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ açtığında otomatik çağrılır.

Kullanıcıya özel yükleme

Eğer sisteminizde sadece bir kullanıcıya otomatik olarak bir uzantı yüklemek isterseniz, onu ayıklamanız gerekir, addon'u içeren klasörü addon'ın id dizesine yeniden adlandırın ve firefox kullanıcı uzantıları klasörüne kopyalayın firefox (eğer mevcut değilse oluştur), bir kullanıcı, /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ açıldığında otomatik olarak çağrılır.

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

Evinizde firefox klasörünü oluşturun ve eklentiyi indirin

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

Ayıkla ve orijinali sil

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

Addon öğesinin kimliğini almak için extensions dosyasındaki ilk satırı okuyun (bu durumda {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d} olacaktır). ve bu ada sahip bir klasör oluşturun

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

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

Varsayılan ana sayfa nasıl ayarlanır

Ana sayfanızı firefox içindeki tercihleri ​​kullanmadan değiştirmek için {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d} dosyasını düzenleyin (burada ~/.mozilla/firefox/*.default/prefs.js , kullanıcı için *.default dosyasının içinde bir klasördür) 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

Bunu ~/.mozilla/firefox 'yi kapattıktan sonra yapmanız gerekiyor ya da program çıkıştaki ayarın üzerine yazacaktır.

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

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

Sorunuz hakkındaki yorumlar

firefox mevcut değil, -silent uzantısını yine de yüklemeniz istenecek ve yüklemek için bu düğmeyi tıklamanız gerekiyor;

xpi ana sayfanızı ayarlamayacak, -setDefaultBrowser varsayılan tarayıcınızı yapacak

    
verilen cevap Bruno Pereira 29.10.2011 12:10
3

Bu, Firefox'un farklı sürümlerinde farklı şeyler çalıştığı ve bazılarının hiçbir işe yaramadığı için sorun teşkil etmektedir. Daha yeni sürümler için .xpi'yi <addon id>.xpi olarak yeniden adlandırmanız ve bir uzantı klasörüne yerleştirmeniz yeterlidir. Daha sonra firefox'u başlattığınızda, orada eklediğiniz tüm eklentilerin kurulumunu 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  install.rdf | egrep '<em:id>' -m 1'
    addon_id='echo $addon_id_line | sed "s/.*>\(.*\)<.*//"'
    echo "$addon_id"
}

get_addon_name_from_xpi () { #path to .xpi file
    addon_name_line='unzip -p  install.rdf | egrep '<em:name>' -m 1'
    addon_name='echo $addon_name_line | sed "s/.*>\(.*\)<.*//"'
    echo "$addon_name"
}

# Installs .xpi given by relative path
# to the extensions path given
install_addon () {
    xpi="${PWD}/"
    extensions_path=
    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"
    
verilen cevap Pithikos 23.12.2015 14:21
2

Global eklentiler varsayılan olarak etkin değildir ve etkinleştirilmeleri için bunları profillerinde prefs.js dosyasındaki listeye eklemeniz gerekir. Kitlesel dağıtımlar için büyük bir acı.

İşte, istemci bilgisayarlardan ağa prefs.js bir dosya koyduktan ve IETab ile IETab2 arasında değiştirdiğimizden, tercihlerini vb. değiştirdiğimiz için örnek bir komut dosyası.

Başka bir yol, bir kutuda beğendiğiniz bir kullanıcı profili oluşturmak, ağa yüklemek, daha sonra Firefox\defaults\profile 'de makineler arasında kopyalamak ve tüm yeni kullanıcılar bu profili devralır.

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

    
verilen cevap Andrew 21.03.2013 18:30
1

Bazılarınız için bu kabuk betiği yardımcı olabilir. % Co_de% etiketinin ilk oluşumunu em:id olarak ayrıştırır (Bruno Pereira tarafından açıklanan ):

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

... kimliğini size verir ( install.rdf dahil).

    
verilen cevap Equanox 11.08.2015 23:33
1

Firefox eklentileri bir astar. Adblock Plus , İndirme Aracı ve İndirme Yardımcılarını İndir , bu sırayla indirilir, sonra firefox bulunan tüm .xpi dosyalarını açar ve .xpi dosya:

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
    
verilen cevap Kangarooo 14.05.2012 19:21
0

Bruno'nun cevabı temel alınarak basit bir komut dosyası oluşturdum.

Herhangi bir etkileşim gerektirmeden geçerli kullanıcı için bir uzantı yükler. Yalnızca, addons.mozilla.org adresindeki URL adreslerinde Mozilla kullanım numaralarına ihtiyacınız var. Komut dosyasını bir .sh dosyası olarak kaydedin ve numarayı aradığınızda argüman olarak kullanın.

Firefox 40 ile Linux Nane 17 üzerinde test edildi ve çalışıyor, Firefox sürümünüzün aynı dizin yapısını kullanıp kullanmadığını kontrol edin. birkaç kez değiştirdiler.

#!/bin/bash
extensionnumber=

# 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
    
verilen cevap arne 08.09.2015 22:02
0

Tamlık için, İşte başka bir çok iyi belgelenmiş bir komut dosyası buldum. temelde Bruno Pereira'nun cevabında önerdiği şeyi yapıyor.

    
verilen cevap balu 06.12.2017 23:47

Etiketlerdeki diğer soruları oku