快速业务通道

实现应用程序中的并行组件共享(二)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
有的,一些其他应用程序可能在该机器中安装了该组件的不同版本。当安装或卸载该组件时,您不希望做有损于其他应用程序的事。因此使用您的组件的应用程序将靠您,通过自注册入口点 DLLRegisterServer 或 DLLUnregisterServer(对于 COM 组件)或 DllInstall(对于 Win32 或 COM 组件)来正确安装它。有关这些函数的详细信息,请参阅“平台 SDK”中的 “Register Server”(英文)。

要在应用程序目录中正确安装组件,请像安装常规组件一样执行下列步骤:

注册 GUID 时,确认它们有相对路径名。

确认有对 GUID 的引用计数。

这有助于跟踪安装或卸装该 GUID 的次数。

如果 GUID 存在,则增加您的引用计数。

如果它不存在,则需要添加 GUID,并放入一个引用计数。例如:

{00000109-0000-0010-8000-00AA006D2EA4}

\InprocServer32

Default = "mycomponent.dll"

ReferenceCount=1

注意  类型库应包含在 DLL 中,并且不需要在系统注册表中注册。

要正确卸装应用程序目录中的组件, 请像安装常规组件一样执行下列步骤:

递减引用计数。如果达到 0,则知道可以删除 GUID,因为没有其他用户。如果大于 0,表示另一个应用程序安装在系统中并依赖于注册表的状态。

DLL/COM 重定向

DLL/COM 重定向,要求在部署应用程序时该应用程序是可执行的,并且所有的隔离组件安装在应用程序目录中,而不是系统目录中。另外,“.local”文件被部署在应用程序目录中,以修改 Windows 绑定行为,使应用程序绑定到隔离组件,而不是全局共享版本。

于是,应用程序将使用能安全地并行运行同一组件的不同版本的组件,这些组件的不同版本安装在其他位置、另一个应用程序目录中或系统目录中。如果系统中的另一个应用程序要求不同的版本,您的应用程序将不受影响,并且两个应用程序将用它们各自的组件版本运行。

如果另一个应用程序在系统中安装了新的组件版本,该应用程序的组件版本将保持不变,因为您已将它安装到您的应用程序目录中。在其他应用程序使用它的版本的同时,您的应用程序继续使用随该应用程序提供的组件版本。操作系统可以同时加载这两个版本。

注意  必须用操作系统正确注册隔离的 COM 组件,组件的每个版本才不会与该组件的其他可能存在的版本发生冲突。该注册要求,虽然组件的实现可因版本而异,但诸如 CLSID、ProgID、类型库和线程模型等注册的 COM 元数据,不能因版本而异。

注意  Windows 2000 和 Windows 98 第二版本都支持 DLL/COM 重定向。在该版本以前的 Windows 操作系统不支持他们。

使用 DLL/COM 重定向

DLL/COM 重定向允许开发者或管理员有选择地将现有组件与正在建立和开发的应用程序隔离开。本节讨论如何激活 DLL/COM 重定向,以及如何选择要隔离的组件 。

激活 DLL/COM 重定向

通过“.local”文件的形式在逐个应用程序的基础上激活 DLL/COM 重定向。在与应用程序的 .exe 文件相同的目录中,“.local”是一个空文件,它与应用程序的 .exe 文件名称相同,并且在该名称的结尾带有“.local”。

例如,要为称为“myapp.exe”的应用程序激活 DLL/COM 重定向,可在安装 myapp.exe 的相同目录中创建一个称为“myapp.exe.local”的空文件。

一旦激活 DLL/COM 重定向,则每当应用程序装入一个 DLL 或 OCX 时,Windows 将首先在安装该应用程序的 .exe 文件的目录中查找该 DLL 或 OCX。如果在安装 应用程序的 .exe 文件的目录中找到该 DLL 或 OCX 的一个版本,则不管在应用程序或注册表中指定了什么目录路径,应用程序都将使用它。如果在安装应用程序的 .exe 文件的目录中未发现该 DLL 或 OCX 的版本,则使用一般搜索路径或

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号