スクリプトのコマンドラインからFirefoxアドオンをインストールする方法は?


25

Firefoxアドオンを追加して無人スクリプトを改善したいのですが、方法が見つかりません。

誰かが方法を見つけるのを助けることができますか?

例:(adblockPlusプラグインをインストールし、新しいデフォルトWebページを設定したい)

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

前もって感謝します。


アドオンのインストールを自動化する手順を追加しました。スクリプトが必要な場合は、可能であれば教えてください。
ブルーノペレイラ

イムは、今CLI道にちょうど11.10でadblockのダウンロードプラス魔女のdoesntのが存在をインストールapt-getをして10.04に以前のように自分好みのパッケージをインストールする方法を見つけるためにstrugling :( AND YES-ので、これは:)私たちはスクリプトが必要になりました素晴らしい質問です
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

ユーザー固有のインストール

システムの1人のユーザーのみに拡張機能を自動的にインストールする場合は、それを抽出する必要があります。アドオンを含むフォルダーの名前をアドオンの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 yes?私はそれをやったので、ゲストにはまだプラグインがありません。
カンガルー

install-global-extension非推奨です。
学習者

1
拡張機能システムの内部の仕組みについてよく疑問に思います。ここにはたくさんの良い情報があります、ありがとう!
Madd0g 14年

1
多数のアドオンがある場合は、FEBEアドオンを使用することをお勧めします。すべてのアドオンを1つに抽出し、コードの大部分を簡素化します。D
Ooker 14

2
install.rdfまたは少なくともその中のidは、必ずしもWebExtensionsに存在するとは限りません。2017年末までに、FirefoxはWebExtensions以外の拡張機能のサポートを終了することに注意してください。
フォービン

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

皆さんの中には、このシェルスクリプトが役立つ場合があります。(Bruno Pereiraによって記述された)でem:idタグの最初の出現を解析します:install.rdf

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

... IDを提供します(を含む{})。


1

Firefoxアドオン1つのライナー。 Adblock PlusFlashBlock、および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ファイルとして保存し、呼び出すときに引数として番号を使用します。

Firefox 40を使用したLinux Mint 17でテストおよび動作している場合、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



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.