トップ 検索 一覧 ヘルプ RSS ログイン

FirefoxPortableと各種プラグインの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
(2010/06/27)Flash Player 10.1に関して追記しました。

!!!Firefox Portableと各種プラグイン

猫Pは[Firefox Portable Edition|http://portableapps.com/apps/internet/firefox_portable]([日本語版|http://portableapps.com/apps/internet/firefox_portable/localization])を使用している。
で、[Flash Player|http://www.adobe.com/jp/products/flashplayer/]の最新版や[Windows Media Player Firefox Plugin|http://port25.technet.com/pages/windows-media-player-firefox-plugin-download.aspx]を手動で無理矢理インストールする場合のメモ。拡張機能ではないので、xpiで簡単には入れられない。

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

この対処法は主に2つで、
+Portableなのにレジストリにインストール位置を記述する
+手動でインストールする
のどちらかだ。
多分前者の方がスマートなのだが、今回は敢えて後者を選択してみた。

!!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で展開する方法は使用できなくなった。下記参照。なお、インストーラは[通常のインストールページ|http://get.adobe.com/jp/flashplayer/]や[選択的インストールページ|http://get.adobe.com/jp/flashplayer/otherversions/]の他、「Flash Player レスキュー!」(FAQ)の[インストール時に問題が発生したら|http://kb2.adobe.com/jp/cps/229/229980.html#step3]から取得できる。このページは[インストールができない(Windows)|http://kb2.adobe.com/jp/cps/235/235943.html]からもリンクされている。

!!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が配布されている。

*[PortableAppZ|http://portableappz.blogspot.com/] - [Firefox 3.6.4のページ|http://portableappz.blogspot.com/2010/06/firefox-364-multilingual-37-alpha-5-en.html]
*[Flash 10.1 final for portable browsers - PCR's notepad|http://notepad.patheticcockroach.com/718/flash-10-1-final-for-portable-browsers/]

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

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

!上級者向け参考情報

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

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

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

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

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

[Windows Media Player Firefox Plugin|http://port25.technet.com/pages/windows-media-player-firefox-plugin-download.aspx]も手動で無理矢理インストールしてみた。確認したプラグインは2007/04/13発行のもの。Firefoxのバージョンは3.0。

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

インストーラには他にも多くのファイルが含まれており、それらの必要性が''謎''なのだが、これで動いてるのでよしとしている。動作検証は[イインダヨ!|http://www.kirin.co.jp/about/toku/ad/greenlabel/index.html]でどうぞ。

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

!!PortableAppsでは…(2009.06.30追記)
一応、[Mozilla Firefox, Portable Editionのサポートページ|http://portableapps.com/support/firefox_portable#plugins]にプラグインに関する記述があります。あまり役に立ちませんが。

!!Microsoft Silverlightをインストール

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

実は、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|http://portableapps.com/node/14188]に情報があった。

,展開されたファイル名,正式なパス・ファイル名
,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だ。

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