امروزه اگر یک برنامه را در ویندوز اجرا کنید، سیستمعامل تقریباً از همان لحظه میداند با چه نوع فایلی طرف است؛ از بستههای MSI گرفته تا فایلهای EXE و MSIX، هرکدام ساختار مشخصی دارند و ویندوز میتواند رفتار مناسبی در قبال آنها داشته باشد. اما حدود سه دهه قبل، اوضاع کاملاً متفاوت بود. آن زمان هنوز خبری از استانداردهای امروزی نبود و مهندسان مایکروسافت برای حل بعضی مشکلات، به راهکارهایی متوسل میشدند که امروز شاید بیشتر شبیه یک شوخی به نظر برسند.
بنابر گزارش The Register، ریموند چن، مهندس باسابقه مایکروسافت، فاش کرده که ویندوز 95 برای تشخیص اینکه یک برنامه قرار است نرمافزاری را روی سیستم نصب کند، هیچ مکانیزم پیچیدهای نداشت و تنها با بررسی نام فایل اجرایی تصمیم میگرفت. اگر نام فایل شامل کلماتی مانند Setup یا Install بود، ویندوز فرض میکرد با یک برنامه قابل نصب روبهرو است و اقدامات محافظتی خود را پس از پایان نصب اجرا میکرد.
ویندوز ۹۵ از کجا میفهمید یک برنامه قرار است چیزی نصب کند؟
شاید انتظار داشته باشید ویندوز ۹۵ از مکانیزم پیچیدهای برای این کار استفاده میکرده، اما پاسخ بسیار سادهتر است؛ این سیستمعامل فقط نام فایل اجرایی را بررسی میکرد.
اگر نام فایل شامل کلمات مشخصی بود، ویندوز فرض میکرد با یک برنامه قابل نصب (Setup) روبهرو است و رفتار متفاوتی در پیش میگرفت.
به گفته چن، ویندوز ۹۵ به دنبال این کلمات میگشت setup ،install ،inst، (به ایتالیایی) imposta، (به ترکی استانبولی) ayarla و (به زبان مجارستانی) felrak.
اگر هیچیک از این عبارتها در نام فایل وجود نداشت، سیستمعامل حتی مسیر فایل را هم بررسی میکرد تا شاید پوشهای با نام Setup پیدا کند. در صورت یافتن این نشانهها، ویندوز نتیجه میگرفت که این برنامه احتمالاً در حال نصب نرمافزار روی سیستم است.
چرا ویندوز اصلاً باید این موضوع را تشخیص میداد؟
اینجا بخش جالب ماجرا شروع میشود. امروز تقریباً همه برنامههای نصب از چارچوبها و استانداردهای مشخصی استفاده میکنند و سیستمعامل دقیقاً میداند چه اتفاقی در حال رخ دادن است. اما در اواسط دهه ۹۰ میلادی، چنین استانداردی وجود نداشت. هر شرکت، ابزار نصب مخصوص خودش را مینوشت و هیچ راه مطمئنی برای اعلام این موضوع به ویندوز نداشت که «من در حال نصب نرمافزار هستم».در نتیجه، ویندوز ۹۵ چارهای جز حدس زدن نداشت.
البته این حدس هم بیدلیل نبود. اگر ویندوز تشخیص میداد یک برنامه در حال نصب است، پس از پایان عملیات، وضعیت برخی فایلهای سیستمی را بررسی میکرد تا مطمئن شود چیزی بهاشتباه جایگزین یا خراب نشده باشد. حتی در مورد درایورهای چندرسانهای، یک مرحله بررسی اضافه نیز اجرا میشد؛ زیرا آن زمان بسیاری از این درایورها فایلهای DLL سیستم را بدون هشدار بازنویسی میکردند.
حتی خود مهندسان مایکروسافت هم به این فهرست خندیدند!
شاید عجیبترین بخش این افشاگری، وجود همزمان دو عبارت install و inst در فهرست کلمات کلیدی باشد. ریموند چن با لحنی طنزآمیز میگوید این دو مورد عملاً تکراری هستند؛ زیرا هر نامی که شامل install باشد، بهطور طبیعی inst را هم در خود دارد.
او حدس میزند که ابتدا فقط عبارت install در فهرست وجود داشته، اما بعدها مهندسان متوجه شدهاند بسیاری از برنامههای قابل نصب نامهایی مانند xxxinst.exe دارند. بنابراین عبارت inst را نیز به فهرست اضافه کردهاند، اما کسی یادش نمانده ورودی قدیمی install را حذف کند.
همین جزئیات کوچک نشان میدهد توسعه سیستمعاملی به بزرگی ویندوز، همیشه هم بر پایه الگوریتمهای پیچیده نبوده و گاهی تصمیمهای کاملاً عملی و حتی بداهه، بخشی از روند توسعه را شکل میدادند.
محدودیتهای دهه ۹۰، راهکارهای متفاوتی میطلبید
از نگاه امروز، اینکه یک سیستمعامل تنها با دیدن چند کلمه در نام فایل درباره ماهیت یک برنامه تصمیم بگیرد، شاید عجیب یا حتی خندهدار باشد. اما باید به خاطر داشت ویندوز ۹۵ در دورانی توسعه پیدا کرد که هنوز خبری از Windows Installer، بستههای MSI و بسیاری از فناوریهای مدیریت نصب نرمافزار نبود.
به همین دلیل، مهندسان مایکروسافت گاهی مجبور بودند با سادهترین ابزارهای ممکن، مشکلات پیچیده را حل کنند؛ راهکارهایی که شاید امروز ابتدایی به نظر برسند، اما در زمان خود کاملاً کاربردی و منطقی بودند.
شاید این روایت در ظاهر فقط یک خاطره فنی از ویندوز ۹۵ باشد، اما در عمل تصویری جالب از شیوه مهندسی نرمافزار در دهه ۹۰ ارائه میدهد؛ دورانی که بسیاری از قابلیتهای امروزی هنوز وجود نداشتند و توسعهدهندگان باید با خلاقیت، تجربه و گاهی حتی کمی «حدس و گمان»، سیستمعاملی میساختند که میلیونها رایانه در سراسر جهان به آن متکی بودند.