古いインストーラーが拒否されてエラーになる時に使うソフト
最近のWindows updateでインストールされる修正プログラムの影響で、古いタイプのインストーラーが拒否されてエラーになるようになってしまいました。
具体的には、Visual Basic6で作成できるデストリビューションウィザードや、古いInstallShildで作成されたインストーラーは使用できません。
「[MS14-049] Windows Installer サービスの脆弱性により、特権が昇格される (2014年8月12日) 」による、OS保護機構の仕様変更が原因です。
この修正により、拒否されるようになったインストーラーは、レジストリの規定の場所に、一時的なホワイトリストを作成しないとインストールを拒否されます。
このソフトがやってる内容の詳細は「[MS14-049] Windows Installer サービス用のセキュリティ更新プログラムについて (2014 年8月12日) 」を参照ください。
具体例がないと、説明が分かりにくいので、こちらのNTSOFTさんのソフトを事例に紹介させていただきます。
Visual Basic 6.0 SP6 ランタイムライブラリ
インストーラーを起動すると、最近はこんなエラーが表示されて中断されます。

というわけで、こうならないようにするソフトです。
使い方は、MSIOptOut.exeを起動すると、こんな画面が表示されます。
product codeを入力して、適用ボタンを押します。(product codeは後で説明します)

「適用」ボタンを押すと、このproduct codeを持つインストーラーを動作させますよ!というホワイトリストを登録します。
「終了」ボタンを押すと、何もせず終了します。
「レジストリを削除して終了」ボタンを押すと、ホワイトリストやホワイトリスト参照許可関連のキーの全てを削除して終了します。
「適用」ボタンを押して、ホワイトリストに登録されている間にインストール作業を行ってください。
(補足しておきますが、この手のインストーラーは管理者権限でインストール作業を行う必要があります)
product codeをホワイトリスト登録して、レジストリを削除して終了することでレジストキーごと削除し、レジストリに残骸を残さず終了させるという使い方をします。
product codeの記入を多少間違っても、上記のインストールに失敗するエラーが出るだけで大して実害はありませんが、ホワイトリスト参照許可のレジストリ設定値は必ず削除して作業を終了するようにしてください。
●product codeとは
product codeってちょっと聞きなれないと思いますが、例えばインストールする時 or アップデートする時ってインストーラの動きが変わりますよね。
つまり、インストール済みか否かを判断するためのユニークな鍵となるコードが、この「product code」です。
OSが認識するアプリケーション名ともいえます。
これがどこに書かれているかというと、拡張子がMSIのファイルのプロパティを見ると・・・

こんな所に記載されています。
気をつけなきゃいけないのは、中かっこ「{」「}」これらも必要な文字です。
上記の「Visual Basic 6.0 SP6 ランタイムライブラリ」の場合は、「{59FEFE3F-8119-457C-A4EE-CF24202DD9D2}」を入力することになります。
●MSIファイルが見つからない場合
上記の「Visual Basic 6.0 SP6 ランタイムライブラリ」の場合を例題にします。
このソフトはCABの自己解凍形式で配布されているので、まずは何でも解凍できる系の解凍ツールを使って解凍します。(ウチのAs/Rとか使っても良いです)
そうすると、中から拡張子がMSIのファイルが出てきますので、このファイルのプロパティを参照します。
●動作環境
起動確認をしたのは、Windows 7/Vistaですが8系も問題ないと思われます。
ただし、このソフトが有効活用される期間はWindowsUpdateの状況次第です。
XPのサポート終了後にこのような対処が行われたので、XPでは本ソフトは必要にならないと思いますが(要するにXPの脆弱性はほったらかし)、一応動作するように作ってます。
●このソフトのインストール
適当なフォルダーに展開してください。
●このソフトのアンインストール
インストール時に展開したフォルダーごとMSIOptOut.exeを消してください。
設定類などは一切ありませんので、ファイルにもレジストリにも保存されません。
●使用許諾条件
下記の使用条件を承諾した場合のみ、本ソフトウェアの使用を認めます。
使用条件を満たせない場合は、速やかにアンインストールおよび配布ファイルの削除を行ってください。
また使用条件から逸脱した言動が見受けられた場合、本ソフトウェアを使用する権利が剥奪される場合があります。
- フリーソフト全般に対して感謝の気持ちを持てない方は、利用する権利がない物とします。
- 本ソフトウェアはフリーウェアとして公開しておりますので、ライセンス料金などは発生しませんし、転載や再配布もご自由になさって構いません。
ただし、本ソフトウェアを構成する一部のみの配布および、配布形態の変更(圧縮方法や、書庫ファイル名など)しての再配布は禁止させて頂きます。
また、永続的にフリーウェアであることも保障いたしません。
- 本ソフトウェアおよび関連する文書は、明示または黙示を問わず、商用性またはその他のいかなる保証もない、現状有姿のまま瑕疵を問わない条件で提供されます。
- 本ソフトウェアの使用に関連して直接/間接にこうむったいかなる損害に対しても、賠償等の一切の責任を負いません。
(可能な限り不具合などには対処いたしますが、それ以上の責任は負いかねますという意図です)
- 国内外の諸法令に違反するおそれのある行為に利用することを禁止します。
- 公序良俗に反する、またはそのおそれのある行為を禁止します。