Проще говоря, любая форма самостоятельной регистрации (одной из них является COM) является антипаттерном. Существуют различные причины, некоторые из которых:
1) Добавляют хрупкости установке
2) Они могут остановить автоматическую установку в случае сбоя.
3) Они не регистрируют никакой информации о том, почему они потерпели неудачу.
4) Они вне процесса; установщик не знает о них (без ремонта)
5) Они нарушают транзакционный характер установщика Windows (без отката)
6) Они замедляют установку
7) Они скрывают детали реализации, их нельзя наблюдать или трансформировать.
Я бы зашел так далеко, чтобы сказать, что это не вопрос мнения, а скорее вопрос фактов передовой практики. Но я полагаю, что в конце концов лучшие практики — это тоже просто мнения. Тем не менее, я создал тысячи инсталляторов за последние 20 лет и могу с уверенностью сказать, что самостоятельную регистрацию следует по возможности пропускать. Вместо этого используйте Heat, чтобы «собрать» метаданные COM и добавить их в свой код wxs, чтобы MSI могла обрабатывать это за вас. Есть и другие приемы, которые можно использовать, если Heat не может получить все детали.
Наконец, не используйте COM, когда это возможно. Например, вместо этого вы можете рассмотреть возможность использования манифеста RegFree COM для имитации регистрации компонента.
См.: Не используйте Таблицы SelfReg и TypeLib.
person
Christopher Painter
schedule
22.06.2015