Как лучше использовать файлы MSI

Как вы знаете, msiexec - это приложение командной строки, которое вы можете использовать для установки файла MSI. Как вы знаете, вы можете запустить его в тихом или невидимом режиме.

Если установщик требует от пользователя ответа на конкретные вопросы о том, какие компоненты для установки, есть ли способ, который я могу добавить в командную строку msiexec ряд вариантов для этого?

Я полагаю, что должен быть какой-то способ настройки параметров файла MSI по умолчанию, чтобы это произошло. Как создаются файлы MSI? Разработаны ли они с помощью инструментов от Microsoft? Можно ли их открыть и отредактировать?

Ответ 1

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

Мы распространяем наше программное обеспечение в формате MSI для корпоративных клиентов, я также предоставляю им документацию об основах Orca (orca.msi распространяется с SDK установщика Windows) и как настроить некоторые поля, которые мы указали в таблице Property для их установки. Например, серийный номер, регистрационные данные и несколько других настроек.

В ответ на исходный вопрос о параметрах командной строки msiexec просто запустите MSIEXEC /?, чтобы установить свойства в командной строке, вы будете использовать что-то вроде

MSIEXEC /I test.msi SOMEPROPERTY="Some value" PROP2="something else"

Ответ 2

Файлы MSI специально разработаны для поддержки автоматической установки в качестве встроенной функции - вы всегда можете пропустить графический интерфейс. Однако некоторые файлы MSI имеют недостатки дизайна, которые делают установку незавершенной в автоматическом режиме, что является серьезной ошибкой проектирования. Эта проблема описана здесь: Удаление из панели управления отличается от удаления из .msi.


Краткая версия: Как параметризовать MSI файл из электронного компоновщика - использование ОБЩЕСТВЕННЫХ СВОЙСТВ и преобразований для настройки установки пакета MSI.



Настройка установок MSI

Когда дело доходит до установки MSI без вывода сообщений, вам нужно настроить конфигурацию либо из командной строки msiexec.exe, либо применив то, что называется преобразованием к исходному файлу MSI. Обе эти опции описаны ниже в отдельных разделах.

Если файл MSI хорошо спроектирован, вы сможете установить ОБЩЕСТВЕННЫЕ СВОЙСТВА (они всегда UPPERCASE) из командной строки msiexec.exe или, используя файл преобразования для изменения исходного MSI. Эти операции описаны ниже. Открытые свойства проще всего найти в файле MSI "Таблица свойств". Используйте инструмент MSI по вашему выбору, чтобы открыть файл *.msi и перейти к таблице свойств. Существуют также некоторые бесплатные инструменты MSI, которые можно использовать для создания преобразований и просмотра (и редактирования) файлов MSI: Как сравнить содержимое двух (или более) файлов MSI? ( ссылки внизу).

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

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


Несколько ссылок для хранения:


MSI "Особенности"

MSI часто нелогичен и несколько сложен под капотом. Однако для упрощения MSI файл содержит одну или несколько "функций" - и эти компоненты вместе составляют "биты приложения", как вы их выразили. Функции, в свою очередь, состоят из "компонентов", которые являются атомными единицами установки для всего программного обеспечения, но это очень техническая деталь - этот ответ о выставленных пользователем битах MSI - особенности.

Screen Shots: What Features look like in a real MSI package (screen shots).

Обычно вы можете найти список этих функций, запустив установку в интерактивном режиме и перейдя к диалоговому окну настройки установки (не всегда присутствует). Функции, которые здесь отображаются, - это "настраиваемые пользователем" части приложения, которые можно выбрать для исключения или включения (некоторые являются обязательными). Вы также можете найти эти функции, открыв MSI с помощью подходящего инструмента, как упомянуто выше (вы также можете увидеть ссылки в разделе 2 ниже).

Типичные функции: Основные или Программы, Словари, Примеры, Плагины, Заклинание Проверка, SDK & Инструменты разработчика (для инструментов разработчика) и т.д.... Некоторые функции являются обязательными (должны быть установлены) - приведенные выше примеры: Core и Программа, другие - необязательны и не требуются для запуска приложения (как описано выше для инструментов dev). Возможности установки приложения можно настроить "по требованию", например, для проверки орфографии, когда пользователь запускает проверку орфографии.

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


Как упоминалось выше, обычно есть два способа настройки установки MSI: (1) с помощью пользовательских командных строк msiexec.exe или с помощью (2) файлов преобразования.


1: командная строка msiexec.exe:

Самый простой и легкий способ управления тем, какие функции установлены во время установки, - указать свой выбор функций с помощью командной строки msiexec.exe. Существует целое семейство свойств, используемых для настройки функций. Но в большинстве случаев достаточно указать ADDLOCAL:

msiexec.exe /i myinstaller.msi ADDLOCAL="Program,Dictionaries" /qn

Приведенная выше командная строка указывает, что функции "Программа" и "Словари" должны устанавливаться локально (имена функций чувствительны к регистру!). Как правило, этого достаточно, но вы также можете указать любые функции, которые вы хотите удалить, используя свойство REMOVE аналогичным образом. Специальный переключатель - ADDLOCAL=ALL, который устанавливает все функции MSI на локальный диск (при условии, что в MSI нет дополнительной логики для переопределения этого). ADDLOCAL свойство в MSDN.

Общедоступными свойствами часто называют лицензионный ключ для приложения. Следующая командная строка определяет установку функций "Программа" и "Словари" и применение серийного ключа "1234-1234":

msiexec.exe /i myinstaller.msi ADDLOCAL="Program,Dictionaries" SERIALKEY="1234-1234" /qn

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

Ищите документацию на странице загрузки поставщика и обращайтесь в его службу поддержки за любыми документами, касающимися автоматической установки или крупномасштабного развертывания. Это быстро сделать, и ответы могут быть быстрыми, если у них есть стандартные шаблоны ответов. Компании, контролирующие их развертывание, всегда смогут предоставить это. На мой взгляд, идеальным вариантом является одностраничный PDF файл, в котором описаны различные параметры развертывания. Честно говоря, дайте им немного тепла, если они не могут этого обеспечить ;-).


2. Преобразование:

MSI файлы - это, по сути, базы данных SQL, обернутые в структурированные COM файлы хранения (файловая система в файле). Файлы преобразования - это "частичные базы данных", созданные с помощью таких инструментов установки, как Orca (ссылка на SDK), Installshield или Wise, Advanced Installer и т.д.... (ссылка описаниям различных инструментов). Эти преобразования могут настраивать или переопределять практически все параметры или поля базы данных в MSI, включая сведения о том, какие "части приложения" (функции) установлены. После создания преобразования вы указываете его приложение для MSI в командной строке msiexec.exe:

msiexec.exe /i myinstaller.msi TRANSFORMS="mytransform.mst" /qn

Установщик Windows объединит MSI и преобразование перед началом установки. Этот подход используется крупными организациями, которые хотят получить полный контроль над установкой MSI. ПЕРЕДАЧА свойства на MSDN.

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

Многие инструменты могут быть использованы для создания преобразования, вот описание таких инструментов в более техническом контексте сравнения файлов MSI. Просто перейдите к списку бесплатных инструментов внизу: Как сравнить содержимое двух (или более) файлов MSI?


Анти-паттерны и корпоративные преимущества установщика Windows:

Установщик Windows имеет много особенностей дизайна и может особенно раздражать разработчиков. По общему признанию, есть некоторые проблемы, которые граничат с антишаблонами.

Потенциальные анти-паттерны

  • Сложные установки с несколькими экземплярами
    • Относительно распространенное требование, особенно для сервисных установок
  • нелогичные правила перезаписи файлов (symantec)
    • странные правила, особенно для не версионных файлов
    • безумная функция для принудительной перезаписи всех файлов (REINSTALLMODE= amus)
      • может понизить общие файлы для всей системы
      • может привести к несовместимому состоянию версий, так как старый пакет может быть установлен после более нового и понижать версию только некоторых общих файлов
      • может понизить или стереть настройки в не версионных файлах (и настройках реестра)
      • может привести к значительному увеличению числа запрошенных перезагрузок из-за попыток ненужной замены используемых файлов той же версии.
      • Есть несколько дополнительных вопросов, которые являются довольно конкретными. Однажды я напишу их все
  • неожиданный сброс пользовательских данных в реестре после обновлений
    • Это чрезвычайно проблематично. Если вы испытываете это, это не вы, это технология
    • Часто встречается с учетными данными для входа в систему и серийными ключами
    • Некоторые методы, чтобы избежать этой проблемы
      • избегайте записи ЛЮБЫХ ключей реестра HKCU из вашей установки, вместо этого запишите их из вашего приложения. Ваша настройка теперь никогда не будет мешать им - она вообще ничего не знает о значениях.
      • размещение данных реестра в отдельной функции (это должно предотвратить проблемы при самовосстановлении)
      • установить данные реестра через компонент с пустым идентификатором GUID (после этого он никогда не будет перезаписан во время восстановления или самовосстановления)
      • установите флаг компонента, чтобы он никогда не перезаписывался, если существует путь ключа.
      • записывать данные HKLM (например, лицензионные ключи) в реестр, используя вместо этого настраиваемое действие (это имеет другие проблемы, но даст вам полный контроль над тем, когда записываются данные - в каком режиме установки)
      • Убедитесь, что вы держите стабильный путь к ключу реестра. Установите значение флага KeyPath = 1 и никогда не меняйте его, и, что особенно важно, не меняйте GUID компонента
      • никогда не устанавливайте REINSTALLMODE в значение "amus" - конечно, это не жесткий код, значение которого содержится в таблице свойств.
      • Есть еще несколько хитростей и практических правил, если бы я только мог вспомнить их все из головы :-).
  • сложный механизм обновления
    • незначительные обновления имеют много ограничений и ограничений
    • У крупных обновлений есть другие проблемы (сброс данных реестра, отсутствие файлов после установки, самовосстановление файлов COM после установки и т.д...)
  • тусклые возможности графического интерфейса
    • не ракетостроение, но несколько сложнее
    • не хватает событий и функций для реализации правильно сглаженного графического интерфейса
  • шокирующе сложное исправление
  • чрезвычайно сложная реализация пользовательских действий
    • комплексное секвенирование
    • комплексное кондиционирование
    • комплексное олицетворение/частичный запуск с повышенными правами
    • в целом чрезвычайно подвержен ошибкам.
  • слабая реализация of настроек для каждого пользователя
    • концептуально сомнительный (перенаправление папок, непредсказуемость, невозможность создания настроек в реальном мире, поддержка как для пользователя, так и для компьютера)
    • Комплекс для обновления, удаления и исправления. Позволяет устанавливать продукты несколько раз для разных пользователей, а также для каждого компьютера
    • Я должен признать - на субъективной ноте - что я считаю, что текущая реализация индивидуальной настройки пользователя полностью против развертывания. Я никогда не пользуюсь им и настаиваю на том, чтобы не делать этого, если не принужден к.
  • неожиданный самовосстановление
  • отсутствие встроенных функций для записи в файлы XML
  • плохие функции для установки IIS
    • Частью проблемы являются правила перезаписи файлов для неверсированных файлов (возможны непредсказуемые результаты).
    • Честно говоря, IIS может потребоваться совершенно новая технология развертывания - способ определения обработки файлов без контроля версий абсолютно предсказуемым образом - с разумными, реальными возможностями. Возможно автоматическое резервное копирование принудительно замененных не версионных файлов, принудительное создание групп согласованных текстовых файлов ("сборок"), которые должны быть правильной версией для всех, и т. Д...
    • также несколько других проблем со сложной конфигурацией IIS и виртуальных папок и сайтов
  • Небрежное включение "проверки кода выхода" в пользовательских действиях может привести к тому, что пакеты невозможно будет обновить или удалить (без серьезных изменений)
    • серьезные обновления могут привести к сбою и вызвать откат для чего-то незначительного
    • незначительное обновление можно использовать для исправления последовательности удаления или неисправного кондиционирования
  • Есть еще несколько...

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

WiX Framework (с открытым исходным кодом) и коммерческие инструменты (Installshield, Advanced Installer и т.д.) Реализовали функции, расширяющие возможности установщика Windows, чтобы справляться с отсутствующими функциями, такими как отсутствие механизма обновления файлов XML, создания и управления общими ресурсами, создания пользователей и групп, расширенной конфигурации IIS, установки COM+, изменения разрешений ACL, настройки правил брандмауэра, сохранения свойств установки и т.д. Должно быть все меньше и меньше нужно реализовывать свои собственные действия. Всегда используйте возможности, которые уже были протестированы тысячами других пользователей, если можете (даже миллионы пользователей - и эти расширения написаны лучшими доступными экспертами по развертыванию - как вы думаете, вы можете сделать это лучше самостоятельно?).

Корпоративные преимущества установщика Windows (очень существенные)

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

Чтобы кратко подвести итог связанной статьи, основными корпоративными преимуществами MSI по сравнению с предыдущими технологиями развертывания являются (на мой взгляд):

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

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

Сумерки лет установщика Windows

В то время как установщик Windows переживает свои сумерки, мы можем только надеяться, что технологии развертывания в будущем сохранят эти большие корпоративные преимущества развертывания и будут работать с упомянутыми антишаблонами таким образом, чтобы это было выгодно всем, и разработчикам в частности.

Развертывание является важной частью разработки. Неудача успешной установки вашего замечательного программного обеспечения для ваших потенциальных конечных пользователей может быть самой дорогой ошибкой в разработке программного обеспечения в целом. Как добиться успеха, если пользователь никогда не увидит ваше программное обеспечение полностью функциональным?

Сложность установщика Windows должна решаться лучше (уменьшаться), и ее важные преимущества должны быть должным образом сохранены в любой парадигме, которая будет дальше.

Достаточно хорошее: резюме установщика Windows.

Облачные платформы

Со всем этим сказано; По мере того как вычисления в целом переходят на облачные платформы, мир развертывания, скорее всего, изменится непредсказуемым образом. Однако, как гласит известная поговорка: чем больше вещи меняются, тем больше они остаются неизменными. Развертывание должно касаться всех устаревших технологий, которые будут использоваться в компаниях на протяжении десятилетий. Вот фрагмент о том, почему развертывание кажется более сложным и не менее сложным, несмотря на весь маркетинг: В чем выгода и реальная цель установки программы?.

Будет интересно посмотреть, каким будет будущее развертывания - в ближайшие годы. Возможно, мы увидим упрощенное развертывание для домашних компьютеров, а корпоративное развертывание станет более сложным, чем когда-либо? В будущем большая часть развертывания, вероятно, будет задачей развертывания базы данных, а не задачей развертывания файлов и папок. В настоящее время развертывание сервера может быть чрезвычайно сложным с помощью сценариев базы данных, создания пользователей и групп, настройки общего доступа и разрешений ACL, счетчиков производительности, обновлений правил брандмауэра, запросов и обновлений AD, COM+ и конфигурации очереди сообщений, установки служб и т.д.. - целые девять ярдов.


Ответ 3

Как настроить тихую настройку MSI

Установка MSI можно настроить в командной строке, установив свойства, которые использует установщик. Существуют предопределенные свойства установщика Windows, такие как свойство ALLUSERS. Это свойство определяет, будет ли выполняться установка в контексте текущего пользователя или машины.

Информация о доступных свойствах может, например, получить из журнала установки, который может быть создан с использованием опции msiexec/l

msiexec /I mysetup.msi /l*vx log.txt

Как создать файлы MSI

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

Microsoft предлагает простой вызов Orca, который позволяет редактировать существующие файлы MSI и позволяет узнать, какие свойства могут быть установлены на настройте установку. Теоретически также можно создавать новые файлы MSI с помощью этого инструмента, но это очень громоздкий путь.

Если вы ищете бесплатное решение с открытым исходным кодом, я бы порекомендовал вам ознакомиться с