วิธีการติดตั้ง Firefox addon จากบรรทัดคำสั่งในสคริปต์?


25

ฉันต้องการปรับปรุงสคริปต์แบบอัตโนมัติของฉันโดยเพิ่ม Addon Firefox บางตัว แต่ฉันไม่สามารถหาวิธีได้

มีคนช่วยหาวิธีได้ไหม

ตัวอย่าง: (ต้องการติดตั้งปลั๊กอิน adblockPlus และตั้งค่าหน้าเว็บเริ่มต้นใหม่)

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

ขอบคุณล่วงหน้า.


เพิ่มคำแนะนำในการติดตั้ง Addon แบบอัตโนมัติโดยอัตโนมัติหากคุณต้องการสคริปต์แจ้งให้เราทราบเป็นไปได้
Bruno Pereira

นี่เป็นคำถามที่ยอดเยี่ยมตั้งแต่ตอนนี้ที่ฉันพยายามดิ้นรนเพื่อหาวิธีติดตั้งแพคเกจ Adblock ก่อนหน้านี้ใน 10.04 ด้วยการติดตั้ง adblock-plus แม่มดที่ไม่มีอยู่ใน 11.10 :( และใช่เราต้องการสคริปต์ :)
Kangarooo

คำตอบ:


25

ใช้วิธีการของคุณ

gksudo firefox -install-global-extension addon-1865-latest.xpiดูเหมือนว่าจะทำเคล็ดลับสำหรับคุณ ที่จะติดตั้งส่วนขยายให้กับผู้ใช้ทั้งหมดในระบบของคุณ

หากต้องการติดตั้งส่วนขยายสำหรับผู้ใช้ของคุณเท่านั้นให้ใช้เส้นทางส่วนขยายเป็นอาร์กิวเมนต์

firefox addon-1865-latest.xpi

คุณยังต้องคลิกInstallปุ่ม!

ทำการติดตั้งแบบอัตโนมัติ

Firefoxไม่ต้องการชื่อไฟล์ addon แต่ตัวระบุจาก addon เป็นชื่อแพคเกจ นั่นหมายความว่าหากคุณวางแผนที่จะติดตั้ง addon โดยที่ผู้ใช้ไม่ต้องดำเนินการใด ๆ คุณต้องแตกไฟล์นั้นไปยังโฟลเดอร์ที่มีชื่อของสตริงตัวระบุ addon ไม่ใช่ชื่อของ addon

สตริงตัวระบุสามารถพบได้ในบรรทัดแรกของ addon ไฟล์การติดตั้งอย่างชัดแจ้งและจะมีลักษณะเช่นนี้install.rdf <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>ทุกอย่างภายใน{}(รวมถึงเครื่องหมายปีกกา) เป็นตัวระบุ

ในการรับ Addon ให้ทำงานคุณต้องแตกไฟล์ออกให้เปลี่ยนชื่อโฟลเดอร์ที่มีไฟล์ไปยังสตริงตัวระบุ addon และวางไว้ในโฟลเดอร์ addon ส่วนกลางหรือภายในโฟลเดอร์ addon ของผู้ใช้

การติดตั้งระดับโลก

หากคุณต้องการติดตั้งส่วนขยายโดยอัตโนมัติให้กับผู้ใช้ทุกคนในระบบของคุณที่คุณต้องการแยกให้เปลี่ยนชื่อโฟลเดอร์ที่มี addon ไปยังสตริง id ของ addon และคัดลอกไปยังfirefoxโฟลเดอร์ส่วนขยายทั่วโลก/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/สิ่งที่คุณใช้ที่นั่นจะถูกเรียก firefoxโดยอัตโนมัติเมื่อผู้ใช้เปิด

การติดตั้งเฉพาะผู้ใช้

หากคุณต้องการติดตั้งส่วนขยายโดยอัตโนมัติให้กับผู้ใช้เพียงคนเดียวในระบบของคุณที่คุณต้องการแยกให้เปลี่ยนชื่อโฟลเดอร์ที่มี addon ไปยังสตริง id ของ addon และคัดลอกไปยังfirefoxโฟลเดอร์ส่วนขยายผู้ใช้/home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(สร้างถ้าไม่มี) firefoxอะไรที่คุณใช้จะมีการเรียกขึ้นโดยอัตโนมัติเมื่อผู้ใช้เปิด

วิธีเตรียม addon สำหรับการติดตั้งอัตโนมัติ - ตัวอย่าง

สร้างextensionsโฟลเดอร์ในบ้านของคุณและดาวน์โหลด addon เข้าไป

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

แตกและลบต้นฉบับ

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

อ่านบรรทัดแรกในinstall.rdfไฟล์เพื่อรับ id ของ addon (ในกรณีนี้มันจะเป็น {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}) และสร้างโฟลเดอร์ด้วยชื่อนั้น

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

ย้ายไฟล์ทั้งหมดในextensionsโฟลเดอร์ของคุณไปยังไฟล์ที่สร้างขึ้นใหม่~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}และคุณพร้อมที่จะติดตั้งโดยการย้าย{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}โฟลเดอร์ตามที่อธิบายไว้สำหรับการติดตั้งในระบบหรือสำหรับการติดตั้งทั่วโลก

วิธีการตั้งค่าหน้าแรกเริ่มต้น

ในการเปลี่ยนหน้าแรกของคุณโดยไม่ต้องใช้การตั้งค่าภายใน Firefox คุณต้องแก้ไข~/.mozilla/firefox/*.default/prefs.js(ซึ่ง*.defaultเป็นโฟลเดอร์ภายในที่~/.mozilla/firefoxสร้างขึ้นสำหรับผู้ใช้ของคุณ) และเพิ่มบรรทัดนี้ไปยังส่วนท้ายของมัน

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

หรือใช้คำสั่งนี้

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

คุณต้องทำหลังจากปิดfirefoxโปรแกรมหรือโปรแกรมจะเขียนทับการตั้งค่าเมื่อออก

หากผู้ใช้ของคุณยังไม่ได้ใช้firefoxและคุณต้องการตั้งค่าโฮมเพจสำหรับผู้ใช้ใหม่ทั้งหมด (ตั้งค่าโฮมเพจทั้งหมด) ใช้คำสั่ง

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

ความคิดเห็นเกี่ยวกับคำถามของคุณ

-silentไม่มีอยู่คุณจะได้รับแจ้งให้ติดตั้งxpiส่วนขยายนั้นและคุณต้องคลิกปุ่มเพื่อติดตั้ง

-setDefaultBrowserจะไม่ตั้งค่าหน้าแรกของคุณ แต่จะทำให้firefoxเบราว์เซอร์เริ่มต้นของคุณ


gksudo firefox -install-global-extension addon-1865-latest.xpi สร้างขึ้นสำหรับผู้ใช้ใหม่ทั้งหมดเท่านั้น EXEPT บุคคลทั่วไปใช่หรือไม่ ฉันเคยทำแบบนี้แล้วแขกก็ยังไม่มีปลั๊กอิน
Kangarooo

install-global-extensionเลิกใช้แล้ว
ผู้เรียน

1
ฉันมักจะสงสัยเกี่ยวกับการทำงานภายในของระบบส่วนขยายข้อมูลที่ดีมากมายที่นี่ขอบคุณ!
Madd0g

1
หากคุณมีแอดออนมากมายผมแนะนำให้คุณใช้ FEBE แอดออนมันจะแยกส่วนเสริมทั้งหมดของคุณให้เป็นหนึ่งเดียวและทำให้โค้ดของคุณง่ายขึ้นมาก: D
Ooker

2
ฉันคิดว่า install.rdf หรืออย่างน้อย id ภายในนั้นไม่จำเป็นต้องมีอยู่ใน WebExtensions หมายเหตุภายในสิ้นปี 2560 Firefox จะยกเลิกการสนับสนุนส่วนขยายอื่น ๆ นอกเหนือจาก WebExtensions
Forivin

4

นี่เป็นปัญหาเนื่องจาก Firefox รุ่นต่าง ๆ ทำงานต่างกันและทำงานอะไรไม่ได้เลย สำหรับรุ่นที่ใหม่กว่าคุณเพียงแค่เปลี่ยนชื่อ. xpi <addon id>.xpiและนำไปไว้ในโฟลเดอร์ส่วนขยาย เมื่อคุณเริ่ม Firefox หลังจากนั้นคุณจะถูกขอให้ยอมรับการติดตั้งส่วนเสริมทั้งหมดที่คุณเพิ่มเข้าไป

นี่คือฟังก์ชั่น BASH ที่ทำให้ชีวิตของคุณง่ายขึ้น ..

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 กันเถอะ

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

ขอบคุณตอนนี้เป็นเส้นทางที่ถูกต้องที่จะใช้สำหรับการติดตั้งแบบเงียบ
myol

2

ปลั๊กอินส่วนกลางจะไม่เปิดใช้งานโดยค่าเริ่มต้นและคุณต้องเพิ่มปลั๊กอินเหล่านั้นในรายการในprefs.jsไฟล์ในโปรไฟล์เพื่อให้สามารถเปิดใช้งานได้ ความเจ็บปวดที่สำคัญสำหรับการใช้งานจำนวนมาก

ต่อไปนี้เป็นสคริปต์ตัวอย่างสำหรับเมื่อเราทิ้งprefs.jsไฟล์จำนวนมากจากเครื่องไคลเอนต์ไปยังเครือข่ายและเปลี่ยนจากIETabเป็นIETab2โอนย้ายการตั้งค่าของพวกเขา ฯลฯ

อีกวิธีหนึ่งคือการสร้างโปรไฟล์ผู้ใช้ที่คุณชอบในกล่องอัปโหลดไปยังเครือข่ายจากนั้นทำการโคลนในเครื่องFirefox\defaults\profileและผู้ใช้ใหม่ทั้งหมดจะได้รับโปรไฟล์นั้น

`

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

สำหรับบางท่านเชลล์สคริปต์นี้อาจมีประโยชน์ มันแยกวิเคราะห์การเกิดขึ้นครั้งแรกของem:idแท็กในinstall.rdf( อธิบายโดย Bruno Pereira ):

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

... ให้รหัสแก่คุณ (รวมถึง{})


1

ส่วนเสริมของ Firefox หนึ่งซับ Adblock Plus , FlashBlockและDownload Helper ที่ดาวน์โหลดตามลำดับจากนั้นในการfirefoxเปิด.xpiไฟล์ที่พบทั้งหมดจากนั้นลบ.xpiไฟล์เหล่านั้น:

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

ฉันสร้างสคริปต์ง่ายที่ขึ้นอยู่กับคำตอบของบรูโน่

มันติดตั้งส่วนขยายสำหรับผู้ใช้ปัจจุบันโดยไม่ต้องมีการโต้ตอบใด ๆ คุณต้องใช้หมายเลข Mozilla ที่ใช้ในURLของพวกเขาที่addons.mozilla.orgเท่านั้น บันทึกสคริปต์เป็นไฟล์. shและใช้หมายเลขเป็นอาร์กิวเมนต์เมื่อคุณเรียกมัน

ผ่านการทดสอบและทำงานกับLinux Mint 17กับFirefox 40โปรดตรวจสอบว่าFirefoxเวอร์ชันของคุณใช้โครงสร้างไดเรกทอรีเดียวกันหรือไม่เนื่องจากพวกเขาเปลี่ยนแปลงไปหลายครั้ง

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

ตัวเลขสำหรับaddons.mozilla.org/en-US/firefox/addon/vimium-ff
alhelal


0

สำหรับ Firefox เวอร์ชั่นล่าสุดขั้นตอนนั้นง่ายขึ้นมาก!

  1. เปิดเครื่องรูด extension.xpi
  2. อ่านapplications.gecko.idจากmanifest.json
  3. เปลี่ยนชื่อextension.xpiเป็น<ID>.xpi
  4. คัดลอกไปยังหนึ่งในโฟลเดอร์การติดตั้งมาตรฐานที่ระบุไว้ที่นี่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.