2

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

在此处输入图像描述

正如您在此处看到的,AutoCAD.Application 只是指向最近执行的 AutoCAD 版本。每个版本都有自己的 COM 服务器(我可以在我的 IDE、Delphi XE 中弄清楚如何做)。CLSID 键包含与 AutoCAD.Application.19 -> CLSID 相同的信息,并且每当执行不同的版本时都会更改。

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

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

感谢任何帮助,因为我在一个未知的领域,谷歌没有像往常那样帮助我。

4

1 回答 1

1

您正在寻找的是与版本无关的 PROGID。这些不是 COM 对象;它们只是用于将人类可读的 PROGID 解析为计算机友好的 CLSID 的注册表项。

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

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

Larry Osterman 在他的系列文章中更详细地介绍了 COM 注册是如何工作的。

于 2013-10-02T21:47:35.047 回答