Как правильно зарегистрировать DLL в wix 3.9
Я собираю установщик и использую heat.exe для сбора всех необходимых файлов. однако мне нужно зарегистрировать некоторые файлы DLL и OCX, я посмотрел вокруг, как это сделать, но, похоже, возникли некоторые споры о том, как осуществить регистрацию этих файлов, в stackru, а также на других сайтах и форумах. Я хотел бы использовать следующее: SelfRegCost="1"
так как это выглядит как самый простой способ регистрации файлов. Это не нравится людям, потому что это может вызвать проблемы при ремонте или удалении программы.
Что вы думаете об этом методе и что бы вы мне посоветовали? пример рекомендуемой реализации кода будет высоко оценен.
заранее спасибо.
1 ответ
Проще говоря, любая форма самостоятельной регистрации (одним из них является COM) является антипаттерном. Существуют различные причины, некоторые из которых:
1) Они добавляют хрупкость к установке
2) Они могут прервать установку без вывода сообщений при сбое.
3) Они не регистрируют никакой информации о том, почему они потерпели неудачу.
4) они вне процесса; установщик не знает о них (без ремонта)
5) Они нарушают транзакционный характер установщика Windows (без отката)
6) Они замедляют установку
7) Они скрывают детали реализации и не могут быть просмотрены или преобразованы
Я бы зашел так далеко, чтобы сказать, что это не вопрос мнения, а скорее факты передовой практики. Но я полагаю, что в конечном итоге лучшие практики - это просто мнения. Тем не менее, за последние 20 лет я создал тысячи инсталляторов и могу без сомнений сказать, что саморегистрацию следует по возможности пропускать. Вместо этого используйте Heat, чтобы "собрать" метаданные COM и записать их в свой код wxs, чтобы MSI могла обработать это для вас. Есть и другие приемы, которые можно использовать, если Heat не может получить все детали.
Наконец, не используйте COM, когда это возможно. Например, вы можете вместо этого использовать манифест RegFree COM для имитации регистрации компонента.