В чем преимущества использования файлов .msi по сравнению с обычными файлами setup.exe?
У меня сложилось впечатление, что развертывание проще на машинах, где у пользователей мало разрешений, но они не уверены в деталях.
Какие функции msiexec.exe упрощают развертывание по сравнению с использованием сценариев setup.exe?
Есть какие-нибудь советы или рекомендации при развертывании приложений .msi?
ОБНОВЛЕНИЕ, июль 2018 г.: Чрезвычайно сжатый обзор приведенной ниже информации доступен в stackoverflow: Основные преимущества MSI ("executive summary"
- своего рода).
Я работал в разработке как релиз-менеджер, инженер-строитель, установщик и как упаковщик приложений и инженер по развертыванию в крупных корпорациях.
Это обзор лучших (и худших) концептуальный и реальные особенности компании MSI. Большинство общие проблемы дизайна найденные в файлах MSI представлены как отдельный ответ ниже. Не претендовать на полноту - на самом деле просто беспорядочная «свалка мозгов» - задуманная как «то, что нельзя найти в книгах» (вероятно, не зря).
Я тоже хочу это предложить Статья MSDN как хорошее чтение: Установщик Windows: преимущества и реализация для системных администраторов.
Одним словом, MSI занимается стандартизацией и занимается "запахи развертывания»устаревших технологий установщика. Целый набор неудачных проектов архитектуры установки, вызывающих повторяющиеся проблемы при развертывании.
В целом MSI обеспечивает всеобъемлющая стандартизированная структура для установщика, что очень важно также включает удаление и встроенные функции и опции для бесшумный бег с участием стандартизованный графический интерфейс который может быть запускается удаленно.
Одни только эти функции представляют собой значительное улучшение по сравнению с предыдущими технологиями установки, которые обрабатывали удаление и автоматический запуск бессистемно - возможно, наиболее важные функции для корпоративного развертывания наряду с надежной удаленное управление пакетами через Active Directory или специальные инструменты удаленного администрирования, такие как Microsoft SCCM (ранее SMS), IBM Tivoli, CA Unicenter и тому подобное.
Кто-то продублировал предыдущую версию этого ответа. Может быть, более быстрое чтение?
MSI активно отговаривает устаревшее развертывание пахнет по дизайну. Эти темы обсуждаются в следующих разделах ниже, но в качестве краткого списка наиболее заметных проблем с устаревшими установщиками и более старой технологией развертывания были:
Список продолжается множеством других важных и признанных недостатки развертывания. Очевидно, что эти проблемы чаще всего возникали в мире корпоративного развертывания, и это привело к появлению бизнеса "переупаковка приложений" где устаревший установщик захвачен с технологии сканирования дисков и реестра чтобы создать соответствующий стандартам файл MSI для надежного развертывания.
Переупаковка приложений это работа специалиста и, как правило, приводит к созданию файлов MSI превосходного качества, если все сделано правильно знающими людьми, но невозможно перепаковать все приложения из-за сложной логики регистрации, которая должна запускаться в интерактивном режиме для работы определенных приложений.
В простой язык действительно важные преимущества MSI (в произвольном порядке):
в реальный мир я нашел менее успешные аспекты включать исправление (очень сложный), MSI-GUI (простые функции, довольно сложные, не хватает гибкости), устойчивость (может вызвать трудно отладить повторяющиеся проблемы с самовосстановлением), и общая сложность работы с технологией для новичков (временами высокая сложность основных операций - например, обновления, графический интерфейс и множество взаимодействующих деталей приводят к неожиданным результатам и т. д.). Скорость процесса установки также значительно снизилась из-за увеличения накладных расходов MSI. См. Несколько советов по увеличению скорости установки MSI..
В остальной части текста некоторые из этих аспектов MSI рассматриваются более подробно.
Файл MSI - это, по сути, урезанный База данных SQL-сервера хранится как Файл хранилища со структурой COM - по сути файловая система в файле или совокупность потоков данных. Это тип файла, используемый в Документы Microsoft Office, и это дает стандартный формат это может быть рассмотрел и осмотрел - а огромная проблема для крупных корпораций.
За исключением скомпилированных настраиваемых действий, файл MSI является белая коробка. Если установка изменяет что-то сумасшедшее, например, общесистемные сетевые настройки, вы можете увидеть это, используя соответствующие инструменты. Заметным исключением является скомпилированные настраиваемые действия - которые черный ящик. Требования к логотипу Windows требуют, чтобы пользовательские действия были аннотированы, чтобы объяснить, что они делают, но разработчики установки часто игнорируют это. Надеюсь, с появлением Wix ситуация улучшится.
Чтобы определить, что на самом деле делают такие скомпилированные настраиваемые действия с технической точки зрения, настроить захват это необходимо. По моему опыту, это почти никогда не делается. Чаще всего обращаются к поставщику за информацией, если программное обеспечение требует утверждения для корпоративного развертывания, и тогда его использование может быть запрещено самим приложением, а не только настройкой.
MSI можно настроить с помощью преобразований в соответствии с потребностями и стандартами организации, при этом обеспечивая возможность взаимодействия с обновлениями программы установки поставщика. Вы не меняете сам установщик, вы создаете свою настройку в отдельном файле для конкретной организации, который называется преобразовать (файл .mst) (фрагмент базы данных или транзакция изменения, если хотите). Вы можете отключить пользовательские действия и вообще изменить, переопределить или отключить что-либо в установщике, и вы даже можете добавить новые вещи, включая файлы. Файлы преобразования также иногда используются для локализации файла MSI на разные языки. К одному MSI можно применить несколько преобразований, вот образец с участием усеченные пути:
msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
Краткое описание параметров:
/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.
Установщик Windows поддерживает обширная база данных всех элементов, установленных продуктом в реестре (HKEY_CLASSES_ROOT \ Установщик - никогда ничего не меняйте прямо здесь! Это касается и экспертов).
Вы можете надежно определить, установлен ли продукт, какие функции были установлены и какие версии файлов были установлены. Кроме того, вы можете получить список любых исправлений, которые были применены к базовому продукту, если таковые имеются. Вы можете получить доступ к этой базе данных через API, поддерживающие Win32, COM или .NET. используя различные инструменты сценариев, настройки и администрирования, такие как Microsoft SCCM, IBM Tivoli, CA Unicenter и т.д...
MSI также включает принципы "повышенных прав" который позволяет ограниченному пользователю запускать установку продукта, для установки которого требуются права администратора. Это часть "функция рекламы", что позволяет администратору сделать установщики доступными для пользователей, не устанавливая их на всех рабочих станциях. Сам установщик должен быть правильно создан для нескольких основных учетных записей, чтобы эта концепция повышенных прав работала правильно. Пользователи могут инициировать установку продукта сами, или установка может контролироваться специальной системой развертывания, такой как SCCM, Tivoli, Unicenter (обычно более крупные компании). Нет необходимости возиться с временные админ-права чтобы все заработало что часто бывает с установщиками старых версий.
Обширная база данных установки также гарантирует, что у вас будет полный обзор установленных исправлений и, следовательно, возможность обнаруживать уязвимости безопасности с помощью средств автоматизации и администрирования.
Файлы MSI можно проверить с помощью правил проверки, чтобы убедиться, что они соответствуют ряду правила внутренней согласованности (именуемый ICE). Корпорации могут создавать свои собственные проверки ICE для обеспечения соблюдения особых корпоративных правил и требований. Это очень помогает в обеспечении качества. Причина, по которой проверка возможна, связана с самодостаточным характером реляционных баз данных и связанной с ними схемы базы данных. База данных должна быть внутренне согласованной и соответствовать своей собственной схеме в отношении внешних ключей, типов данных, ширины поля, версии схемы и т. Д. Проверка также выходит за рамки этого и способна обнаруживать подлинные логические недостатки и ошибки в пакете. , а не только недостатки форматирования и типа. Например, он может обнаруживать файлы или типы файлов, которые развертываются в ошибочные целевые места назначения.
В установка администратора функция установщика Windows предоставляет стандартный способ извлечения исходных файлов из MSI (вот дополнительная информация по этой теме). Эти исходные файлы затем можно разместить в общей папке и сделать их доступными для установки на всех рабочих станциях. Это гарантирует выполнение операций восстановления, удаления и изменения без запроса установочного носителя на компакт-диске или аналогичном. Это особенно важно для операций исправления и обновления, которые могут потребовать доступа к исходным файлам старых версий в особых случаях.
С этой функцией отказоустойчивости также связаны общие проблемы. Большинство администраторов имели опыт работы на машинах с циклические циклы самовосстановления это, кажется, никогда не прекратится. Перейдите по ссылке, чтобы просмотреть длинный список причин этой проблемы. И опять, вот более короткая версия это может быть легче читать.
Установка файла MSI обычно вызывает создание файла точка восстановления. Кроме того, все файлы и элементы реестра, замененные или перезаписанные во время установки, будут сохранены и восстановлены, если установка не будет завершена, без каких-либо изменений, сделанных в пользовательских действиях.
Настраиваемые действия должны реализовывать собственную поддержку отката для соответствия логотипу Windows. Это часто игнорируется, но требует создания второго настраиваемого действия для отмены изменений, внесенных основным настраиваемым действием.
Откат гарантирует, что рабочая станция останется в стабильном состоянии даже в случае сбоя установки. В фактический сценарий отката хранится в скрытая папка непосредственно на системном диске - обычно C: \ Config.MSI, и он содержит файлы с расширениями .RBS и .RBF - Файлы сценариев отката. Как и следовало ожидать, плохо спроектированные файлы MSI могут нарушать встроенные функции Windows, см. Другой мой пост в этой ветке для получения более подробной информации.
Есть способы отключить откат и ускорить установку. Обычно не рекомендуется, но вот подробности о свойстве MSIFASTINSTALL и DISABLEROLLBACK. Это сложная функция, но вот краткий обзор отката.
Несмотря на свою сложность, установка исправлений в установщике Windows полностью управляется и регистрируется в системе, поэтому состояние безопасности системы можно определить путем проверки того, что было установлено. Обновления стандартизированы до нескольких основных вариантов, и это позволяет выполнять обновления с более высокой степенью уверенности при условии, что вы сможете справиться с соответствующей сложностью. Системы развертывания смогут сообщать, какие обновления не удались и почему.
С субъективной точки зрения исправление работает хорошо для 2 основных использования: 1) небольшие исправления для поставляемых продуктов, и 2) исправление установленного продукта для исправления неправильной последовательности удаления, которая препятствует чистому удалению продукта.
Патч есть просто механизм доставки для обновление, которое уже работает. Таким образом, это просто контейнер, который больше сложно и подвержен ошибкам чем исходная установка. Правило номер один для патча в том, что он должен быть меньше оригинального MSI, иначе нет очевидной причины для установки патча. Патч может быстро стать огромным, если он нацелен на несколько версий продукта.
Установщик Windows предоставляет стандартизированная функция ведения журнала что намного превосходит предыдущие воплощения, хотя и является почти чрезмерно многословным. Файлы журнала можно расшифровать с помощью анализаторы журналов, и настраиваемые уровни журнала может использоваться для исключения создания слишком больших файлов журнала с ненужной информацией. Для целей отладки чрезвычайно полезно подробное ведение журнала. Видеть Блог Роба Меншинга для хорошего ручного способа чтения файла журнала MSI (по сути, вы ищете "значение 3"в файле журнала). Вот пример командной строки, которая выполняет подробное ведение журнала:
msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"
Эта статья из Роберт Макдональд из Команда установщиков Windows настоятельно рекомендуется как практический взгляд на ведение журнала MSI: Как интерпретировать журналы установщика Windows.
Не все хорошо в установщике Windows. это сложность может сбивать с толку временами, но для крупных корпораций файлы MSI значительно превосходят любые другие формы развертывания, если принять во внимание список преимуществ, приведенный выше.
Чтобы понять новое »парадигма"важно понимать, что MSI задуман как декларативное описание того, что должно произойти в целевой системе, а не фиксированной последовательности событий. Я полагаю, вы можете думать об этом как о огромный SQL-оператор. Например, вы объявляете элементы, которые хотите добавить или изменить в INI-файле. В процессе установки изменения отслеживаются, и доступен откат, так что изменения могут быть отменены в случае сбоя установки. Это действительно работает как "автомагия", и надежен, когда все сделано правильно.
Это огромная головная боль для опытные разработчики MSI чтобы увидеть, как люди полагаются на сложные, ненадежные настраиваемые действия для функциональности, которую лучше реализовать с помощью встроенных функций MSI. Значительная доля всех ошибок MSI и проблем с откатом вызвана ошибочными пользовательскими действиями, а большинство других ошибок вызвано ошибочным использованием дизайна MSI (см. Отдельный ответ для списка распространенных ошибок MSI).
В дополнение к встроенным функциям MSI все больше и больше настраиваемых функций теперь доступно через новую структуру, такую как Wix - XML-способ компиляции файлов MSI, поэтому потребность в сложной логике настраиваемых действий для большинства операций становится все меньше и меньше.
MSI имеет полную поддержку обработки слияния настроек ini-файла, шрифтов, переменных среды, ключей реестра, информации COM, ярлыков, расширений файлов, условий запуска, установки GAC, ODBC и т. д.
WIX идет дальше с поддержкой очень продвинутые функции такие как расширения SQL-сервера, установка и настройка IIS, счетчики производительности, проверка DirectX и другие задачи, связанные с играми, создание собственных образов .NET, COM +, драйверы, правила брандмауэра, расширения PowerShell, закрытие приложений, управление пользователями, группами, общими ресурсами и т. д. Больше. Сложно разобраться, но гораздо надежнее, чем ваши собственные действия.
Чтобы попытаться представить это в перспективе: эти встроенный и готовые решения являются сделано лучшими специалистами по развертыванию, и они являются проверено тысячами, десятками тысяч или даже миллионами пользователей (для встроенных вещей в самом MSI). Вы действительно думаете, что можете лучше сделать свои собственные действия? Использование настраиваемого действия должно быть редким событием, и оно должно быть абсолютно необходимым для достижения чего-то уникального для устанавливаемого продукта.. И вы также должны написать правильную поддержку отката, что довольно сложно.
Написание настраиваемого действия почти всегда является ошибкой, но бывают случаи, когда вам действительно нужна гибкость. Как всегда, важно хорошо выбирать битвы. Поначалу это может быть забавная задача, но вы, вероятно, столкнетесь с множеством неожиданных проблем и потратите много дорогостоящего времени. Я имею в виду это очень серьезно. Я сам написал набор настраиваемых действий C ++ для корпоративного использования (чтобы исключить настраиваемые действия VBScript, подверженные ошибкам) - это не прогулка по парку, и хотя кодирование может быть не самым сложным в мире, отладка и тестирование и подключение к фактическому файлу MSI является не чем иным, как чрезвычайно сложным. Некоторое время на изучение имеющихся готовых вариантов, вероятно, сэкономит вам недели работы по разработке и обеспечит гораздо большую надежность развертывания.
Очень важным моментом является то, что большая часть конфигурации приложения должна происходить при запуске приложения, когда у вас есть предсказуемый контекст времени выполнения и хорошая обработка ошибок, а не в настройке, которая запускается только один раз и имеет очень сложные функции. выдача себя за другое лицо, последовательность действий, кондиционирование и сложность выполнения.
Ваша установка не должна настраивать приложение, она должна подготовить приложение к настройке при первом запуске.. В частности, ваша установка должна содержать все настройки, требующие повышенных прав. - запись в HKLM, регистрация служб, установка на пути на уровне машины и любые подобные вещи, которые приложение не может записать самостоятельно с правами обычного пользователя.
Если вы разработчик установки, вам следует предложить принять участие в кодировании последовательности запуска приложения вместо написания настраиваемых действий.. Во всяком случае, чтобы не выглядеть так, будто вы пытаетесь «переложить ответственность» на кого-то другого. В этой последовательности запуска вы можете написать гораздо более надежный и тестируемый код, который легче получить от персонала QA для тестирования (они часто не понимают тестирование развертывания так же, как тестирование приложений).
Суть сложности настройки заключается в том, что ошибки накапливаются (вы управляете процессом доставки, а не просто быстрой перекомпиляцией), ошибки очень сложно отладить (нет доступа к системам, в которых возникают ошибки), и состояния целевой системы различаются практически во всех мыслимых отношениях. Пожалуйста, посмотрите этот ответ для более подробного обсуждения этой сложности и того, как целевые системы могут шокировать множеством шокирующих опасений: Установщик Windows, создание WiX и сложность развертывания (см. внизу).
Прочитайте это Краткое введение в WiX для описания нового основанного на XML способа компиляции файлов MSI. Текстовые исходные файлы обеспечивают гораздо лучший контроль версий, чем раньше. Это бесплатный набор инструментов с открытым исходным кодом, настоятельно рекомендуется.
N.B: См. В другом месте в ветке краткое изложение общие проблемы дизайна с файлами MSI - он очень неполный, но его стоит прочитать. Я не хотел добавлять это к этому ответу, поскольку это не на 100% связано, но для реального использования это важная тема.
(простите за бессовестное "продвижение" - это для легкого доступа и поиска)
Вот лишь несколько ссылок на темы, которые могут быть полезны системным администраторам в их усилиях по управлению развертыванием в своих сетях:
Специальные разделы с практическими рекомендациями:
Концептуальные темы / передовая практика:
Всего несколько преимуществ:
Когда я развертываю программное обеспечение на предприятии, я думаю, что развертывание программного обеспечения через MSI почти доставляет удовольствие. Напротив, я почти всегда опасаюсь развертывания программного обеспечения, когда оно находится в другом контейнере.
Для получения дополнительной информации о работе с установками MSI введите msiexec
в диалоговом окне "Выполнить".
Этот ответ находится в стадии разработки и является приблизительным наброском. Добавления, вопросы и обновления приветствуются. Этот список ни в коем случае не является исчерпывающим. Добавьте комментарий с информацией о проблемных пакетах.
Я также должен предупредить, что многие файлы MSI содержат ошибки, иногда серьезные, но обученные упаковщики приложений смогут обнаружить это и в большинстве случаев устранить проблему. Я добавляю это как отдельный ответ, поскольку он, по сути, отвечает на другой вопрос, но я считаю, что он актуален в той же теме.
Технические детали, связанные с MSI, очень сложны.. На базовом уровне речь идет о разложении ваших файлов и настроек реестра на компоненты (атомарная установка) и функции (устанавливаемые пользователем части приложения, например, функция словаря). Есть несколько правил передовой практики для разделения компонентов, и ошибок в файлах MSI здесь много. Эти ошибки обычно устраняются путем стандартизации использования «крупных обновлений».
Фактическая установка выполняется в нескольких последовательностях установки, некоторые с повышенными правами.. Все эти вещи определены в таблицах базы данных, и именно здесь MSI ужасно сложна для понимания и работы. В процессе установки распространяются стандартные и настраиваемые действия. Стандартные действия разработаны Microsoft и должны выполняться (последовательность действий иногда можно изменить). Производителям доступны настраиваемые действия для выполнения настраиваемой логики, не охватываемые самим MSI. Они могут быть в виде сценария или скомпилированной формы. Настраиваемые действия могут быть немедленными (запускаться сразу, не должны изменять систему, но часто это происходит) или отложенными (записанными в сценарий исключения, который затем выполняется как транзакция и, следовательно, поддерживает откат).
Типичные ошибки в MSI (в произвольном порядке - и на самом деле представлены как настоящий беспорядок):
Есть ряд более тонких ошибок и несколько более крупных типичных проблем, о которых я забуду.
Проверьте Рекомендации по установке Windows статья из MSDN.
Использование MSI также упрощает установку исправлений (файлы MSP) и обновления. MSI использует концепцию уникальных кодов продуктов и обновлений, что упрощает весь процесс.
Некоторые системы развертывания (одним из примеров является CA Unicenter Software Delivery) также могут особым образом понимать MSI, что позволяет им гораздо лучше интегрироваться в систему развертывания. Например, вы можете передать MSI-файл в библиотеку программного обеспечения системы развертывания, и он автоматически обнаружит различные функции в продукте и автоматически разрешит гораздо более детализированные настраиваемые действия (локальная установка, проверка, восстановление и т. Д.) И ведение журнала.
Самовосстановление / восстановление также является большим плюсом для MSI.
Также ознакомьтесь с открытым исходным кодом XML установщика Windows, "набор инструментов, который собирает установочные пакеты Windows из исходного кода XML. Набор инструментов поддерживает среду командной строки, которую разработчики могут интегрировать в свои процессы сборки для сборки установочных пакетов MSI и MSM". Это используется MS для подготовки нескольких своих основных программных пакетов.
вы можете выполнять преобразования - теоретически вы можете многое настроить, если программа была правильно упакована поставщиком, вы можете выполнить полностью автоматическое развертывание без какого-либо взаимодействия с конечным пользователем - что очень полезно, если вы хотите стандартизировать среду Windows и иметь больше, чем несколько компьютеров.
чтобы узнать, что люди делают с msis [или автоматическим развертыванием], посетите, например, этот сайт и его форумы.