(これは2011-04-14に書いた故OCNブログの記事を加筆修正したものです)
先日公開された、KB2455033(Visual Studio 2010のMFC関連のセキュリティ更新)をWindows Updateにて適用しようとすると失敗する。
Windows Vista x64 SP2とWindows 7 x64 SP1で現象発生を確認。VS 2010はSP1未適用。
Windows XP x86 SP3だと、SP1なしのVS 2010でもKB2455033は正常に適用できていました。
MSはリリース前にきちんとテストしているんでしょうか……
スタンドアロンのVS10-KB2455033-x86.exe *1を使って手動インストールを試みるも失敗。んん? x86?
修正パッチ プログラムの場合、x86とつくものは軒並みx64システムにはインストールできなかったような気がするけど……いや、VS90SP1-KB963035-x86.exe *2はx86もx64も同じインストーラでOKだったか……
ここで、Visual Studio 2010のSP1(KB983509)をまず適用すると、x64でもKB2455033が無事インストールできることを確認。ちなみにSP1のx64・IA64・Windows SDK 7.1関連バグ修正プログラムKB2519277は別に適用していなくてもインストール可能みたいです。
なお、KB2455033のインストール中、VS 2010のメディアの挿入を要求されることがありますが、MagicDiscなどの仮想ドライブにマウントされたisoイメージでもOKです。参照ボタンを押して、ファイル ダイアログで仮想メディア中のvs_setup.msiを選択します。setup.exeの選択でもOKかも。いちいちVS 2010のパッケージを引っ張り出してくるのが面倒なんですよ……
余談:KB2519277について
KB2519277というのは下記のバグ修正プログラムです。
「Windows SDK 7.1 用 Microsoft Visual C++ 2010 Service Pack 1 コンパイラ更新プログラム」
http://www.microsoft.com/downloads/details.aspx?FamilyID=689655b4-c55d-4f9b-9665-2c547e637b70&displayLang=ja
ちなみにVS 2010 SP1のバグに関するMSDNの説明がグダグダで的を射ていないというか全然具体的じゃない上に全面的に間違っているので、とりあえずProfessional Editionを例に、正しい説明を解説しておきます。それにしても一体誰が書いたんだこの記事……MSェ……
(1) Visual Studio 2010 SP1を適用すると、下記のIA64関係のファイル(VC++コンパイラ、ライブラリ)がごっそり削除される。
%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\bin\ia64
%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\bin\x86_ia64
%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\lib\ia64
(2) KB2519277を適用すると、上記ファイル群が復元される。
(3) MSDNはあたかも2011/03/08に公開されたVS 2010 SP1を適用してはいけない、そしてWindows SDK 7.1自体の修正版がリリースされたかのように説明しているが、全然違う。
正しくは、KB2519277のリリースノート(英語)にあるように、
- Visual Studio 2010
- Windows SDK 7.1
- Visual Studio 2010 SP1 (KB983509)
- Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1 (KB2519277)
の順番でインストールすること。要するにリリースされた順番です。
ちなみにMFC/ATLのライブラリはIA64をそもそもサポートしていないので関係ありません。自分はVCのExpress Editionは使っていないし、IA64向けプログラムも作っていないので、今回のSP1バグはどうでもいいと言えばどうでもいい問題です。特に必要のない人はKB2519277をインストールする必要はないと思います。