스크립트의 명령 행에서 Firefox 애드온을 설치하는 방법은 무엇입니까?


25

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

미리 감사드립니다.


스크립트가 필요한 경우 애드온 설치를 자동화하는 지침이 추가되었습니다.
Bruno Pereira

메신저 지금은 단지 apt-get을 11.10에서 애드 블록 플러스 마녀 나던 존재를 설치 :( 우리가 :) 스크립트를 필요 네 -와 10.04에 이전으로 애드 블록 패키지를 설치 CLI 방식과 방법을 찾아 strugling 때문에 지금은 좋은 질문입니다
Kangarooo

답변:


25

당신의 방법을 사용하여

gksudo firefox -install-global-extension addon-1865-latest.xpi당신을 위해 속임수를 쓰는 것 같습니다. 그러면 시스템의 모든 사용자에게 확장 기능이 설치됩니다.

사용자에 대해서만 확장을 설치하려면 확장 경로를 인수로 사용하십시오.

firefox addon-1865-latest.xpi

그래도 Install버튼 을 클릭해야합니다 !

설치 자동화

Firefox애드온 파일 이름이 필요하지 않지만 애드온의 식별자는 패키지 이름으로 사용됩니다. 즉, 사용자 개입없이 애드온을 설치하려는 경우 애드온 이름이 아닌 애드온 식별자 문자열이있는 폴더로 추출해야합니다.

식별자 문자열은 애드온 설치 매니페스트 파일의 첫 번째 줄에서 찾을 수 있으며 install.rdf다음과 같습니다 <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>. {}중괄호를 포함하여 모든 것이 식별자입니다.

애드온이 작동하도록하려면 패키지를 추출하고 파일이 들어있는 폴더의 이름을 애드온 식별자 문자열로 바꾸고 전역 애드온 폴더 나 사용자 애드온 폴더에 배치해야합니다.

글로벌 애드온 설치

시스템의 모든 사용자에게 확장을 자동으로 설치하려면 확장을 추출하고, 애드온이 포함 된 폴더의 이름을 애드온의 id 문자열로 바꾸고 firefox전역 확장 폴더에 복사하십시오. /usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/사용하는 모든 것이 호출됩니다. 사용자가 열 때 자동 firefox.

사용자 별 설치

시스템의 한 사용자에게만 확장을 자동으로 설치하려면 확장을 추출하고, 애드온이 포함 된 폴더의 이름을 애드온의 ID 문자열로 바꾸고 firefox사용자 확장 폴더에 복사하십시오 /home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(없는 경우 작성) , 사용자가 열면 사용하는 모든 것이 자동으로 호출됩니다 firefox.

자동 설치를 위해 애드온을 준비하는 방법-예

extensions집에 폴더를 만들고 그 안에 애드온을 다운로드하십시오

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를 얻으십시오 (이 경우 {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 Guest 예? 왜냐하면 나는 그것을했고 손님은 여전히 ​​플러그인이 없습니다.
Kangarooo

install-global-extension더 이상 사용되지 않습니다.
학습자

1
나는 종종 확장 시스템의 내부 작동에 대해 궁금해했습니다. 여기에 좋은 정보가 많이 있습니다. 감사합니다!
Madd0g

1
애드온이 많은 경우 FEBE 애드온을 사용하는 것이 좋습니다. 모든 애드온을 하나로 추출하고 코드를 단순화합니다. D
Ooker

2
install.rdf 또는 적어도 내부 ID가 WebExtensions에 반드시 존재하지는 않습니다. 2017 년 말까지 Firefox는 WebExtensions 이외의 확장에 대한 지원을 중단합니다.
Forivin

4

다른 버전의 Firefox에서는 다른 기능이 작동하고 아무 것도 작동하지 않기 때문에 문제가됩니다. 최신 버전의 경우 .xpi의 이름을 바꾸고 <addon id>.xpi확장 폴더에 배치하면됩니다. 나중에 파이어 폭스를 시작하면 거기에 추가 한 모든 애드온 설치를 수락하라는 메시지가 표시됩니다.

인생을 더 편하게 만들어주는 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

여러분 중 일부에게는이 쉘 스크립트가 도움이 될 것입니다. ( Bruno Pereira에 의해 설명 된)em:id 에서 태그 의 첫 항목을 구문 분석합니다 .install.rdf

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

... 아이디를 제공합니다 (포함 {}).


1

파이어 폭스 애드온 하나의 라이너. Adblock Plus , FlashBlock다운로드 도우미 가 순서대로 다운로드 된 다음 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

Bruno의 답변을 기반으로 간단한 스크립트를 만들었습니다 .

상호 작용없이 현재 사용자 를 위한 확장을 설치 합니다. 당신은 자신의 숫자 모질라의 사용이 필요 URL 에들 addons.mozilla.org . 스크립트를 .sh 파일 로 저장하고 호출 할 때 숫자를 인수로 사용하십시오.

테스트 및 작업 리눅스 민트 (17)파이어 폭스 (40) , 버전인지 확인해야합니다 파이어 폭스 가 몇 번을 주위에 변화하기 때문에 같은 디렉토리 구조를 사용합니다.

#!/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 최신 버전의 경우 절차가 많이 단순화되었습니다!

  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.