Windows 7 SP1 更新の顛末...
先月下旬に Windows Update で自動配付されるようになった Windows 7 SP1 ですが, ほぼ配付当日の 24 日未明から突っ走りモードで即インストールを敢行したのは, 先に書いたとおりです。 そして, 適用に失敗した点も…。 (^^;) あちらの記事のほうが追記の連続で見苦しくなってきましたので, 改めて こちらで顛末を纏めることにしました。
まず, 適用に失敗したのはメインとして使用している Satellite WXW/78DW です。 出荷状態の Windows Vista Home Premium を, 開発用ということでドメイン等のテストも行えるように Windows Vista Ultimate へアップグレード, 順次 SP1・SP2 を適用し そこから Windows 7 Ultimate へ更新したものです。
OS だけでも それなりに変遷を経ている訳ですが, 元より東芝独自のモジュール等が あれこれ適用されている上に, ご存知のとおり PC エミュレーターが 4 種類 (VMware Workstation 7.1.3, VirtualBox 4.0.4, Parallels Desktop 4 for Windows & Linux, Windows Virtual PC。) 入っているわ, CD 革命/Virtual Ver.11 Pro が入っているわ…と, かなり複雑な環境となっています。
で, その中の東芝組である Chicony Camera の方面が引っ掛かって, SP1 の適用に失敗した訳です。
さて, 返されるエラーコードの 0x80070490 だけでは何も判らないも同然ですので, まずは失敗の原因を突き止める必要があります。 手順を踏んで まずは CBS.log から:
2011-02-26 01:47:56, Info CBS Doqe: [Forward] Uninstalling driver updates, Count 55
2011-02-26 01:48:00, Info CBS DriverUpdateUninstallUpdates failed [HRESULT = 0x80070490 - ERROR_NOT_FOUND]
2011-02-26 01:48:00, Error CBS Doqe: Failed uninstalling driver updates [HRESULT = 0x80070490 - ERROR_NOT_FOUND]
2011-02-26 01:48:00, Info CBS Perf: Doqe: Uninstall ended.
はっきり言って, 成否は別として SP1 の適用後に表示されるダイアログで得られる情報と殆ど変わらない訳ですが, それでも当該エラーが どの処理の段階で発生しているのかの大まかな当たりは付けることが出来ます。
というわけで, もう少し詳細を探るために setupapi.dev.log を見てみます:
!!! sto: Failed to find driver update 'C:\Windows\WinSxS\ x86_usbvideo.inf_31bf3856ad364e35_6.1.7600.16543 _none_2dfb89901bc8b78d\usbvideo.inf' in Driver Store. Error = 0x00000490
この段階で「どこで失敗しているのか?」が判明します。 つまり, 上のログと併せると「usbvideo.sys のアンインストールに失敗している」ということになる訳です。 さらに, エラーコードの 0x00000490 は Win32 API の 1168 (要素が見つからない。) ですから, 結果として「DriverStore のリポジトリー内に当該ドライバー (usbvideo.sys Ver 6.1.7600.16543。) のリポジトリー情報が存在しない」というエラーの詳細が得られます。
となれば, 次は「この usbvideo.sys Ver 6.1.7600.16543 は何ものか?」ということになりますが, これはレジストリーなり Web なりを検索すれば KB979538 で適用されるモジュールであることが判明します。 当該 PC の場合は, Chicony Camera の関係で KB979538 の不具合が希に発生していたことから, 適用していたものです。
さて, 原因さえ解れば, 後は諸悪の根源を取り除けば良いだけです。 一番簡単なのは KB979538 の単体アンインストールですが…, まぁ これは当然ながら失敗します。 ここで成功するくらいなら, 上の処理が成功している筈ですから。 (^^;) では, 反対に KB979538 の強制上書き再インストールは…こちらもダメでした。 どうやら中途半端に情報が残っているせいで, 件の要素がリポジトリー等に再構成されないようです。
となれば「ちゃんと構成されている環境から直接要素を もって来ちゃえ」スキルの出番です。 幸い「ことごとく無意味にパッチを適用した環境」が存在します。 VirtualBox の Windows 7 Professional ゲストです。 ここを探してみると…ありました, ありました…, 6.1.7600.16543 のリポジトリー情報が。 プリコンパイルされた usbvideo.pnf も ちゃんと含まれています。
早速当該データーをコピーして試した結果は…ダメでした。 (笑) 予想はしていましたが, リポジトリー情報が存在しないということは, それに関する諸々の情報がレジストリーから削除されているか, 整合性が失われているかしている, というわけで…。
その諸々の情報をレジストリーへ登録すれば解決する訳ですが, この方面は, やれデバイス ID だ, ベンダー ID だ, CLS ID だ, 署名だ, etc. と, 付随するデーターが予想外に多い且つ複雑だったりします。 ここから先は「個々の情報を検索・取得」という やたら時間の掛かる単調作業が続くだけだったりします。 原因究明なら楽しめるのですが, これでは思わず やる気が…。 (^^;)
結果, 「原因は判明した。 解決方法も目処が付いた。 でも, やたらと時間が掛かり再インストールのほうが 1/6 程度の時間で済む。」というわけで, 最後の最後に来て Windows 7 Ultimate の再アップグレードインストールで逃げてしまいました。 ええ, TechNet での全く同じ症状によるケースでも, (質問者自身による) 再インストールという結論に至っています。 (笑)
「Windows 7 の再インストールを行っている」ことから, NVIDIA GeForce 8700M GT については「画面がチラつきまくって使用に耐えないドライバー」が, HD Audio については「5 スピーカーを 2 スピーカー (未満) へ退化せしめる (2 スピーカーにしか対応していない) 極悪ドライバー」が, それぞれ適用されますので, 当然ながら Windows Vista 時代のドライバーを適用し直す必要が発生しています。 (^^;)
ちなみに, 情報の再構成は最低でも半日, 下手をすると丸 1 日掛かると踏んでいます, 過去の経験則から。 それに対して, Windows 7 Ultimate の再アップグレードインストールは 60~90 分で済みます。 一般論としては後者を選択するのが賢い選択というものでしょう。 いえ, メインでさえ無ければ手動再構成を行いたいところだったのですけれどね。 でも, もう 1 週間以上引きずっていましたし…。 (^^;)
というわけで, Windows 7 SP1 の適用が 0x80070490 (ERROR_NOT_FOUND。) のエラーにより失敗した場合は, エラーコードのとおり, ほぼ間違いなくドライバーのリポジトリー情報欠損が原因です。 ログを参照することで「何が欠損しているのか?」が判明しますので, 運が良ければパッチの強制再インストール等で解決するかもしれませんし, そうでなくとも当該データーを再構成することで解決が可能です。
が, 「当該データーの取得が可能」な場合でも, 当該リポジトリー情報の含まれるフォルダー (のみ) を再構築してダメなら, Windows 7 の再アップグレードインストールを お勧めします。 そのほうが, レジストリー情報等を再構成するよりも, 遙かに手軽且つ早く解決できますので。
再インストールする訳にいかない場合は…ちまちまと情報を再構成するしかないですね。 そのケースでも, 例えばパッチが絡んでいるのであれば, 当該パッチのアンインストールが成功するところまで もっていって, (それが必要なら) 再度当該パッチを適用しておいたほうが良いでしょう。 どこかしら整合性のとれない箇所が残っているでしょうし。
ただし, この方法 (情報の手動再構成。) を採った場合は, ハードリンク情報だけは おかしくなったままである可能性が高いです。 あとで大規模なロールアップ等を行った場合に引っ掛かる可能性のある点だけは, 頭の隅に置いておきましょう。
リポジトリー情報の取得等が不可能な場合は…どうしようもなく再アップグレードインストールしか有りませんね。 (^^;)
|