Изолированные компоненты

Авторы установочных пакетов могут указать, что установщик копирует общие файлы (часто общие библиотеки DLL) приложения в папку этого приложения, а не в общее расположение. Затем этот закрытый набор файлов (DLL) используется только приложением. Таким образом, изоляция приложения вместе с его общими компонентами имеет следующие преимущества.

  • Приложение всегда использует версии общих файлов, с которыми оно было развернуто.
  • Установка приложения не перезаписывает другие версии общих файлов другими приложениями.
  • Последующие установки других приложений, использующих разные версии общих файлов, не могут перезаписывать файлы, используемые этим приложением.

Так как текущая реализация COM сохраняет один полный путь в реестре для каждой пары CLSID/Context, все приложения будут использовать одну и ту же версию общей библиотеки DLL. Чтобы разрешить приложению хранить закрытую копию COM-сервера, системный загрузчик в Windows 2000 проверяет наличие . ЛОКАЛЬНЫЙ файл в папке приложения. Если системный загрузчик обнаруживает . LOCAL-файл, он изменяет логику поиска, чтобы предпочесть библиотеки DLL, расположенные в той же папке, что и приложение.

Когда установщик Windows запускает действие IsolateComponents , он копирует файлы компонента (обычно это общая библиотека DLL), указанные в столбце Component_Shared таблицы IsolatedComponent , в ту же папку, что и компонент (обычно файл .exe), указанный в столбце Component_Application. Установщик создает файл в этом каталоге, длина в нулевых байтах, с коротким именем файла ключа для Component_Application (как правило, это имя совпадает с именем .exe приложения) с добавлением . МЕСТНЫХ. Установщик использует регистрацию для компонента в его общем расположении и не записывает никаких регистрационных сведений для копии компонента в частном расположении.

Дополнительные сведения см. в разделе: