
Windowsのトリビアを紹介する、Microsoftのベテラン開発者Raymond Chen氏のブログ記事「How did Windows 95 decide that a setup program ran?」が公開され、Windows 95時代のインストーラーに関する裏話がまた一つ明らかになりました。
記事によると、Windows 95には古いバージョンのDLLを上書きするインストーラーへの対策が含まれていた、セットアップ完了後にファイルの整合性チェックを行う仕組みがあったとのこと。このとき、OSがセットアップの終了を検出する方法は意外にも推測ベースで行われていたそうです。
OSは、実行中のプログラム名に「setup」や「install」といった特定の単語が含まれているかどうかを確認し、それをセットアッププログラムだとみなしていました。さらに、国際化の影響か、以下のような多言語の「魔法の単語」も登録されていました。
- setup
- install/inst
- imposta(イタリア語)
- ayarla(トルコ語)
- felrak(ハンガリー語)
「install」と「inst」が重複しているのは、後から追加された際に整理されなかった名残だろう、と Raymond Chen 氏は推測しています。
プログラム名で判定できない場合のfallback
実行ファイル名に該当語がなければ、パスに「Setup」が含まれているかもチェック対象になったそうです。
さらにWindows 95時代のインストーラーは、ファイルが使用中で置き換えられない場合、ExitWindowsExec → MS-DOSに戻る→バッチファイルで作業→ Windowsを再起動という流れを取ることがありました。
このため、OSには「セットアップが終わった」と判断した後、次回起動時にファイルチェックを行うという遅延処理も備えられていたそうです。
ただし、例外として、INFファイル経由でインストールされるマルチメディアドライバーについては、OSが即時のファイルチェックを行う仕組みが追加されていました。当時のドライバーがDLLを上書きしがちだったため、マルチメディアチームがOSチームに「後処理を入れてほしい」と依頼したのが理由だそうです。
まとめ
Windows 95のセットアップ検出は、現代のような高度な仕組みではなく、名前のパターンマッチによる素朴な推測に頼っていました。
しかし、その上に「再起動後のチェック」や「特定カテゴリの追加チェック」など、当時の実情に合わせた工夫が積み重ねられていたことが分かります。
Windowsの歴史を知るうえで、このような「裏側のロジック」はとても興味深い話題といえます。
