昨年末頃より、幾つかのアプリケーションがインストールできない事象で困っていました。 仕方ないので、仮想環境(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
だった…


本来、”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. マシンの再起動を実施します。
==================================

msiexec.exe : 4.5.6001.22159
msihnd.dll : 4.5.6001.22159
バージョンも一致して、アプリケーションのインストールができるようになりました!
詳細は、Windows Installer の再インストール手順
URL: http://support.microsoft.com/kb/315346/ja
でもどうやら…
インストールできないアプリケーションは、インストーラとして『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
だった…
本来、”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. マシンの再起動を実施します。
==================================
msiexec.exe : 4.5.6001.22159
msihnd.dll : 4.5.6001.22159
バージョンも一致して、アプリケーションのインストールができるようになりました!
詳細は、Windows Installer の再インストール手順
URL: http://support.microsoft.com/kb/315346/ja