私の前のエントリ「PCにログオンできない…」
http://blogs.wankuma.com/iijimas/archive/2007/07/13/84997.aspx
の原因がわかりました。大失態、自爆でした。。。申し訳ございません。
私がVisual Studio2005のセットアッププロジェクトで作成したインストーラが死神となりました。
後になってGotDotNet Japan 掲示板の過去ログにこの現象の報告があるのを発見しました。
スレッド: [Installer] Conditionを指定した場合のアンインストール時にレジストリが消えてしまう
http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-41724.htm
反省のために…Virtual PCの中の環境(Windows XP Professional)で再現してみました。
これから書くことは大事な環境では絶対にマネしないでください。PCが使用できなくなります。
Visual Studio 2005でセットアッププロジェクト(DeathInstaller)を作成し、レジストリエディタでHKEY_LOCAL_MACHINE\Softwareにキーを追加しました。
実際にやった時はVisio Addinを登録するためのキーや値を作成しました。
再現のため新しくできたキーのNameプロパティを「Microsoft」、すべてのユーザ選択時のみに登録されるようにと考えてConditionプロパティを「ALLUSERS<>NULL」としました。
ここでAlwaysCreateプロパティはデフォルトの「False」のまま変更しなかったのが運命の分かれ道でした。
こうしておけばよかった…
ビルドするとmsiファイルができます。
再現のため、「復元ディスク」を有効にしたVirtul PC環境の中でにコピーします。
絶対に、通常の実機その他など大事な環境では実行してはなりません。
壊れてもいい
Virtul PC環境の中で実行し「インストールフォルダの選択」で「すべてのユーザー」を選択して実行します。
インストールが終わったら、「プログラムの追加と削除」でインストールされたことがわかります。
「プログラムの追加と削除」から「削除」を選びアンインストールします。
途中このようなダイアログが現れますが、実は「キャンセル」しても、もう既に手遅れです。
既にレジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft以下はいろいろと削除されています。
アンインストール前 |
|
アンインストール後 |
|
→ |
|
実際、この状態でOfficeなどはまともに起動できません。
Virtual PCの中の環境をスタートメニューから「シャットダウン」でWindowsを「再起動」すると…
起動できなくなるか、起動できたとしても以下のダイアログが表示され、これ以上先に進めません。
Virtual PCを「電源を切り、変更を削除」で終わらせます。。。
Visual Studioのレジストリエディタで特にHKEY_LOCAL_MACHINE以下をいじるのはとても危険だと改めて思い知らされました。(しかし、あのプロパティ設定であの挙動はおかしいと思います。ドキュメントだけじゃわかんなかったです。)
意識しようと意識せずに関わらず使用している環境ではくれぐれもマネしないで下さい。
以上とてもだめだめなIIJIMASでした。。。
追記:この件に関しましてとっちゃん様にMSDN フォーラム に報告していただいてしまいました。とっちゃん様、お忙しい中フォロー・ご調査・フィードバックありがとうございました。
MSDN フォーラム » フィードバック » Visual Studio フィードバック » VSセットアップ、レジストリキープロパティの判断ミス
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1882918&SiteID=7