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

Устранена проблема, связанная с удалением ядра данных данных пружины зависимости и удалена версия ресурса данных пружины. Обнаружена проблема из-за несоответствия jar разных версий jar. Если такая проблема существует, проверьте наличие конфликта файлов JAR для зависимости, если решение не сработало, затем создайте новый проект с требуемой зависимостью, замените эту зависимость.

11
задан Stein Åsmul 25 October 2018 в 17:23
поделиться

3 ответа

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

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

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

MSIEXEC /I test.msi SOMEPROPERTY="Some value" PROP2="something else"
14
ответ дан 3 December 2019 в 03:19
поделиться

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

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

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

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

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

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

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

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

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

2
ответ дан 3 December 2019 в 03:19
поделиться

Файлы MSI разработаны специально для поддержки автоматической установки в качестве встроенной функции - вы всегда можете пропустить графический интерфейс. Однако некоторые файлы 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 содержит один или несколько « Features » - и эти функции вместе составляют « бит приложения », как вы выразились. Функции, в свою очередь, состоят из « компонентов », которые являются элементарными единицами установки для всего программного обеспечения, но это очень техническая деталь - этот ответ касается частей MSI, доступных пользователю - функции.

Снимки экрана : Какие функции выглядят в реальном пакете MSI (снимки экрана) .

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

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

По моему опыту, большинство пользователей хотят, чтобы приложение было установлено целиком. Многие пользователи очень раздражаются, если установщик 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: Transforms :

Файлы 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 и никогда не меняйте его - и что особенно важно - не делайте этого.
    • чрезвычайно сложная реализация настраиваемых действий
      • сложное упорядочение
      • сложное кондиционирование
      • сложное олицетворение / частичный запуск с повышенными правами
      • в целом чрезвычайно подвержены ошибкам .
    • тусклая реализация настроек для каждого пользователя
      • концептуально сомнительна (перенаправление папок, непредсказуемость, невозможность создания настроек в реальном мире, поддержка как для пользователей, так и для компьютеров)
      • комплекс для обновления, удаления и исправления. Позволяет устанавливать продукты несколько раз для разных пользователей, а также для каждой машины
      • . Я должен признать - на субъективной ноте - что я считаю текущую реализацию настройки для каждого пользователя полным анти-шаблоном развертывания. Я никогда не использую его и настаиваю на том, чтобы не использовать его, если только не принудительно .
    • неожиданное самовосстановление
    • отсутствие встроенных функций для записи в файлы XML
    • плохие функции для ] IIS устанавливает
      • . Частично проблема заключается в правилах перезаписи файлов для неверсированных файлов (возможны непредсказуемые результаты).
      • Если честно, IIS может потребоваться совершенно новая технология развертывания - способ определить обработку файлов без версий совершенно предсказуемым образом - с разумными, реальными параметрами. Возможно автоматическое резервное копирование принудительно замененных файлов без поддержки версий, принудительное использование групп согласованных текстовых файлов («сборок»), которые должны быть верными версиями всех из них, и т. Д.
      • также несколько других проблем со сложной конфигурацией IIS, виртуальных папок и сайтов
    • небрежное включение «Проверить код выхода » в пользовательских действиях может привести к невозможности обновления или удаления пакетов (без серьезной настройки)
      • основные обновления могут завершиться неудачно и вызвать откат для чего-то незначительного
      • незначительное обновление может быть использовано для исправления последовательности удаления или неправильного кондиционирования
    • есть еще несколько ...

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

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

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

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

    Если кратко резюмировать связанную статью, основные корпоративные преимущества MSI по сравнению с предыдущими технологиями развертывания (на мой взгляд): 12205] надежный тихий запуск (со стандартизованным, полностью подавляемым графическим интерфейсом)

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

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

The Twilight Years Of Windows Installer

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

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

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

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

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

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

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


12
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: