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

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

DirectX SDK June 2010インストール時のError Code S1023

Visual Studio 2012/2013の場合、DirectX SDKはすでにIDE同梱のWindows SDKに統合されているため、DirectXコアコンポーネントのみを使って開発する場合は別にスタンドアロンの旧DirectX SDKをインストールする必要はありません。しかし今回、豊富なサンプルコードや一部のテクスチャ関連ツールはまだ旧DirectX SDKに含まれているものを使いたいので、Windows 8.1にDX SDK June 2010をインストールしようと思ったのですが、インストール時にS1023エラーに遭遇しました。
インストールの最終段階において、DX SDKインストーラーはVisual C++ 2010ランタイムのVer.10.0.30319 (2010/03/18) をインストールしようとするのですが、このバージョンは2014年現時点における最新バージョンではありません。DX SDKよりも先にマイクロソフトのサイトから個別ダウンロードしたVisual C++ 2010 SP1再頒布可能パッケージを先にインストールしていた場合(あるいはVisual Studio 2010 SP1を先にインストールしていた場合)、下記のバージョンがすでにインストールされているため、DX SDKインストーラーが失敗を報告するようです。

DX SDKのインストールを成功させるには、上記のランタイムを[プログラムと機能]経由でいったん削除して、再度DX SDKインストーラーを走らせることで対処できるようです。なお、DX SDKのインストールが完了したら、最新版のVC++ 2010 SP1再頒布可能パッケージを再度インストールし、さらにWindows Updateを実行してVC++ランタイムにセキュリティパッチを当てましょう。

参考:
http://kowaimononantenai.blogspot.jp/2013/07/directx-sdk-june-2010-error-code-s1023.html

「問題なのはVC++ 2010のランタイムだけで、VC++ 2008のランタイムは削除しなくてもOK」という情報もありましたが、他のWindows 7環境で試してみたところ、VC++ 2008ランタイムはインストールされているものの、VC++ 2010ランタイムがインストールされていないのにS1023エラーでSDKインストールが失敗する現象に遭遇しました。VC++ 2008ランタイムもアンインストールしてからSDK再インストールを試みたところ、正常にインストールが完了したようです。

ちなみに、DX SDKインストーラーがVC++ランタイムのインストールに失敗しても、VC++ランタイム以外のコンポーネントはインストールされるのですが、すべての処理が正常に完了してくれないと[プログラムと機能]からDX SDKをアンインストールすることができなくなります。

なお、Visual Studio 2012および2013のインストールは、できればDX SDK June 2010のインストール後に行なったほうがよいと思われます。というのも、DX SDK付属のDirect3DデバッグレイヤーDLL(D3D10SDKLayers.dll, D3D10Ref.dll, D3D11SDKLayers.dll, D3D11Ref.dllなど、更新日時は2010/06/02)はDirectX 11.1/11.2と互換性がないため、VS 2012やVS 2013付属のデバッグレイヤーDLLで置き換えられるからです。つまりDX SDK June 2010を後からインストールするのはやめたほうがいいということです。Windowsの開発ツールやランタイムは、通例リリースされた順番にインストールしていくと成功しますが、逆の順だと今回のように失敗することがよくあります。

Windows 7 SP1 および Windows Server 2008 R2 SP1 用のプラットフォーム更新プログラムについて

もちろんDX SDK June 2010を一切使わないのであれば、当然VS 2012/2013だけインストールすればよいです。トラブルを避けたいのであれば、今後DX SDK June 2010をインストールするのはやめたほうがいいと思われます。日本語版インストーラーのUIも一部文字化けしたまま放置されてますし……あと開発が終了して廃止になったD3DXやXACTを今更使うのもやめましょう。