После спрашивая о том, что 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 выглядит многообещающим... Я собираюсь дать ему шанс.
Обновление: в качестве ответа добавлено мое окончательное решение ниже.