Как лучше использовать файлы MSI - PullRequest
11 голосов
/ 19 января 2009

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

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

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

Ответы [ 3 ]

14 голосов
/ 20 января 2009

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

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

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

MSIEXEC /I test.msi SOMEPROPERTY="Some value" PROP2="something else"
11 голосов
/ 29 июня 2009

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


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

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

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

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

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


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


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

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

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

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

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


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


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

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

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

Приведенная выше командная строка указывает, что функции " Program " и " Словари " должны устанавливаться локально ( имена функций чувствительны к регистру! ). Как правило, этого достаточно, но вы также можете указать любые функции, которые вы хотите удалить, используя свойство 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. Свойство TRANSFORMS на MSDN .

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

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


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

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

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

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

Достаточно хорошее: Сводка установщика Windows .

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

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

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


2 голосов
/ 20 января 2009

Как настроить автоматическую настройку MSI

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

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

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

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

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

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

Если вы ищете бесплатное решение с открытым исходным кодом, я бы порекомендовал вам взглянуть на WiX toolset , доступный на SourceForge или Nullsoft. Вся информация о настройке выполняется с помощью файлов XML, которые затем преобразуются в установщик MSI. WiX стабилен (хотя все еще помечен как бета) и может использоваться в производстве. На самом деле он будет интегрирован в следующую версию Visual Studio 2010.

Конечно, есть и коммерческие решения, InstallShield является лидером рынка (также ценовым лидером), а Visual Studio, вероятно, является наиболее распространенным инструментом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...