独立组件

安装包的作者可以指定安装程序将应用程序的共享文件(通常为共享 DLL)复制到该应用程序的文件夹中,而不是复制到共享位置。 之后,这组专用文件 (DLL) 仅供应用程序使用。 以这种方式将应用程序及其共享组件隔离具有以下优点:

  • 应用程序始终使用与其一起部署的共享文件的版本。
  • 安装该应用程序不会覆盖其他应用程序所共享的文件的其他版本。
  • 使用不同版本的共享文件的其他应用程序的后续安装不能覆盖此应用程序使用的文件。

由于 COM 的当前实现在注册表中为每个 CLSID/Context 对保留一个完整路径,因此它强制所有应用程序使用相同版本的共享 DLL。 为了使应用程序能够保留 COM 服务器的专用副本,Windows 2000 中的系统加载程序会检查应用程序的文件夹中是否存在 .LOCAL 文件。 如果系统加载程序检测到 .LOCAL 文件,它会更改其搜索逻辑以优先选择与应用程序位于同一文件夹中的 DLL。

当 Windows Installer 运行 IsolateComponents 操作时,它们会将 IsolatedComponent 表的 Component_Shared 列中指定的组件(通常是共享 DLL)的文件复制到与在 Component_Application 列中指定的组件(通常是 .exe 文件)相同的文件夹。 安装程序在此目录中创建一个文件,其长度为零字节,具有 Component_Application 的密钥文件的短文件名(通常情况下,此名称与应用程序的 .exe 相同),追加了 .LOCAL。 安装程序在其共享位置使用组件的注册,不为专用位置的组件的副本写入任何注册信息。

有关详细信息,请参阅: