昨年末頃より、幾つかのアプリケーションがインストールできない事象で困っていました。 仕方ないので、仮想環境(VMware)のゲストOSにインストールしてそのアプリケーションは使っていました。

でもどうやら…
インストールできないアプリケーションは、インストーラとして『Windows@Installer』を使うアプリケーションだけインストールできない事に気がつきました!

【現象】
アプリケーションをインストール時に データ実行防止機能(DEP)で止められてインストール出来ない。  DEPの設定を行おうとするが、『予期せぬエラー』が発生してしまう。

【やった事 その1】
DEPを完全無効化にしてみた!

boot.ini ファイルの編集で DEP を無効化する手順。

DEP 無効化手順
==============================================
1. システムのプロパティを開き、詳細設定タブに移動します。

2. 「起動と回復」欄の [設定] を押下します。

3. 「起動システム」欄の [編集] を押下します。

4. boot.ini ファイルが編集可能になりますので、“/noexecute”オプションを “alwaysoff” に変更します。
例)
編集前: multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
編集後: multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /noexecute=alwaysoff /fastdetect

5. boot.ini ファイルを上書き保存します。

6.マシンを再起動する。

起動すると…
『システムのプロパティ』→『詳細設計』→『パフォーマンス-設定』→『データ実行防止』の項目がグレーアウトして選択できない状態になる。
==============================================
相変わらず『問題が発生したため、Windows@installer を終了します。 ご不便をおかけして申し訳ありません。』が発生してしまう。

関係なさそうなので… 元の設定に戻す!


【やった事 その2】
Windows Installer の再インストールしてみた!

イベント ログ(eventvwr.msc)からで Windows Installer (msiexec.exe)とmsihnd.dllのバージョンが違う事がエラー原因とわかった。
****************************************
ソース: Application Error
イベントID: 1000
エラー発生アプリケーション msiexec.exe、バージョン
4.5.6001.22159、エラー発生モジュール msihnd.dll、バージョン 3.1.4
001.5512、エラー発生アドレス 0x00036935
****************************************

実際の保存先の「C:\windows\system32」
 msiexec.exe : 4.5.6001.22159
 msihnd.dll : 3.1.4001.5512
だった…
msiexecmsihnd
本来、”msihnd.dll” も 4.5.6001.22159 なのが正解のようです。


サービスの確認手順
==================================
1. [スタート]ボタン - [ファイル名を指定して実行] をクリックします。

2. 「名前」ボックスに、“services.msc” と入力して、[OK] をクリックします。

3. サービス コンソールが起動しますので、右ペインより “Windows Installer” を探す。

4. “Windows Installer” の「スタートアップの種類」が “無効” の場合は “手動” に変更。
イベント

上記の結果、「スタートアップの種類」が ”手動” だった場合、 Windows インストーラ Ver,4.5 が不完全な状態でインストールされている可能性があるようです。

Windows インストーラ 再インストール手順
==================================
1. 最新版の Windows インストーラ をダウンロードします。(※ この段階ではインストールを実行しない。ファイルに保存を選択する。)
タイトル: Windows Installer 4.5 Redistributable - 日本語
URL: http://www.microsoft.com/downloadS/details.aspx?displaylang=ja&FamilyID=5a58b56f-60b6-4412-95b9-54d056d6f9f4
対象ファイル: WindowsXP-KB942288-v3-x86.exe

無題

2. [スタート]ボタン - [ファイル名を指定して実行] をクリックします。

3. 「名前」ボックスに、“cmd” と入力して、[OK] をクリックします。
 
4. コマンドプロンプトで、次の文字列を入力し、各行の入力後に Enter キーを押下します。

 ********** コマンド **********
 cd C:\windows\system32
 attrib -r -s -h dllcache
 ren msi.dll msi.old
 ren msihnd.dll msihnd.old
 ren msiexec.exe msiexec.old
 exit
 ********** ここまで **********

5. マシンの再起動を実施します。

6. ログオン後に 1. でダウンロードした Windows インストーラ (WindowsXP-KB942288-v3-x86.exe) を実行する。

7. ウィザードの指示に従って、インストールを完了させます。

8. マシンの再起動を実施します。


==================================
msihnd_2
 msiexec.exe : 4.5.6001.22159
 msihnd.dll : 4.5.6001.22159

バージョンも一致して、アプリケーションのインストールができるようになりました!

詳細は、Windows Installer の再インストール手順
URL: http://support.microsoft.com/kb/315346/ja