Каковы ограничения / преимущества использования MSM вместо MSI?

В настоящее время я создаю продукт, распространяемый через установщик MSI Windows. Этот продукт интегрируется нашими клиентами, используя различные формы, такие как мы, в своем собственном MSI, используя загрузчик / цепочку, например, WiX Burn, или инструменты разработки, такие как InstallShield.

Имея в виду этот сценарий, я всегда хотел знать, каковы ограничения и / или преимущества использования модулей слияния (MSM) вместо сохранения MSI, а также каков рекомендуемый в настоящее время подход к выбору одного из других.

2 ответа

Решение

На бумаге модули слияния хороши, но в реальном мире я нахожу их неуклюжими для обновления и, следовательно, подверженными ошибкам, так как они могут быть объединены во многие установки до того, как будут обнаружены дефекты. В результате я не рекомендую объединять модули вообще. Я предпочитаю один MSI, который можно запустить как пакетный процесс через загрузчик или пакетный файл, и который также может быть легко обновлен. Это позволяет избежать всевозможных проблем, которые обычно не являются интуитивными.

Я хочу добавить, что модули слияния хорошо работают для действительно общих файлов, установленных в местах файловой системы, которые предназначены для общих файлов и которые изменяются нечасто. Обычно это ОС времени выполнения. Эти модули слияния обычно тщательно тестируются и работают нормально. Тем не менее, часто я вижу, как люди используют модули слияния для файлов, которые часто меняются, и что они в конечном итоге устанавливаются в разных местах по-разному. Этот вид использования - полный беспорядок и чрезвычайно потраченные впустую усилия.

Сказав все это, я действительно успешно использовал модули слияния, когда мне требовалось расширенное управление выпусками с повторяющимся неизменным включением набора файлов через модуль слияния в несколько установок. Даже тогда я столкнулся с проблемой версии через некоторое время с парой файлов, нуждающихся в обновлении, и последующими незначительными ошибками с использованием неправильного модуля слияния, когда я оставлял проект кому-то другому. Я также испытал необходимость перестроить все настройки из-за незначительного исправления ошибки модуля слияния. Все настройки должны были снова пройти QA. Очень расстраивает с такой жесткой связью.

Если ваши требования просты, и вы не берете на себя огромный проект, состоящий из нескольких продуктов, разделяющий несколько файлов, используйте MSI вместо MSM. Проще понять, обычно меньше работы, больше атомарных обновлений и меньше риск появления одной и той же ошибки во многих установках из-за обновления модуля слияния или проблем проектирования.

В модулях слияния нет ничего плохого. Их основное использование (которое не было упомянуто) - совместное использование. Если вам нужен один и тот же набор общих файлов в нескольких файлах MSI, им нужен один и тот же набор руководств для компонентов, чтобы сохранить правила общего доступа. Или, если вы даете файлы клиентам, чтобы они могли использовать их (например, Microsoft) в своих сборках MSI, то предоставьте им модули слияния. Это одна из причин, по которой MS и другие поставщики перераспределяют модули слияния, чтобы каждый мог создавать свои MSI и устанавливать их в одной системе без сбоев при совместном использовании файлов. Я также видел модули слияния, используемые в качестве общего пользовательского интерфейса для файлов MSI. Но в основном они необходимы для правильного использования общих файлов. По своему опыту я скажу, что катастрофа, вызванная неправильным использованием общих файлов, намного хуже, чем любая воспринимаемая трудность с использованием модулей слияния. Также обратите внимание, что они универсальны и могут быть включены во все инструменты, которые создают файлы MSI.

Я никогда не находил модули слияния трудными для исправления, версии или исправления. Серьезные обновления не проблема. Единственная потенциальная проблема, с которой я столкнулся, связана с процессами сборки, которые перестраивают все двоичные файлы в модуле слияния во время создания сборки патча (.msp). Если исправление требуется только одному двоичному файлу, но вы скомпилируете их все, их версии и внутренние компоненты могут измениться настолько, чтобы процесс исправления (различие между двумя файлами MSI и их содержимым) сообщал вам, что их необходимо включить в исправление, поскольку они изменился, но этой проблемы можно избежать, если это действительно проблема.

Другие вопросы по тегам