2010-02-10 8 views
6

Opracowujemy aplikację ClickOnce z mieszanką komponentów .NET i starszych komponentów COM w C++.Czy można używać COM widocznych klas .NET z darmową rejestracją COM?

Obecnie dodajemy składniki COM C++ do komputera użytkownika za pomocą MSI (jest to warunek wstępny do zainstalowania naszej aplikacji ClickOnce), co oznacza, że ​​możemy wcześniej zarejestrować obiekty COM na komputerze użytkownika.

Nadal możemy wypychać aktualizacje reszty aplikacji napisane w języku C# za pośrednictwem ClickOnce, ale aktualizacja składników zainstalowanych przez MSI wymaga ręcznej interwencji.

Staramy się jednak dowiedzieć, czy możliwe jest zainstalowanie komponentów COM z C++ poprzez rejestrację darmową COM, tj. Wszystkie znajdują się w tym samym katalogu, a każdy składnik ma plik manifestu określający clsid dla każdej COM obiekt i interfejs. Oznaczałoby to, że możemy całkowicie pozbyć się MSI.

Ten link był dobrym wprowadzeniem do tematu.

Byłem w stanie uzyskać składnik .NET do załadowania obiektu COM w C++, ale nie na odwrót.

Czy ktoś wie, czy jest to możliwe?

Odpowiedz

5

Tak, to możliwe. Będziesz musiał użyć elementu <clrClass> w manifeście. Jest przyzwoity how-to located here. Dokumenty SDK są poza tym całkiem nieszczęśliwe, będziesz potrzebować Junfeng Zhang's blog, aby uzyskać lepsze informacje o tle.