Вопрос

Мы используем модель автоматизации COM-объектов, чтобы сделать наше приложение доступным для наших клиентов.

Они по большей части используют python для доступа к нашему интерфейсу приложения.

Поскольку мы хотим иметь возможность устанавливать (еще не запущенные, это еще одна проблема) разные версии приложения, мы изменяем наши COM-компоненты, чтобы они были бесплатными.

Но это противоречит доступу из языков сценариев с помощью автоматизации IDispatch, поскольку им нужны записи в реестре.

Наш подход заключается в создании приложения, которое управляет активной версией нашего реального приложения. Он позволяет пользователю решить, какую версию он хочет иметь, и он заботится о записях реестра.

Каковы альтернативы нашему подходу?

Это было полезно?

Решение

В COM есть протокол для этого. Если вы создаете версии интерфейсов (и меняете GUIDS для каждой версии), вы можете установить несколько версий. Microsoft делает это с помощью WORD и т. Д.

Можно создать класс Word.Document.5, относящийся к 5-й версии библиотеки, или просто Word.Document, который создаст экземпляр самого высокого подарка на машине. Я не уверен, встроена ли эта функциональность в COM или ее нужно усовершенствовать, но ее стоит изучить.

Другие советы

Regfree COM-объекты доступны через Microsoft. Объект Windows.ActCtx .

Что касается автоматизации IDispatch, требующей записи в реестре - это не совсем правильно. Я предполагаю, что вы используете стандартную реализацию ATL, IDispatchImpl. Мы решили это решение, предоставив собственную реализацию IRegFreeDispatchImpl, которая использовала API для управления контекстом активации в образом Здесь предлагается обернуть все точки входа в DLL с помощью активации / деактивации контекста активации.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top