更新com dll

时间:2008-11-27 00:39:55

标签: com

我们有一个使用COM dll的应用程序。现在,我们正在推动这个dll的更新。我们复制新的dll(覆盖现有的dll)并注册dll。这是一个很好的做法。或者,我们是否应该先在客户机上取消注册dll。

5 个答案:

答案 0 :(得分:2)

只要您的旧COM dll实现完全相同的接口,就没有理由取消注册/注册

答案 1 :(得分:1)

在更新COM dll时,我们不应该更改旧接口,即IID(COM的基本规则),以便它不会破坏使用旧接口的客户端。

所以没有必要取消注册旧的COM DLL,只需注册新的DLL。在注册新的dll时,由于旧接口使用相同的IID,因此不会破坏使用旧接口的客户端。

答案 2 :(得分:0)

如果您只想替换Com Dll,您必须考虑两件事:

  1. 他们新旧都有相同的GUID。
  2. 您没有将任何新接口附加到更新的com Dll。
  3. 否则你应该取消注册/注册你的com dll

答案 3 :(得分:0)

好吧,假设您使用VB6(几年前常见的情况)编写COM服务器,您需要将其设置为二进制兼容,以使VB保持组件的相同GUID。

由于DLL中的类的对象大部分时间是使用内置于同一dll中的类工厂创建的,如果GUID与Class Factory不知道的那些匹配,则无法为旧的GUID创建对象如果没有对接口进行任何更改。

这是DLL Hell的一部分,还记得吗?

答案 4 :(得分:0)

如果您知道所有客户端平台都运行Windows XP或更高版本,您可以考虑使用免注册COM,从而避免整个问题。

有关详细信息,请参阅my answer to "How to register COM libraries at runtime?"。文章"Registration-Free Activation of COM Components: A Walkthrough" on MSDN详细介绍了该怎么做。