64bit版ドライバのインストーラを作ってみたけど
Pocket JTAG Cableの64bit版ドライバ用のインストーラを作っていたのですが、Windows 7 x64環境でハマりました。
なにがやりたいかというと、ユーザがデバイスドライバのインストールを行う際に、フォルダの位置を指定するダイアログを出さずに自動でインストールできるようにすること。
特に、USBのドライバでは、USBのポートを差し替えるたびに、ドライバのINFとSYSのファイルを要求するダイアログが開いたりするので、かねてからこの動作をなんとかしたいと思っていました。
初回のインストール時には「自動」でできて、USBポートを差し替えたときにも下記のような場所指定ダイアログを出ないようにしたいわけです。
このようなことをするためには、目的のドライバのsysファイルをあらかじめWindows\system32\driversフォルダにコピーしておくという作業が必要になります。
※また、INFファイルに工夫が必要です。INFファイルの詳しい書き方はJTAGひろば内の日記に書きました。
インストーラ中でのファイルのコピーがうまくいかなかったので、こんなツールを作ってみたけど、

それでもだめでした。
プログラムから見れば、ちゃんとコピーできているはずなのに、エクスプローラで見るとC:\Windows\system32\driversフォルダには目的のファイルがありません。
マイコンピュータ中を探したら、なんとC:\Windows\SysWOW64 配下にありました。
なるほど、WOW64という仕掛けがあるらしいです。
32bitアプリがC:\Windows\system32配下のディレクトリにアクセスしようとすると、C:\Windows\SysWOW64にリダイレクトされてしまうようです。巧妙なしくみですね。このため、C:\Windows\system32\driversフォルダに目的のファイルをコピーすることができなかったようです。
原因がわかってしまえば、あとは簡単なはず。
あと少しで64bit版のPocket JTAG Cableドライバが配布できるようになると思います。
| 固定リンク



コメント