Сборка C ++ \ Cli COM не может быть зарегистрирована MSI - PullRequest
0 голосов
/ 18 октября 2011

У меня серьезная проблема с моим приложением. У меня есть нативное приложение, которое использует некоторые управляемые классы для работы. Я создал оболочку C ++ \ Cli, которая является прокси между неуправляемым и управляемым кодом.

В этом прокси-проекте я объявил некоторые открытые объекты COM, и их реализация использует объекты C #, объявленные в управляемой сборке.

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

У меня есть проект MSI, который должен зарегистрировать этот прокси-сервер CLR, используя vsdraCOM или vsdraCOMRelativePath . На самом деле ни один из них не работает. Приложение показывает ошибку, что конкретный объект (определенный в этом прокси) не зарегистрирован.

Я могу зарегистрировать эту dll вручную, используя regsvr32, но я хочу избежать этого и позволить моему пакету MSI сделать это для меня.

Я пытался использовать Regasm на этой DLL, и он говорит, что не был найден объект для регистрации. Все открытые интерфейсы определены в файле IDL .

Можете ли вы сказать мне, как сделать эти определенные IDL интерфейсы открытыми или видимыми для regasm?

1 Ответ

0 голосов
/ 19 октября 2011

Я могу зарегистрировать эту dll вручную, используя regsvr32, но я хочу избежать этого и позволить моему пакету MSI сделать это для меня.

Варианты регистрации, предлагаемые Visual Studio,для общего пользования.Если они не работают для вас, вам нужно определить, как ваши файлы должны быть зарегистрированы, и использовать настраиваемое действие для этого.

Если работает regsvr32.exe, используйте его в настраиваемых действиях, которые регистрируютваши файлы.

Я пытался использовать Regasm на этой DLL, и он говорит, что не был найден объект для регистрации.

Regasm.exe isне то же самое, что regsvr32.exe .Regasm.exe регистрирует сборки и regsv32.exe регистрирует компоненты команд.

Можете ли вы сказать мне, как сделать эти определенные IDL интерфейсы открытыми или видимыми для regasm?

Regasm.exe может регистрировать только сборки со строгими именами.Подробнее об этом вы можете прочитать здесь: http://msdn.microsoft.com/en-us/library/xwb8f617.aspx

...