如何在注册表中为多个版本的COM服务器配置?

时间:2013-01-23 17:43:05

标签: delphi com registry delphi-xe

我有一个应用程序的多个版本(主要版本和次要版本),并希望在我的注册表中像AutoCAD这样的程序进行设置。这是我的注册表中的一个例子:

enter image description here

正如您在此处所看到的,AutoCAD.Application仅指向最近执行的AutoCAD版本。每个版本都有自己的COM服务器(我可以弄清楚如何在我的IDE中使用Delphi XE)。 CLSID键包含与AutoCAD.Application.19 - >相同的信息。只要执行不同的版本,CLSID就会发生变化。

我的问题是,是否有自动方式或实用程序已在注册表中添加父COM对象并填充我的应用程序的CLSID和当前版本(CurVer)?

如果没有自动执行此操作的方法,那么手动执行此操作会是什么样的?即使你的答案不是用Delphi / Pascal语言,我也会看看它。

任何帮助都会受到赞赏,因为我在一个未知的领域,谷歌一直没有像往常一样帮助我。

1 个答案:

答案 0 :(得分:1)

您要找的是version-independent PROGID。这些不是COM对象;它们只是用于将人类可读的PROGID解析为计算机友好的CLSID的注册表项。

通常,您的应用程序每个类将有两个PROGID - 一个版本独立,一个版本相关。与版本无关的PROGID转发到依赖于版本的PROGID,然后解析为CLSID。

在发布应用程序的新版本时,您将为新版本创建新的CLSID,添加映射到新CLSID的新版本相关PROGID,并更新与版本无关的PROGID的CurVer子项以指向您的新版本相关PROGID。

Larry Osterman在他的series中详细介绍了COM注册的确如何运作。