Такая беда. Устанваливаю COM-компонент из MSI. MSI сделан в WiX.
В скрипте WiX, внутри File есть элемент TypeLib, в ней Class. Для обоих элементов Advertise="no".
При запуске тестовой проги (на .NET) в системе, где установлен COM-компонент — GetTypeFromCLSID отрабатывает нормально, GetConstructor — всегда возвращает NULL.
В regmon видно, что при попытке прочитать HKCR\CLSID\{GUID}\InprocServer32 программе отвечают Not Found, хотя в regedite этот раздел есть. Кроме того, при попытке чтения HKCU\CLSID\{GUID}\InprocServer32 программе говорят SUCCESS, хотя в regedit такого раздела нет!
Вопрос: что за фигня с Class?
Здравствуйте, BoresExpress, Вы писали:
BE>Такая беда. Устанваливаю COM-компонент из MSI. MSI сделан в WiX.
BE>В скрипте WiX, внутри File есть элемент TypeLib, в ней Class. Для обоих элементов Advertise="no".
BE>При запуске тестовой проги (на .NET) в системе, где установлен COM-компонент — GetTypeFromCLSID отрабатывает нормально, GetConstructor — всегда возвращает NULL.
BE>Вопрос: что за фигня с Class?
Согласно WiX FAQ (
здесьАвтор: algol
Дата: 10.07.06
) Advertise должен быть yes. В случае Advertise="no" нужно прописывать также элементы Interface:
Please note that in order to properly use this non-advertised, you will need use this element with Advertise='no' and also author the appropriate child Interface elements by extracting them from the type library itself.
Здравствуйте, algol, Вы писали:
A>Согласно WiX FAQ (здесьАвтор: algol
Дата: 10.07.06
) Advertise должен быть yes. В случае Advertise="no" нужно прописывать также элементы Interface:
У меня они прописаны.
Попробовал вариант по ссылке (сделал всё точно так же).
Не помогло.
Здравствуйте, algol, Вы писали:
A>Здравствуйте, BoresExpress, Вы писали:
BE>>У меня они прописаны.
BE>>Попробовал вариант по ссылке (сделал всё точно так же).
BE>>Не помогло.
A>А self регистрацию пробовали? Или если вручную зарегистрировать? Возможно причина не в инсталляторе.
Ха, дело выбо в том, что моему COM-компоненту не хватало библиотек! Добавил соответствующие merge modules в инсталляцию и всё заработало!
Спасибо за наводку!