たまにはブログっぽく書いてみてもいいかな、とかなんとか。
ここ最近 NXWine への DirectX や .NET Framework なんかの設定をしているのですが色々と限界です。単純に DirectX のダイナミックライブラリを展開して配置するのは問題ないけど inf の適用とかが複雑。アプリケーションによっては System32 以下にダイナミックライブラリがあればいいだけで済むものもあるけどなんだかなぁ、と。
DirectX のインストール時に悩むのが quartz.dll。これは DirectX 9.0c Feb 2010 まで dxnt.cab が内蔵されていてそこから取り出すことができる。ただ、dxsetup.exe を実行したときに dxnt.cab の中身は展開されないので手動でインストールしなくてはならない。
一番最初の DirectX 9.0c と思われるもので試した場合は dxnt.cab の中身しか存在しないのできちんと展開される。ただしこの一番最初の 9.0c が Microsoft には既に無く、色々探してみても oldversion.com くらいしか見つからなかった。
http://www.oldversion.com/windows/directx-9-0c
DirectX 関連のインストーラーは展開→インストールという流れになっていて、/Q
スイッチと /T:<full path>
をスイッチを用いることで非対話モードで任意のディレクトリに展開できる。展開された dxsetup.exe には /silent
スイッチが用意されていてこちらも非対話モードでインストールができる。
wine directx-9-0c-directx_9c_redist.exe /Q /T:c:\\windows\\temp\\dx90c; wine c:\\windows\\temp\\dx90c\\dxsetup.exe /silent
Windows 以下にインストールされるファイルは以下の通り。
windows/DirectX.log windows/Driver Cache/i386/bdaplgin.ax windows/Driver Cache/i386/bdasup.sys windows/Driver Cache/i386/ccdecode.sys windows/Driver Cache/i386/ipsink.ax windows/Driver Cache/i386/ks.sys windows/Driver Cache/i386/ksolay.ax windows/Driver Cache/i386/ksproxy.ax windows/Driver Cache/i386/kstvtune.ax windows/Driver Cache/i386/ksuser.dll windows/Driver Cache/i386/kswdmcap.ax windows/Driver Cache/i386/ksxbar.ax windows/Driver Cache/i386/mpe.sys windows/Driver Cache/i386/msdv.sys windows/Driver Cache/i386/msdvbnp.ax windows/Driver Cache/i386/mskssrv.sys windows/Driver Cache/i386/mspclock.sys windows/Driver Cache/i386/mspqm.sys windows/Driver Cache/i386/mstee.sys windows/Driver Cache/i386/msyuv.dll windows/Driver Cache/i386/nabtsfec.sys windows/Driver Cache/i386/ndisip.sys windows/Driver Cache/i386/pid.dll windows/Driver Cache/i386/psisdecd.dll windows/Driver Cache/i386/psisrndr.ax windows/Driver Cache/i386/slip.sys windows/Driver Cache/i386/stream.sys windows/Driver Cache/i386/streamip.sys windows/Driver Cache/i386/swenum.sys windows/Driver Cache/i386/wstcodec.sys windows/help/dxdiag.chm windows/inf/bda.inf windows/inf/ccdecode.inf windows/inf/dxbda.inf windows/inf/dxdllreg.inf windows/inf/ks.inf windows/inf/kscaptur.inf windows/inf/ksfilter.inf windows/inf/mpe.inf windows/inf/nabtsfec.inf windows/inf/ndisip.inf windows/inf/slip.inf windows/inf/streamip.inf windows/inf/wstcodec.inf windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/amstream.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/d3d8.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/d3d8thk.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/d3dim.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/d3dim700.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/d3dpmesh.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/d3dramp.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/d3drm.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/d3dxof.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/ddraw.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/ddrawex.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/devenum.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/diactfrm.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dimap.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dinput.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dinput8.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dmband.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dmcompos.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dmime.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dmloader.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dmscript.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dmstyle.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dmsynth.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dmusic.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dplaysvr.exe windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dplayx.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpmodemx.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpnaddr.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpnet.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpnhpast.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpnhupnp.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpnlobby.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpnsvr.exe windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpvacm.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpvoice.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpvsetup.exe windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpvvox.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dpwsockx.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dsdmo.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dsdmoprp.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dsound.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dsound3d.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dswave.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dx7vb.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dx8vb.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dxapi.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dxdiag.exe windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dxdllreg.exe windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dxxp.cat windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/dxxp.inf windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/encapi.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/gcdef.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/joy.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/ks.inf windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/ks.sys windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/kscaptur.inf windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/ksfilter.inf windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/ksolay.ax windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/ksproxy.ax windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/ksuser.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/mciqtz32.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/mpg2splt.ax windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/msdmo.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/mskssrv.sys windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/mspclock.sys windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/mspqm.sys windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/mstee.sys windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/mswebdvd.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/pid.xpg windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/qasf.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/qcap.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/qdv.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/qdvd.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/qedit.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/qedwipes.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/quartz.dll windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/stream.sys windows/RegisteredPackages/{44BBA855-CC51-11CF-AAFA-00AA00B6015C}/swenum.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/bda.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/bdaplgin.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/bdasup.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/ccdecode.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/ccdecode.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/dx9bda.cat windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/dxbda.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/ipsink.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/kstvtune.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/kswdmcap.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/ksxbar.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/mpe.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/mpe.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/mpeg2data.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/msdvbnp.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/msvidctl.dll windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/msyuv.dll windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/nabtsfec.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/nabtsfec.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/ndisip.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/ndisip.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/psisdecd.dll windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/psisrndr.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/slip.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/slip.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/streamip.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/streamip.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/vbisurf.ax windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/wstcodec.inf windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/wstcodec.sys windows/RegisteredPackages/{AA936DF4-2B08-4B1F-B071-72192E287704}/wstdecod.dll windows/system32/amstream.dll windows/system32/bdaplgin.ax windows/system32/d3d8.dll windows/system32/d3d8thk.dll windows/system32/d3d9.dll windows/system32/d3dim700.dll windows/system32/d3dpmesh.dll windows/system32/d3dramp.dll windows/system32/d3drm.dll windows/system32/d3dxof.dll windows/system32/ddraw.dll windows/system32/ddrawex.dll windows/system32/devenum.dll windows/system32/diactfrm.dll windows/system32/dimap.dll windows/system32/dinput.dll windows/system32/dinput8.dll windows/system32/DLLCache/amstream.dll windows/system32/DLLCache/d3d8.dll windows/system32/DLLCache/d3d8thk.dll windows/system32/DLLCache/d3dim.dll windows/system32/DLLCache/d3dim700.dll windows/system32/DLLCache/d3dpmesh.dll windows/system32/DLLCache/d3dramp.dll windows/system32/DLLCache/d3drm.dll windows/system32/DLLCache/d3dxof.dll windows/system32/DLLCache/ddraw.dll windows/system32/DLLCache/ddrawex.dll windows/system32/DLLCache/devenum.dll windows/system32/DLLCache/diactfrm.dll windows/system32/DLLCache/dimap.dll windows/system32/DLLCache/dinput.dll windows/system32/DLLCache/dinput8.dll windows/system32/DLLCache/dmband.dll windows/system32/DLLCache/dmcompos.dll windows/system32/DLLCache/dmime.dll windows/system32/DLLCache/dmloader.dll windows/system32/DLLCache/dmscript.dll windows/system32/DLLCache/dmstyle.dll windows/system32/DLLCache/dmsynth.dll windows/system32/DLLCache/dmusic.dll windows/system32/DLLCache/dplaysvr.exe windows/system32/DLLCache/dplayx.dll windows/system32/DLLCache/dpmodemx.dll windows/system32/DLLCache/dpnaddr.dll windows/system32/DLLCache/dpnet.dll windows/system32/DLLCache/dpnhpast.dll windows/system32/DLLCache/dpnhupnp.dll windows/system32/DLLCache/dpnlobby.dll windows/system32/DLLCache/dpnsvr.exe windows/system32/DLLCache/dpvacm.dll windows/system32/DLLCache/dpvoice.dll windows/system32/DLLCache/dpvsetup.exe windows/system32/DLLCache/dpvvox.dll windows/system32/DLLCache/dpwsockx.dll windows/system32/DLLCache/dsdmo.dll windows/system32/DLLCache/dsdmoprp.dll windows/system32/DLLCache/dsound.dll windows/system32/DLLCache/dsound3d.dll windows/system32/DLLCache/dswave.dll windows/system32/DLLCache/dx7vb.dll windows/system32/DLLCache/dx8vb.dll windows/system32/DLLCache/dxapi.sys windows/system32/DLLCache/dxdiag.exe windows/system32/DLLCache/gcdef.dll windows/system32/DLLCache/joy.cpl windows/system32/DLLCache/mciqtz32.dll windows/system32/DLLCache/mpg2splt.ax windows/system32/DLLCache/msdmo.dll windows/system32/DLLCache/msvidctl.dll windows/system32/DLLCache/mswebdvd.dll windows/system32/DLLCache/pid.dll windows/system32/DLLCache/qasf.dll windows/system32/DLLCache/qcap.dll windows/system32/DLLCache/qdv.dll windows/system32/DLLCache/qdvd.dll windows/system32/DLLCache/qedit.dll windows/system32/DLLCache/qedwipes.dll windows/system32/DLLCache/quartz.dll windows/system32/DLLCache/wstdecod.dll windows/system32/dmband.dll windows/system32/dmcompos.dll windows/system32/dmime.dll windows/system32/dmloader.dll windows/system32/dmscript.dll windows/system32/dmstyle.dll windows/system32/dmsynth.dll windows/system32/dmusic.dll windows/system32/dplaysvr.exe windows/system32/dplayx.dll windows/system32/dpmodemx.dll windows/system32/dpnet.dll windows/system32/dpnhpast.dll windows/system32/dpnhupnp.dll windows/system32/dpnsvr.exe windows/system32/dpvacm.dll windows/system32/dpvoice.dll windows/system32/dpvsetup.exe windows/system32/dpvvox.dll windows/system32/dpwsockx.dll windows/system32/drivers/bdasup.sys windows/system32/drivers/ccdecode.sys windows/system32/drivers/dxapi.sys windows/system32/drivers/ks.sys windows/system32/drivers/mpe.sys windows/system32/drivers/msdv.sys windows/system32/drivers/mskssrv.sys windows/system32/drivers/mspclock.sys windows/system32/drivers/mspqm.sys windows/system32/drivers/mstee.sys windows/system32/drivers/nabtsfec.sys windows/system32/drivers/ndisip.sys windows/system32/drivers/slip.sys windows/system32/drivers/stream.sys windows/system32/drivers/streamip.sys windows/system32/drivers/swenum.sys windows/system32/drivers/wstcodec.sys windows/system32/dsdmo.dll windows/system32/dsdmoprp.dll windows/system32/dsound.dll windows/system32/dsound3d.dll windows/system32/dswave.dll windows/system32/dx7vb.dll windows/system32/dx8vb.dll windows/system32/dxdiag.exe windows/system32/dxdiagn.dll windows/system32/dxdllreg.exe windows/system32/encapi.dll windows/system32/gcdef.dll windows/system32/ipsink.ax windows/system32/ksolay.ax windows/system32/ksproxy.ax windows/system32/kstvtune.ax windows/system32/ksuser.dll windows/system32/kswdmcap.ax windows/system32/ksxbar.ax windows/system32/l3codecx.ax windows/system32/mciqtz32.dll windows/system32/mpeg2data.ax windows/system32/mpg2splt.ax windows/system32/msdmo.dll windows/system32/msdvbnp.ax windows/system32/msvidctl.dll windows/system32/mswebdvd.dll windows/system32/msyuv.dll windows/system32/pid.dll windows/system32/psisdecd.dll windows/system32/psisrndr.ax windows/system32/qasf.dll windows/system32/qcap.dll windows/system32/qdv.dll windows/system32/qdvd.dll windows/system32/qedit.dll windows/system32/qedwipes.dll windows/system32/quartz.dll windows/system32/vbisurf.ax windows/system32/wstdecod.dll
quartz.dll などいくつかのファイルはライブラリのオーバーライド設定後に regsvr32 での登録が必要。
(多分いらないと思うけど)joy.cpl は DirectX 9 シリーズには同梱されていない。DirectX 8.1 の dxnt.cab には存在するが、英語版が既に存在しない。Wine 環境は SysLangID=0x0409
(英語)となっているため日本語版を使おうとすると DXLangID=0x0411
となりインストールできない。
あと System32/DirectX/Dinput
以下に入るはずの *.png や *.ini はいずれの場合もインストールされないが、dxnt.cab にある dimaps.inf を読み込めば適切に配置してくれる。Windows XP にはいずれのファイルもあるっぽいけど実際に必要なのかどうかはわからない。
んで .NET Framework。デフォルトでは wine-mono が .NET アプリケーションを動かすのに使われる。なのでネイティブな .NET Framework を入れようとしてもうまくいかないことがある。これは /f
スイッチや /repair
スイッチを使うことで再インストール扱いにできる(詳しくは /?
参照)。
1.1、3.5、4.0 で試してみたところ 3.5 と 4.0 はなんとかいけそうだけど 1.1 はエラーが出るので怪しい。
3.5 のフル版は何もしないとまた大容量のファイルをダウンロードしようとする。これは /lang:enu
というスイッチを用いることで回避できる(それかネットワークをオフラインにしておけばいい)。インストールにはかなり時間がかかり、完了後も最適化とかでしばらく wine が動き続ける。
4.0 のフル版は数分程度で終わる。
というメモ。