Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Автоматизация регистрации версий COM-серверов в реестре: опыт интеграции с AutoCAD

Delphi , Технологии , COM и DCOM

Автоматизация регистрации версий COM-серверов в реестре: опыт интеграции с AutoCAD

Разработчики, работающие с COM-серверами и использующие среду разработки, такую как Delphi, сталкиваются с необходимостью регистрации своих компонентов в системном реестре. Это особенно актуально, когда речь идет о многоверсионных приложениях, где каждая версия должна иметь свой уникальный COM-сервер. В данной статье мы рассмотрим, как автоматизировать процесс регистрации версий COM-серверов в реестре, используя примеры из практики интеграции с AutoCAD.

Проблема и ее описание

Пользователь столкнулся с задачей регистрации нескольких версий COM-сервера в системном реестре, аналогично тому, как это реализовано в AutoCAD. Каждая версия AutoCAD имеет свой уникальный COM-сервер, и реестр содержит соответствующие записи, которые указывают на последнюю выполненную версию. Необходимо создать аналогичную структуру для собственного приложения, разработанного в Delphi XE.

Решение проблемы

Для автоматизации процесса регистрации COM-серверов в реестре можно использовать версионно-независимые PROGID. Эти записи в реестре позволяют связать человеко-понятные идентификаторы (PROGID) с компьютерными идентификаторами классов (CLSID). Каждый класс обычно имеет два PROGID: один версионно-независимый и один версионно-зависимый. Версионно-независимый PROGID перенаправляет на версионно-зависимый, который, в свою очередь, разрешается в CLSID.

При выпуске новых версий приложения создаются новые CLSID, добавляется новый версионно-зависимый PROGID, который указывает на новый CLSID, и обновляется подключение версионно-независимого PROGID в подключе CurVer, чтобы оно указывало на новый версионно-зависимый PROGID.

Пример кода на Object Pascal (Delphi)

program RegisterCOMServer;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  Registry;

procedure RegisterPROGID(const PROGIDName, CLSIDKey: string; Version: string);
var
  VersionDependentPROGID: string;
begin
  VersionDependentPROGID := PROGIDName + '.' + Version;
  // Регистрация версионно-зависимого PROGID
  with TRegistry.Create(KEY_READ or KEY_WRITE) do
  try
    RootKey := HKEY_CLASSES_ROOT;
    if not KeyExists(PROGIDName) then
      CreateKey(PROGIDName);
    WriteString(PROGIDName + '\CLSID', CLSIDKey);
    RootKey := HKEY_CLASSES_ROOT;
    RootKey := VersionDependentPROGID;
    WriteString('', CLSIDKey);
    // Обновление версионно-независимого PROGID
    RootKey := HKEY_CLASSES_ROOT;
    RootKey := PROGIDName + '\CurVer';
    WriteString('', VersionDependentPROGID);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end;

begin
  RegisterPROGID('MyApplication', '{12345678-90AB-CDEF-1234-567890ABCDEF}', '1.0');
  RegisterPROGID('MyApplication', '{23456789-0ABC-DEF1-2345-678901234567}', '2.0');
  // Добавьте дополнительные вызовы функции для регистрации других версий
  Readln;
end.

Подтвержденный ответ

Использование версионно-независимых PROGID и версионно-зависимых PROGID является проверенным способом регистрации COM-серверов для многоверсионных приложений. Это позволяет обеспечить корректную работу с различными версиями приложения, аналогично тому, как это реализовано в AutoCAD.

Заключение

Автоматизация регистрации версий COM-серверов в реестре – важная задача для разработчиков, работающих с многоверсионными приложениями. Использование версионно-независимых PROGID и версионно-зависимых PROGID позволяет создавать гибкую и надежную систему регистрации, которая будет служить хорошей основой для дальнейшего развития и поддержки приложения.

Создано по материалам из источника по ссылке.

Описание: Разработчики автоматизируют процесс регистрации версий COM-серверов в реестре для интеграции с AutoCAD, используя версионно-независимые и зависимые PROGID.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: COM и DCOM ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-27 01:51:25/0.0033731460571289/0