После вопроса о том, что Visual Studio делает для регистрации библиотеки COM, стало ясно, что VS сделал две вещи для регистрации COM:
- Зарегистрировали COM-библиотеку
- Создает и регистрирует библиотеку типов
Visual Studio, похоже, выполняет эту регистрацию с помощью regasm.exe. Для первой части (прямая регистрация COM) с использованием tallow
или heat
(WiX 2.0 или WiX 3.0) кажется, что вся базовая регистрационная информация COM получена правильно.
Однако то, что сало / тепло, похоже, не делает, так это настраивает установку библиотеки типов. Для этого можно было бы создать настраиваемое действие с помощью установщика WiX и regasm.exe, но запуск настраиваемых действий не является оптимальной практикой, когда речь идет об установщиках на основе установщика Microsoft.
При дальнейшем исследовании выяснилось, что msi может создавать библиотеку типов при установке. Фактически, WiX, похоже, имеет прямую поддержку для этого! В элемент файла вы можете добавить элемент Typelib. Фактически, здесь на wix есть пример заполнение элемента TypeLib элементами Interface.
Кажется, есть как минимум два обязательных атрибута для элемента интерфейса:
- Id
- Имя
Ларри Остерман говорит о других частях интерфейса, которые необходимо зарегистрировать. для TypeLib в целом, и эта запись в интерфейсе, кажется, заботится об отдельных частях. Ларри говорит, что нам нужно указать ProxyStubClassId32 как «{00020424-0000-0000-C000-000000000046}», чтобы мы могли легко это добавить.
Куда идти дальше и что заполнять для различных элементов интерфейса, меня озадачило. Я пошел дальше и добавил элемент TypeLib в свой файл wix, и он успешно компилируется. Я немного не понимаю, как настроить элементы интерфейса. Что нам нужно сделать, чтобы правильно заполнить элемент TypeLib, и какие приложения или инструменты я могу использовать для его получения?
Ответ wcoenen ниже выглядит многообещающим ... Я попробую.
Обновление: в качестве ответа я опубликовал свое окончательное решение.