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

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

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


person Santiago Agüero    schedule 19.02.2014    source источник
comment
Надеюсь, обсуждение помогло - не забудьте спросить своих клиентов, что они предпочитают. И помните, что совсем другое дело - установить настоящий автономный продукт в общую папку для всех клиентов или просто добавить несколько файлов в собственную папку установки каждого продукта.   -  person Stein Åsmul    schedule 21.02.2014
comment
@Glytzhkof обсуждение было действительно полезным. Я приму все советы. Спасибо!   -  person Santiago Agüero    schedule 21.02.2014


Ответы (2)


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

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

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

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

person Stein Åsmul    schedule 19.02.2014
comment
Спасибо за ответ! У вас есть упоминания о проблеме с версией? Я просто хочу знать, потому что в моем продукте много серьезных обновлений ... - person Santiago Agüero; 19.02.2014

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

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

person PhilDW    schedule 19.02.2014
comment
Спасибо @PhilDW за то, что нашли время ответить! Итак, учитывая, что у меня есть продукт, с которым интегрируются разные клиенты, было бы хорошим подходом иметь MSM, а затем, если мы хотим распространять только наш продукт, создадим MSI с этим MSM? Или в этом случае мы должны пойти напрямую с MSI? Кроме того, знаете ли вы, есть ли у использования MSM ограничения по сравнению с MSI? Что насчет пользовательских действий, например? - person Santiago Agüero; 20.02.2014
comment
В целом согласен с большинством из них. Я по-прежнему считаю, что модули слияния лучше всего подходят для среды выполнения ОС и файлов, которые действительно используются совместно в надлежащем месте для общих файлов. Часто я вижу, как люди используют модули слияния для файлов, которые в конечном итоге часто меняются и которые затем устанавливаются в разных местах в разных вариантах в разовой форме. Полный беспорядок и потраченные впустую усилия. При хорошем дизайне модули слияния вполне приемлемы. - person Stein Åsmul; 20.02.2014
comment
Что касается ограничений MSM для файлов MSI, это яблоки и апельсины. MSM можно использовать только при создании файла MSI - вы не можете установить их содержимое другим способом. У вас есть некоторые предположения о файлах MSM, которые я не могу понять, поэтому вопрос вызывает недоумение. Если вы передаете файлы MSM своим клиентам, они могут использовать их только для создания файлов MSI. Если это имеет смысл, сделайте это, точно так же, как Microsoft распространяет модули слияния для людей, чтобы они могли создавать установки, содержащие поддержку ATL, C ++ и т. Д. Dll, поэтому мы все устанавливаем их правильно и должным образом делимся ими. - person PhilDW; 20.02.2014
comment
Спасибо @PhilDW за ваш последний комментарий. Это очень помогло! - person Santiago Agüero; 21.02.2014