syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

VS2010更新プログラムKB2455033がコード643で失敗する件

(これは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 *2x86x64も同じインストーラで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のリリースノート(英語)にあるように、

  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1 (KB983509)
  4. Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1 (KB2519277)

の順番でインストールすること。要するにリリースされた順番です。

ちなみにMFC/ATLのライブラリはIA64をそもそもサポートしていないので関係ありません。自分はVCのExpress Editionは使っていないし、IA64向けプログラムも作っていないので、今回のSP1バグはどうでもいいと言えばどうでもいい問題です。特に必要のない人はKB2519277をインストールする必要はないと思います。

*1:2014年現在、リンク切れになっています。KB2455033は、2011/06/07に公開されたKB2542054に置き換えられたそうです。スタンドアロンVS10-KB2542054-x86.exeも公開されています。

*2:2014年現在、こちらもリンク切れになっています。WPF開発者にとって重要なVS 2008修正プログラムだったのですが、スーパーセットの修正プログラムが出ているのかどうかは不明です。