Лучший способ использования regsvr32
для регистрации COM-интерфейса во время установки - нет. (ухмылка)
Вызов regsvr32
и другие формы «саморегистрации» во время установки на установщике Windows - это плохая практика. Интерфейсы COM часто разделяются между несколькими продуктами. Если пакет A регистрирует COM-интерфейс IFoo
, тогда пакет B (re) регистрирует один и тот же интерфейс, тогда, если какой-либо пакет удаляется и отменяет регистрацию IFoo
, он разбивает оставшийся пакет.
Предпочтительным методом является извлечение информации интерфейса COM и ее создание в записи таблицы реестра в пакете .msi
. MSI распознает согласованные записи реестра COM и управляет количеством ссылок, а не дублирует их. Вторая запись 2.Nth просто ударяет счетчик ссылок, каждая деинсталляция просто уменьшает его, пока последняя деинсталляция не уменьшит счетчик ref до нуля, а записи реестра фактически удаляются.
В WiX инструмент heat используется для «сбора» COM-интерфейсов (среди других данных) в исходные фрагменты WiX, содержащие необходимые записи реестра. У Installshield есть флаг «COM extract at build», который делает то же самое для проектов MSI и Installscript-MSI. Другие инструменты установщика Windows имеют схожие возможности.
Примечание. Установщик Windows (MSI) является базовым API-интерфейсом управления установкой, который является частью самой Windows. Вам нужны дополнительные инструменты для создания пакетов .msi
, которые используют этот API.
Windows Installer XML (WiX) - это XML-схема для описания пакетов установки на основе MSI, а также инструменты для генерации фактического пакета из документов в этой схеме.Installshield - еще один инструмент, который может генерировать пакеты .msi
.
Это те, которые я использовал. Существуют и другие инструменты, такие как InstallAware и Advanced Installer. Я не могу говорить о своих возможностях, никогда не использовал их сам. Visual Studio также имеет подключаемый модуль для создания пакетов установки, но по моему опыту он плохо масштабируется для продуктов промышленной прочности.
гм. 8 вопросов до этого, и не один ответ принят? –
«Принять ответ» - это какой-то вариант? я заметил, что некоторые ответы имеют зеленые границы. Вы имеете в виду? –
проверить faq - в принципе, у вас есть возможность отметить рядом с одним ответом, чтобы указать, что он был наиболее полезным для вас. –