トップ 検索 一覧 差分 ソース ヘルプ RSS ログイン

FirefoxPortableと各種プラグイン

(2010/06/27)Flash Player 10.1に関して追記しました。

Firefox Portableと各種プラグイン

猫PはFirefox Portable Edition日本語版)を使用している。で、Flash Playerの最新版やWindows Media Player Firefox Pluginを手動で無理矢理インストールする場合のメモ。拡張機能ではないので、xpiで簡単には入れられない。

これらプラグインは、普通の手順を追うとそれらの専用インストーラを使うことになる。ところがこれらのインストーラはレジストリからFirefoxの位置を検出するため、Portable Editionはいないものとされてしまう。つまり、普通にインストールができない。

この対処法は主に2つで、

  1. Portableなのにレジストリにインストール位置を記述する
  2. 手動でインストールする

のどちらかだ。多分前者の方がスマートなのだが、今回は敢えて後者を選択してみた。

 Flash Playerを手動で無理矢理インストール

確認したFlash Playerのバージョンは9.0.124.0。Firefoxのバージョンは3.0。

まずは、Firefoxがないものと見なされたままでかまわないので、Flash Playerのインストーラでインストールしてしまう。すると、C:\Windows\System32\Macromed\FlashあたりにNPSWF32.dllというファイルがインストールされる(Flash8/9で同様とのこと)。このファイルがFirefoxのプラグインそのものなので、FirefoxPortable\App\firefox\pluginsにコピーするだけだ。

ただし、これでポータブル性が保たれるかは検証していない。が、Dependency Walkerで見てみた限り、依存関係はOSに通常存在するファイルのみであり、NPSWF32.dll以外に必要なファイルはなさそう

一応Dependency Walkerで取得した直接読み込むモジュールのリスト

  • c:\windows\system32\ADVAPI32.DLL
  • c:\windows\system32\COMDLG32.DLL
  • c:\windows\system32\CRYPT32.DLL
  • c:\windows\system32\GDI32.DLL
  • c:\windows\system32\KERNEL32.DLL
  • c:\windows\system32\OLE32.DLL
  • c:\windows\system32\OLEAUT32.DLL
  • c:\windows\system32\RPCRT4.DLL
  • c:\windows\system32\SHELL32.DLL
  • c:\windows\system32\USER32.DLL
  • c:\windows\system32\VERSION.DLL
  • c:\windows\system32\WININET.DLL
  • c:\windows\system32\WINMM.DLL
  • c:\windows\system32\WS2_32.DLL

(2008/07/08追記)下記のWMPプラグインと同様に、7-Zip等でインストーラを解凍することでもNPSWF32.dllは得られる。確認してないが、多分こちらでも大丈夫。

(2010/06/27追記)Flash Player 10.1ではインストーラを7-zipで展開する方法は使用できなくなった。下記参照。なお、インストーラは通常のインストールページ選択的インストールページの他、「Flash Player レスキュー!」(FAQ)のインストール時に問題が発生したらから取得できる。このページはインストールができない(Windows)からもリンクされている。

 Adobe Flash Player 10.1(2010/06/27追記)

Flash Player 10.1では様々なバグフィックスや機能の充実化が図られた。特定の機能を使用しているH.264ストリームのデコードバグも修正されているとの噂なので、是非ともアップデートを行ないたいところだろう。しかし、Adobeはこのバージョンから、Firefoxで使用可能なFlashプラグインのインストーラを変更している。このため、Flash Player 10.1には上記の7-zipで展開して強引にインストールする方法は使用できない。展開しても.rsrc等のファイルが展開されるだけで、これらを更に7-zipで展開することは出来ない。

では、どうするか。一般的に言えば、冒頭に述べている通り、一度通常のインストーラを使用してシステムにインストールを行ない、システムにインストールされたものからコピーするのが本来の手筈だ。

しかし、世の中には他にもFirefox Portableでのインストールに困ってる人が沢山存在し、それらを助けてくれる人もまた存在する。つまり、以下のサイトで2010/06/25現在最新である、10.1.53.64のNPSWF32.DLLが配布されている。

おそらく前者のサイトでは、今後のアップデートにも追従するものと思われる。

なお、公式でない場所で配布されているものを使用することには若干のリスクがあることを警告しておきたい。まぁ、そもそもFirefox Portable自体、公式なものとは言い難いが。

上級者向け参考情報

この新しいインストーラでは、問題のNPSWF32.DLLはインストーラの実行ファイル(install_flash_player.exe)そのもののリソース領域に格納されている。実行ファイルのリソースを扱えるようなツールを使用すると、このデータを取り出すことが可能だ。

ただし、リソース内でのデータの格納場所は一定であるとは限らない。どのデータがNPSWF32.DLLに当たるかを特定するには、ある程度の勘が必要になる。

さらに、無事データを取り出せたとしても、このデータには圧縮処理がなされている。恐らく圧縮アルゴリズム的には一般的なものを使用しているだろうが、ヘッダが既存のアーカイバや圧縮ツールとは異なるため、一般的なツールでは展開することができないだろう。つまり、最終的なNPSWF32.DLLを使用可能な状態で得るためには、このデータの形式を解析し、展開するツールを作成しなければならない。筆者の見た限りではLZMA系(恐らくLZMA2系)ではないかと思われるのだが、少し試してみた限りでは展開することはできなかった。

この方法はあまりにも一般的なレベルを超越しており、最終的な展開方法も判明していないため、参考情報として掲載することとした。

 Windows Media Player Firefox Pluginをインストール

Windows Media Player Firefox Pluginも手動で無理矢理インストールしてみた。確認したプラグインは2007/04/13発行のもの。Firefoxのバージョンは3.0。

上記サイトからwmpfirefoxplugin.exeをダウンロードし、7-Zip等で強制的にインストーラを解凍していく。パス的に表現すると、wmpfirefoxplugin.exe/ffplugin.msi/ffPlugin.cab/NPMSWMPdllが本体だ。Flashの場合と同様、FirefoxPortable\App\firefox\pluginsにコピーする。この際、NPMSWMPdllをNPMSWMP.dllと、拡張子を正しく分離してやればOK。

インストーラには他にも多くのファイルが含まれており、それらの必要性がなのだが、これで動いてるのでよしとしている。動作検証はイインダヨ!でどうぞ。

なお、こちらのDLLの依存性は確認してないのでPortable性にこだわる方は注意されたい。

 PortableAppsでは…(2009.06.30追記)

一応、Mozilla Firefox, Portable Editionのサポートページにプラグインに関する記述があります。あまり役に立ちませんが。

 Microsoft Silverlightをインストール

Microsoft Silverlightは、大雑把に言えばMicrosoft版のShockwave / Flashだと思っていい。実際にはもっと様々な用途が考えられているが、Firefoxとの絡みで言えば、現状ではそのくらいにしか当たらない。Yahoo!動画ニュースGyaoで採用されているため、既に目にしている方もいるだろう。

実は、Silverlightに関してはシステム(OS)に対してSilverlightをインストールしてしまえば、普通に見られるようになったりする。が、Portableを使いたい環境ではシステムにインストールは出来ないケースもあることだろう。そこで、Firefox Portableに無理矢理インストールする方法を紹介する。確認したSilverlightはバージョンは不明(3.0.50106.0か?)だが、2010/01/06に発行されたもので、2010/03/22時点で最新のものだ。

これもWindows Media Playerと同様、Sliverlightのインストーラ(Silverlight.exe)を7-zipで次々に展開していけば必要なファイルは手に入る。パス的に表現すると、Silverlight.exe/silverlight.7z/Silverlight.msp/PCW_CAB_Silver以下のファイルがそれだ。なお、アーカイバによってはPCW_CAB_Silverは出現せず、直接最終ファイル群が展開されるかも知れない。

ただし、Silverlightは他のプラグインのように少数のファイルでは構成されておらず、かつこれらの展開されたファイルはファイル名が変形されており、動作させるためには一手間必要だ。入手したSilverlight.exeでは、以下のファイルが含まれていたが、それらは本来のファイル名とは異なっている。本来のファイル名に関してはhow install silverlightに情報があった。

展開されたファイル名 正式なパス・ファイル名
coreclrDLL coreclr.dll
coreDLL agcore.dll
ctrlDLL npctrl.dll
ctrlResourceDLL npctrlUI.dll
manifestXML slr.dll.managed_manifest
microsoftvisualbasicDLL Microsoft.VisualBasic.dll
microsoftvisualbasic_deDLL de\Microsoft.VisualBasic.resources.dll
microsoftvisualbasic_esDLL es\Microsoft.VisualBasic.resources.dll
microsoftvisualbasic_frDLL fr\Microsoft.VisualBasic.resources.dll
microsoftvisualbasic_itDLL it\Microsoft.VisualBasic.resources.dll
microsoftvisualbasic_jaDLL ja\Microsoft.VisualBasic.resources.dll
microsoftvisualbasic_koDLL ko\Microsoft.VisualBasic.resources.dll
microsoftvisualbasic_zh_hansDLL zh-Hans\Microsoft.VisualBasic.resources.dll
microsoftvisualbasic_zh_hantDLL zh-Hant\Microsoft.VisualBasic.resources.dll
mscorlibDLL mscorlib.dll
mscorlib_deDLL de\mscorlib.resources.dll
mscorlib_esDLL es\mscorlib.resources.dll
mscorlib_frDLL fr\mscorlib.resources.dll
mscorlib_itDLL it\mscorlib.resources.dll
mscorlib_jaDLL ja\mscorlib.resources.dll
mscorlib_koDLL ko\mscorlib.resources.dll
mscorlib_zh_hansDLL zh-Hans\mscorlib.resources.dll
mscorlib_zh_hantDLL zh-Hant\mscorlib.resources.dll
mscorrcDLL mscorrc.dll
mscorrc_deDLL de\mscorrc.dll
mscorrc_esDLL es\mscorrc.dll
mscorrc_frDLL fr\mscorrc.dll
mscorrc_itDLL it\mscorrc.dll
mscorrc_jaDLL ja\mscorrc.dll
mscorrc_koDLL ko\mscorrc.dll
mscorrc_zh_hansDLL zh-Hans\mscorrc.dll
mscorrc_zh_hantDLL zh-Hant\mscorrc.dll
silverlightconfigurationEXE Silverlight.Configuration.exe
silverlightconfigurationuiDLL Silverlight.ConfigurationUI.dll
System.WindowsDLL System.Windows.dll
systemcoreDLL System.Core.dll
systemDLL system.dll
systemnetDLL System.Net.dll
systemruntimeserializationDLL System.Runtime.Serialization.dll
systemservicemodelDLL System.ServiceModel.dll
systemservicemodelwebDLL System.ServiceModel.Web.dll
systemwindowsbrowserDLL System.Windows.Browser.dll
systemxmlDLL System.Xml.dll
system_deDLL de\system.resources.dll
system_esDLL es\system.resources.dll
system_frDLL fr\system.resources.dll
system_itDLL it\system.resources.dll
system_jaDLL ja\system.resources.dll
system_koDLL ko\system.resources.dll
system_zh_hansDLL zh-Hans\system.resources.dll
system_zh_hantDLL zh-Hant\system.resources.dll

この表に従って正式なパス・ファイル名にリネーム・移動した後、FirefoxPortable\App\firefox\pluginsに置いてやればひとまずOKだ。

ただし、上記のファイルの中には必ずしも必要ではないと思われるファイルが含まれている。簡単に調査してみているので、これに関しては後ほど追記したい。

最終更新時間:2010年06月27日 12時29分03秒