Сборка C++\Cli COM не может быть зарегистрирована MSI

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

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

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

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

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

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

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


person Community    schedule 18.10.2011    source источник


Ответы (1)


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

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

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

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

Regasm.exe не является то же, что и regsvr32. исполняемый файл. Regasm.exe регистрирует сборки, а regsv32.exe — компоненты команд.

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

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

person cosmin    schedule 19.10.2011