■突然、Visual Studio 2012が起動しなくなった。スプラッシュ画面が表示されていると「操作が完了できませんでした」とかなんとか表示されて落ちてしまう。以前、VS2010ベースのAtmel IDEをインストールした時と似たような症状だ。とりあえずVS2012を再インストールしてみようとするが駄目で、VS2012のベースとなっている.Net Framework SDKをアンインストールしようとすると、日本語パックのアンインストールができない。「正常にインストールできていない」と表示されて終わってしまう。アンインストールも修復もできないので、レジストリを検索して強引にインストール情報を消してVS2012を再インストールすると、先には進めたもののやはり「操作が完了できませんでした」と終わってしまう。
前回VS2010の起動が失敗するのは参照しているリソースが欠けているからのようで、.Net4.0のSP1をあてたら不具合は解消していた。今回もそんな感じではなかろうかと思ったものの、Windows8は.Net4.5が取り込み済みなので修復インストールができない。ただし、msiexec.exeを使うと*.msiファイルがあればバージョンチェックを飛ばして修復操作もできそうなので、とりあえず何のリソースで引っかかっているのか確認しようと思った。
VS2012にはどうやら起動オプションがあるようなのだけど、詳細が一切不明。見当つけてコマンドラインから /var /varbose のオプションをつけて起動すると、%USERPROFILE%/AppData/Roaming/Microsoft/VSWinExpress/11.0 にActivityLog.xmlが作成されていた。
<entry> <record>25</record> <time>2012/11/25 11:16:25.843</time> <type>Error</type> <source>VisualStudio</source> <description>CreateInstance failed for package [Environment Package Window Management]</description> <guid>{5E56B3DB-7964-4588-8D49-D3523AB7BDB9}</guid> <hr>80131700</hr> <errorinfo>クラスは登録されていません。 CLSID {D17B14AA-2C1D-46AF-AE7D-B74A1B9F6D64} のオブジェクトを参照しています。</errorinfo> </entry>
5E56B3DB-7964-4588-8D49-D3523AB7BDB9というguidはレジストリの中にエントリーがあって、WindowManagerというモジュールらしい。このモジュールを初期化する中でD17B14AA-2C1D-46AF-AE7D-B74A1B9F6D64というguidのオブジェクトを呼び出そうとしているようだ。ただし、レジストリには全くない。
ググってみるとD17B14AA-2C1D-46AF-AE7D-B74A1B9F6D64はPerfWatsonPackage.dllらしい、というところは何となくつかめて、さらに調べてみるとこのモジュールは単体で取得できることが分かった。さっそくmsiを落としてインストールしようとすると、うまくいかない。msiexecの/lオプションを使ってログをとってみるとVS2012Expressは対象外のモジュールらしい。ということは、対象外のモジュールを探して落ちているということなのか?
VS2012のアンインストール/インストールを繰り返しても現象は変わらず、ただ、一時的にせよVS2010/VS2012が同時に動く環境はあったのだから、Windows8がクリーンな状態からはじめたら、整合性が取れるのだろうという見込みはあった。そうはいってもクリーンインストールで真っ新な状態から再開するのはしんどいなと思っていたらWindows8には「リフレッシュ」というものがあった。
今回試したのは「リフレッシュ」とも違うように思うのだけど、Windows8のインストール媒体を使って、Windows8のインストール操作を行った。ただし、ユーザー設定諸々を極力残すオプション。Windows8環境でWindows8をインストールするという変な操作だけど、その操作自体でエラーを出されることはなく、インストールは完了できた。初期設定に戻ったのは自動ユーザーログオンとか、ネットワークカードの設定、ストアアプリなどで、それ以外のアプリは再インストールする必要ものなくほぼそのまま残っていた。
再インストールの必要があったのはAtmelのAVRISP mkII用のUSBドライバでこれはAtmel Studio4を再インストールすることで回復できた。
肝心のVS2010/2012はというと、こちらも問題は解消していた。何がきっかけでVS2012が起動しなくなったのかは不明だけど、対症療法的に問題は解消できたことになる。またこんなことを繰り返すのは面倒なので、Cドライブだけでもバックアップを取って置こうと思う。