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
前もって感謝します。
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
をデフォルトのブラウザにします
これは、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"
グローバルプラグインはデフォルトでは有効になっていません。有効にするには、プロファイルの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
`
一部のユーザーにとって、このシェルスクリプトは役に立つかもしれません。 em:id
で最初に出現するinstall.rdf
タグを解析します( Bruno Pereiraによる記述 ):
#!/bin/sh
var=`grep -m 1 -e em:id install.rdf`
var=${var#*\>}
var=${var%<*}
... IDを提供します({}
を含む)。
Firefoxアドオン1つのライナー。 Adblock Plus、FlashBlock、および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
Firefoxの最新バージョンでは、手順が大幅に簡素化されました!
extension.xpi
を解凍しますapplications.gecko.id
からmanifest.json
を読むextension.xpi
の名前を<ID>.xpi
に変更します完全を期すため、私は http://bernaerts.dyndns.org/linux/74-ubuntu/271-ubuntu-firefox-Thunderbird-addon-commandline で非常によく文書化された別のスクリプトを見つけました。ブルーノペレイラが彼の答えで提案したとおりです。
Bruno's answer に基づいて簡単なスクリプトを作成しました。
現在のユーザーの拡張機能をインストールします。対話は必要ありません。 MozillaがURLsaddons.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