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

#com #c -cli #windows-installer

#com #c -cli #windows-установщик

Вопрос:

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

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

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

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

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

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

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

Ответ №1:

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

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

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

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

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

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

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