2008/02/14
久しぶりにプログラミングねた。
Microsoft Internet Explorer上で動作させるActiveXコントロールを作成したのだが、ActiveXのインストールに失敗する場合があるという症状が発生した。
おかしい、理屈の上では失敗する要因が見当たらない。
何かダウンロード時の実行ログを入手する方法はないか。
ググってみる。
あった。
KB252937 コード ダウンロードが失敗する理由については、詳細を検索する方法。
記載されている方法でダウンロード時のログを確認してみると、確かに自動インストールしようとしているコンポーネントのダウンロードかインストールで失敗している。
インストール中に何らかの原因で失敗している事はわかったが、その肝心の原因がさっぱりわからない。
何度かActiveXのインストールをトライしてみる。
すると、インストールを実行する度に、失敗するコンポーネントが変わる。
最初は TabCtl32.cab で失敗、次は MSComCtl.cab で失敗…。
う~ん、どういう事だ?
更にググってみる。
更にググってみる…。
更にググってみる……。
情報が見つからない。
う~ん? なんでだ? なんで失敗するんだ?
ふと、ブラウザでマイクロソフトのサイトに置かれているコンポーネントにアクセスしてみた。
http://activex.microsoft.com/controls/vb6/TabCtl32.cab
http://activex.microsoft.com/controls/vb6/MSComCtl.cab
http://activex.microsoft.com/controls/vb6/MSMask32.cab
あれ? 404 Not Found になったぞ。
リロードしてみる。
あれ? 今度はダウンロードのダイアログが表示されたぞ。
なんだこりゃ。
Linux マシンに移り、wget でダウンロードをトライしてみる。
$ wget http://activex.microsoft.com/controls/vb6/TabCtl32.cab
--23:01:25-- http://activex.microsoft.com/controls/vb6/TabCtl32.cab
=> `TabCtl32.cab'
Resolving activex.microsoft.com... done.
Connecting to activex.microsoft.com[207.46.249.55]:80... connected.
HTTP request sent, awaiting response... 404 Not Found
23:01:25 ERROR 404: Not Found.
$ wget http://activex.microsoft.com/controls/vb6/TabCtl32.cab
--23:01:28-- http://activex.microsoft.com/controls/vb6/TabCtl32.cab
=> `TabCtl32.cab'
Resolving activex.microsoft.com... done.
Connecting to activex.microsoft.com[207.46.249.55]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 115,971 [application/octet-stream]
100%[==============================================>] 115,971 135.15K/s ETA 00:00
23:01:29 (135.15 KB/s) - `TabCtl32.cab' saved [115971/115971]
$ wget http://activex.microsoft.com/controls/vb6/TabCtl32.cab
--23:01:30-- http://activex.microsoft.com/controls/vb6/TabCtl32.cab
=> `TabCtl32.cab.1'
Resolving activex.microsoft.com... done.
Connecting to activex.microsoft.com[207.46.249.55]:80... connected.
HTTP request sent, awaiting response... 404 Not Found
23:01:30 ERROR 404: Not Found.
|
やはり、成功するときと失敗するときがある。
なんだこりゃ?
ダウンロードに失敗する理由はわからないが、間違いなくこれが原因だ。
ダウンロードするコンポーネントをすべてローカルサーバに置き、デストリビューション・ウィザードでコンポーネントを代替サーバからダウンロードするように設定してActiveXコンポーネントを作り直してみる。
インストールを試してみると…成功!
どういうこっちゃい。
マイクロソフト君、activex.microsoft.com の挙動、おかしくないかい?
投稿者 zunbe : 2008/02/14 13:35:13
トラックバック
|
〔http://blog.zunbe.com/mt/mt-tb.cgi/777〕
|
【プログラマ ずんべ の日記】 Google 早っ!
このエピソードの続き。 2008/02/14 ActiveXで大ハマリ つい3...
トラックバック時刻: 2008/02/14 14:46:13
まったく分からないんだけどね…。
タイムアップになってるって可能性は無いかな?
単純にサーバーに負荷が掛かってるとか、
あとはダウンロードするマシン側で終わらせたはずのアプリが常駐していたり…。
私も全く関係ないはなしなんだけど、↑っぽいのが原因でよくダウンロードとかアップデートエラーになる事があるんだよねぇ…。
XPは嫌いです。OSは2Kが好きだった。
妹がVistaのNotePCを買って、それのカスタマイズをやってるんだけど行き成りトラブルに見舞われてます。
使いこなせないOSなんて要らないやいっ!!
投稿者 ひこ : 2008/02/14 15:41:16
●ひこさん
タイムアップや、ローカル側のマシンの問題ではないですね。
404 Not Found になるという事は、activex.microsoft.com 自身がエラーコード404を返してきているという事ですから、activex.microsoft.com は、確信をもって「そんなファイルは知らん」と言っているわけです。
感じとしては、多重化されているサーバの1台がダウンしていて、アクセスした時に、そのダウンしたサーバに当ると 404 Not Found になってしまうといった感じに見えるんですけどね…。
何が起こってるのかなぁ?
Vistaは、一度だけ手元のマシンにインストールを試してみました。
試したPCが若干古めのPCだったので、ネットワークカードは認識しないわ、ビデオカードは 800×600 16色にしかならないわ、それなりのPCを準備しないと全然ダメですね。
ちなみに、ずんべの開発PCは、今でも Windows 2000 です。
そろそろ XP に上げようかなぁ、とは思うのだけれど、きっと、サポート期限いっぱいまで使うだろうな。
投稿者 ずんべ : 2008/02/14 16:56:14
また謎な挙動・・・。毎度やってくれるMS。(苦笑
XPは画面デザインやらスタートメニューやらを「クラシック」設定にしてやれば、ほぼ2000と同じ感覚で使えます。
XPは2000と比べると若干要求スペックが高いことがタマニキズ。メモリは1GB~でしょうか。512MBだとすぐにやってられなくなります。
開発環境という意味では、2000で動けばXPで動くだろうしということもあり、2000の方が無難かなと私も思います。とはいえ職場ではほとんどXPに移ってしまってますけども。。。
Vistaは・・・とてもまだ常用する気になれません。アプリケーションの動作で何かと不具合起き過ぎます。
また、動作的にまともに使える様にするにはCore2Duo以降でメモリ2GB以上が必要と感じます。動作要求スペックが高い。これもネックですね。
メモリが1GB2本で6,000未満とバカみたいに安くなったのでメモリ容量はあんまり気にするほどではないですけど。
投稿者 NOBU! : 2008/02/15 10:34:58
●NOBU!さん
不思議な挙動ですねぇ…。
まったく、どうなってるんでしょうね。
やれやれです。
開発環境は、2000でぜんぜん問題はないですので、未だに自分のメイン・マシンはXPにアップグレードしていませんが、新しく導入するマシンはXPにしているので、徐々にXPが増えてきて、いつの間にか、自分のメイン・マシンと社内サーバ以外はXPに置き換わっています。
Vistaは、要求されるスペックが高すぎるので、社内にあるほとんどのマシンに入らない可能性が大。
検証マシンとしてVistaを準備する必要はあるけれど、きっと、自分の開発マシンは2000のサポートが切れるまで(2010年07月まで)使って…、XPのサポートが切れるまで(2014年4月まで)使って…、その後で渋々Vistaってパターンかな。
投稿者 ずんべ : 2008/02/15 21:20:32
|