как правильно зарегистрировать DLL в wix 3.9

Я создаю установщик и используюheat.exe для сбора всех необходимых файлов. однако мне нужно зарегистрировать некоторые файлы DLL и OCX, я посмотрел, как это сделать, но, похоже, есть некоторые дебаты о том, как реализовать регистрацию этих файлов, на stackoverflow, а также на других веб-сайтах и ​​форумах. Я хотел бы использовать следующее: SelfRegCost="1" так как это выглядит как самый простой способ регистрации файлов. но людям это не нравится, потому что это может вызвать проблемы при восстановлении или удалении программы.

что вы думаете об этом методе и что бы вы мне посоветовали? пример рекомендуемой реализации кода будет высоко оценен.

заранее спасибо.


person F.J    schedule 22.06.2015    source источник


Ответы (1)


Проще говоря, любая форма самостоятельной регистрации (одной из них является 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
comment
Хороший ответ, возможно, также взгляните на: -регистрация считается вредной. - person Stein Åsmul; 22.06.2015
comment
Хорошая ссылка. Пометил это как дубликат. - person Christopher Painter; 22.06.2015
comment
спасибо за отзыв, однако мне нужно зарегистрировать некоторые DLL, иначе программа не загрузится. Я не знаю, почему программист принял решение о необходимости регистрации DLL. - person F.J; 23.06.2015
comment
Ссылка на ваш пост здесь. У этого есть хороший прагматичный призыв к этому. - person Stein Åsmul; 17.05.2019
comment
К сожалению, я не думаю, что Ф.Дж. вообще понял мою точку зрения. - person Christopher Painter; 17.05.2019
comment
Да, наверное. Ссылка на другой ответ о регистрации COM для дальнейшего использования другими. - person Stein Åsmul; 17.05.2019