.NET Framework の手動アンインストール

Command Prompt Explorer Bar
http://www.codeproject.com/csharp/CommandBar.asp
をいれてみようとしたら、

Fatal Execution Engine Error(0x7926fcd8)

となっていまいインストール、アンインストールともに失敗した。
サイトの掲示板みても、Googleで検索してもわからなかった。

いろんなバージョン(1.0,1.1,1.2)がはいっているせいかな(一応ありえないはずなのだが)と思い
.NET Framework を入れなおそうとアプリケーションの追加と削除から
アンインストールを実行するとエラーがでる。
そういえばインストール時にもエラーがでていたような記憶がある。

いろいろ調べまわったら、
.NET Framework のインストール失敗による手動の削除
http://support.microsoft.com/default.aspx?scid=kb;ja;320112
Installation of .NET Framework Fails and Requires Manual Removal
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q320112
にいきあたる。なんか日本語版は情報をはしょりすぎ?

つまり
>予期しない停電やその他のインストール エラーにより、.NET Framework のインストールに失敗した場合、手動による .NET Framework の削除が必要になることがあります。
がーん。
もうちょっと調べまわると、
http://www.dotnet247.com/247reference/msgs/40/204236.aspx
にいきあたる。
簡潔にまとまっているのでこっちを参考にして .NET Framework のバージョンを手動で削除してみた。

以下Windows XPでの手順です(もちろん無保証です)

1. システムの復元ポイントの作成
2. エクスプローラーで「ツール」→「フォルダ」→表示タブ→「保護されたオペレーティングシステムファイルを表示しない」のチェックをはずす
3. フォルダを削除する

ついでに Visual Studio関係でアンインストールされずに残っているフォルダも削除する。

4. 以下のファイルの削除

  • %windir%\System32\mscoree.dll
  • %windir%\System32\URTTemp\mscoree.dll

エクスプローラからは削除できなかったのでセーフモードで立ち上げて削除して windows の再起動。

5. regedit を起動して以下のキーを削除

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Integration] 存在しなかった
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework SDK]
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup] 存在しなかった

6. インストーラの削除

エクスプローラで「表示」→「詳細表示の設定」で「コメント」にチェックをいれる。
もちろん詳細表示して
%windir%\Installer でコメント欄で .NET Framework SDK があるものを削除する

7. エクスプローラーで「ツール」→「フォルダ」→表示タブ→「保護されたオペレーティングシステムファイルを表示しない」をチェックする。

一応、Windows を再起動する。
特にエラーも出ずに起動できる。よかった。

8. 再度 Windows Update .NET Framework 1.1 をインストール。

うまくいった。

再度 Command Prompt Explorer Bar をインストールしたらきちんと動いた。
でもこれって便利? 窓の手の「右クリックメニュー」の「任意のフォルダからコマンドプロンプトを可能にする」で十分のような。

9. コンパイラの動作確認

C#(csc.exe)、VB.NET(vb.cexe)、JScript.NET(jsc.exe)でHello Worldコンパイル、実行できた。
あれ、C++.NET(cl.exe)が見当たらない。
調べたら
日本一長いハローワールドへの道 - 1
http://www.tcn.ne.jp/~masugata/mt/archives/000195.html
に行きあたる。非常によくまとまっている。
そうか SDK の方に入っているのか。
マイクロソフトのサイトから .NET Framework 1.1 SDK(128MB)を落としてくる。
http://www.microsoft.com/japan/msdn/netframework/

今度は cl.exe がついてきた。
でも簡単には動かない。
上記のサイトをみて 1.1CL.bat を作成。

@REM .NET 1.1 の cl.exe を動かす
set INCLUDE="%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\include";"%ProgramFiles%\Microsoft.NET\SDK\v1.1\include"
set LIB="%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\lib";"%ProgramFiles%\Microsoft.NET\SDK\v1.1\Lib"
set path="%windir%\Microsoft.NET\Framework\v1.1.4322";"%ProgramFiles%\Microsoft.NET\SDK\v1.1\Bin";"%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\bin";"%ProgramFiles%\Microsoft Visual Studio .NET 2003\Common7\IDE";%PATH%

これでOKかとおもったら mspdb71.dll がみつからないとエラー。なぜなんだろう?
面倒なので cl.exe がある場所にdllをコピーしてお茶を濁す

copy "%ProgramFiles%\Microsoft Visual Studio .NET 2003\Common7\IDE\mspdb71.dll" "%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\bin"

やっとコンパイルが動いた。
C++ は環境構築するのがやっぱり大変だな。