Каковы ограничения параллельного COM? - PullRequest
1 голос
/ 09 августа 2010

Нам нужно адаптировать наше приложение для использования через ClickOnce. Приложение состоит из файла .exe и огромного набора библиотек Visual C ++, некоторые из которых являются встроенными COM-серверами, используемыми другими библиотеками.

В настоящее время наш установщик regsvr32 регистрирует COM-серверы, но похоже, что приложениям ClickOnce не разрешается изменять реестр во время установки. Поэтому нам нужно что-то еще.

Первый вариант - удалить CoCreateInstance() и использовать вместо него LoadLibraryEx() / DllGetClassObject(). Это потребует модификации кода, но очень надежно - я не вижу причин, по которым это не сработает.

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

1 Ответ

1 голос
/ 09 августа 2010

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

Минусы:

  • Параллельное использование не является широко распространенным методом (за исключением пары компонентов, таких как библиотека времени выполнения VC ++ и общие элементы управления Windows, которые не используют COM), и для поиска информации по устранению неполадок требуется некоторое усилие. сеть
  • Если вы работаете на XP или Server 2003, вы не получите помощи от ОС, когда что-то пойдет не так. В частности, XP выдает вводящие в заблуждение сообщения в журнале событий; 2к3 лучше. Vista и выше дают вам инструмент sxstrace .
  • Вам нужно будет поддерживать файлы манифеста параллельно с самими компонентами. Во многих отношениях файлы манифеста дублируют информацию уже в библиотеках типов. Принимая во внимание, что вы можете поддерживать их вручную (это файлы XML с достаточно простой схемой), вы можете создавать их заново каждый раз, когда выполняете сборку. Это решает проблему управления версиями.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...