Как работать в программе Windows installer

Изначально эта статья задумывалась как приложение к руководству по созданию аддонов. Однако область, которую она затрагивает, оказалась более широка. Речь в статье пойдет об использовании msiexec.exe в различных средствах автоматизации задач – скриптах и комментариях архивов (которые, по сути, также являются скриптами).

Параметры командной строки msiexec

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

msiexec.exe /i acdsee.msi /qn TRANSFORMS=unattend.mst

Аналогичный подход я использовал и для создания точки административной установки пакета ACDSee в нужной мне папке. Задав путь к папке в файле преобразования (MST), я создавал административную точку командой

Инсталлятор Smart Install Maker для Windows 10


msiexec.exe /a ACDSee9.msi TRANSFORMS=admin.mst

Ключи /a, /i и /qn – документированы в справке msiexec (краткий рассказ о ключах тихой установки есть здесь), а вот ключ TRANSFORMS в ней не описан, и его отличие от ключей msiexec.exe видно даже из синтаксиса. Заинтересовавшись ключами установщика Windows, я подумал, нет ли среди них такого, с помощью которого можно было бы обойтись без MST-файла, указывая в командной строке собственный путь для создания точки административной установки. И такой ключ нашелся – TARGETDIR!

msiexec.exe /a ACDSee9.msi TARGETDIR=»%~dp0admACDSee9″

Свойства установщика Windows

Свойства MSI

Как это все работает, и откуда взялись ключи TRANSFORMS, TARGETDIR и другие, не указанные в справке командной строки msiexec.exe? Данные ключи – это не параметры командной строки msiexec.exe, а свойства установщика Windows, в оригинале называемые Properties. Все свойства перечислены в документации (англ.), размещенной на MSDN. Свойства делятся на:

  • публичные (public)
  • ограниченно публичные (restricted public)
  • обязательные (required)
  • частные, т. е. конкретного приложения (private)

Полный список свойств размещен на этой странице.

  • Публичные свойства установочного пакета могут изменяться пользователем или системным администратором в командной строке, посредством MST- файла, либо интерактивно во время установки. Используя список свойств, можно легко определить, является ли свойство публичным – их названия состоят только из заглавных букв, т. е. не содержат строчных.
  • Ограниченно публичные свойства могут применяться автором пакета для того, чтобы ограничить список свойств, которые может изменить пользователь, не имеющий прав администратора. Если автор пакета не задал ограничений, обычный пользователь сможет изменить стандартный список свойств — в него входят, например, ALLUSERS, TRANSFORMS, REBOOT.
  • Обязательные свойства должны присутствовать в каждом установочном пакете.
  • Частные свойства задаются исключительно автором пакета. С помощью командной строки их невозможно изменить – этого можно добиться только редактированием пакета

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

Сделай ЭТО, если папка C:WindowsInstaller занимает много места [ОЧИСТКА без последствий]

Приоритеты определения свойств

Одно из преимуществ использования командной строки заключается в более высоком приоритете вносимых ей изменений. Приоритеты при изменении свойств в процессе установки пакета таковы:

  1. Переменные среды
  2. Командная строка
  3. Административная установка (AdminProperties)
  4. Файл преобразований MST
  5. Установочный пакет MSI

Как видите, приоритет над командной строкой имеют только переменные окружения. Из этого же списка видно еще одно преимущество использования командной строки – переопределение или добавление изменений, сделанных в MST- файле.

Читайте также:
Как в программе Виндовс медиа

Восстановление установочного пакета.

Если в командной строке вы используете ключ ‘/f ‘ для восстановления установленного пакета, помните, что в этом случае все свойства (Properties) игнорируются !

Передача свойств установочным пакетам

Файлы пакетов обновлений (MSP) также обрабатываются msiexec.exe, и это позволяет применять к MSI- пакету допустимые свойства наряду с обновлениями.

Чтобы применить обновление к установочному административному пакету, используйте следующую команду:

Msiexec.exe /pUpdate.msp /aExample.msi СВОЙСТВА

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

ACDSee.exe /s /v”TRANSFORMS=unatend.mst /qn”

Поскольку файл исполняемый, вызывать msiexec.exe нет необходимости. Далее идет необязательный ключ /s — аналог ключа /qn для «тихой» установки. Этот ключ дает команду не показывать предварительные окна установщика Windows (ключ /qn служит тем же целям в MSI- пакете).

И, наконец, нужный нам ключ /v как раз служит для передачи аргументов в MSI- пакет. В кавычках по порядку указываются аргументы. После ключа не должно быть пробелов.

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

Примеры использования свойств

Упомянутую в начале статьи проблему с автоматизацией создания административной точки я решил именно с помощью свойств установщика Windows. Обдумав написанный мной BAT- файл с использованием свойств для указания папки установки административной точки, я понял, что это довольно удобно — предавать ключи в командной строке напрямую msiexec.exe, не используя сценарии MST, которые нельзя отредактировать без специальных программ. Зато строку с TARGETDIR= можно отредактировать в любом текстовом редакторе (архиваторе), настроив путь установки приложения как душе пользователя или администратора угодно.

TARGETDIR=[путь]

Определяет папку установки приложения. Также, в административной установке он позволяет определить папку сетевого расположения (место создания административной точки).

msiexec.exe /a ACDSee9.msi TARGETDIR=»%~dp0admACDSee9″

ALLUSERS=[1|2|””]

Определяет установку приложения для одного (текущего) пользователя или для всех пользователей. По умолчанию Windows Installer устанавливает приложение для всех пользователей компьютера. Если для свойства ALLUSERS задано значение 1, пакет установится для всех пользователей компьютера, если задано значение 2 – оно сбросится на нулевое значение («»), и приложение будет установлено для текущего пользователя.

  • 1 — установка для всех пользователей компьютера; необходимы привилегии администратора.
  • 2 — установка только для пользователя, выполняющего программу установки.
  • «» — установка только для пользователя, выполняющего программу установки.

msiexec.exe /i ACDSee9.msi ALLUSERS=””

USERNAME=[строка]

Указание имени пользователя по умолчанию.

COMPANYNAME=[строка]

Указание названия организации.

msiexec.exe /i ACDSee9.msi USERNAME=”Иван” COMPANYNAME=”Наш офис”

Примечание. У последних двух свойств есть антиподы: NOUSERNAME и NOCOMPANYNAME. Системный администратор может использовать эти свойства при автоматической установке приложений. Если для этих свойств при установке задано значение 1, приложение при первом запуске запросит имя пользователя и название организации.

PIDKEY=[строка]

Ввод 25-символьного лицензионного ключа в командной строке программы установки или в файле параметров настройки программы установки. Если задано свойство PIDKEY, от пользователей не требуется ввозить ключ продукта при установке приложения.

msiexec.exe /i ACDSee9.msi PIDKEY=12345-678901-23456-7890-12345

Посмотреть формат ввода ключа можно в другом свойстве PIDTemplate.

REBOOT=[строка]

  • Force — принудительная перезагрузка
  • Suppress — отложенная перезагрузка
  • ReallySuppress – без перезагрузки

msiexec.exe /i ACDSee9.msi REBOOT= ReallySuppress

Ссылки

  • Параметры командной строки для Msiexec.exe
  • Windows Installer Guide — Properties (на английском языке) – описание свойств установщика Windows.
  • Msiexec — список ключей и свойств – тема на конференции OSZone, где можно обсудить полезные ключи для создании аддонов / автоустановки приложений на основе MSI.

v1.1-18.04.2009 — добавлен абзац про восстановление пакета

Источник: www.oszone.net

Управляем инсталляторами

Windows Installer – это сервис установки и конфигурирования программных продуктов, который входит в состав ОС (внешний вид см. на рис. 1). Также он может устанавливаться с пакетами обновлений операционной системы или в качестве отдельного дистрибутива.

Читайте также:
Как почистить кэш на компьютере Windows xp без программ

Рисунок 1. Внешний вид программы, использующий Windows Installer

Некоторые версии Windows Installer и Windows несовместимы. Это касается Windows 9x и Windows 2k. Ниже приведена таблица, с помощью которой можно определить, какую версию Windows Installer и где можно устанавливать (см. таблицу 1). В настоящее время используется Windows Installer 3.1, который можно загрузить с сайта разработчика как hotfix: http://support.microsoft.com/?id=893803.

Таблица 1. Версии Windows Installer

Windows Installer 1.0

Интегрирован в Office2000, дистрибутив

Windows Installer 1.1

Интегрирован в Windows 2000

Windows Installer 1.11

Интегрирован в Windows 2000 SP1

Интегрирован в Windows 2000 SP2

Windows Installer 1.2

Интегрирован в Windows Me

Windows Installer 2.0

Интегрирован в Windows XP

Интегрирован в Windows 2000 SP3

Интегрирован в Windows 2000 SP4

Интегрирован в Windows XP SP1

Интегрирован в с семейством Windows Server 2003

Windows Installer 3.0

Интегрирован в Windows XP SP2, дистрибутив

Windows Installer 3.1

Интегрирован в с семейством Windows Server 2003 SP1

Для инициализации процесса установки используют команду:

Параметры запуска приведены в таблице 2.

Таблица 2. Параметры запуска hotfix

Не перезагружать компьютер после установки обновления

Включение «тихого» режима. Во время установки программа не задает никаких вопросов

Вызов справки, содержащей ключи запуска и их описание

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

Использование технологии Windows Installer дает пользователям следующие преимущества:

  • Более простая и быстрая установка программного обеспечения.
  • Возможность установки по требованию. Информация о неустановленных компонентах приложения хранится в одном месте, и при обновлении конфигурации программы нет необходимости переустанавливать все компоненты.
  • Самовосстановление программ. Хранение инсталляционной информации в одном месте позволяет приложению самовосстанавливаться. Неправильно работающее приложение может проверить инсталляционные данные, определить, какие файлы повреждены или отсутствуют, а затем восстановить их.
  • Возможности отката. Windows Installer позволяет отменять любые изменения в конфигурации как устанавливаемого продукта, так и операционной системы. Это делает установку программ, поддерживающих технологию Windows Installer, намного более безопасным и предсказуемым занятием, чем каких-либо других.

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

Взгляд изнутри: файл Msiexec.exe

Windows Installer включает в себя множество файлов, среди которых присутствует msiexec.exe. Этот файл – не самый важный компонент в Windows Installer. Всю основную работу выполняет динамически подключаемая библиотека – msi.dll. А msiexec.exe служит оболочкой msi.dll, позволяющей:

  • Работать Windows Installer как службе ОС.
  • Разбирать параметры командной строки и выполнять соответствующие задачи.
  • Устанавливать при выходе уровень ошибки, соответствующий системным кодам ошибок (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/error_codes.asp), то есть ошибкам типа ERROR_SUCCESS и т. д.
  • Связать файлы с расширениями .msi с Windows Installer командой:

«%SystemRoot%System32msiexec.exe» /i «your_filename.msi»

Параметры командной строки для Msiexec

Параметры командной строки, которые понимает msiexec.exe, приведены в таблице 3.

Таблица 3. Параметры командной строки msiexec.exe

Источник: samag.ru

Таблицы процесса инсталляции

Таблицы этой группы управляют выполнением стандартных и пользовательских операций.

ПРИМЕЧАНИЕ Тема операций в Windows Installer обширна и ей будет посвящена одна из следующих статей.

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

Имя таблицы Краткое описание
InstallUISequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции INSTALL и уровне пользовательского интерфейса — полный или сокращенный. Installer пропускает операции из этой таблицы, если уровень пользовательского интерфейса установлен в базовый или отключен 1
InstallExecuteSequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции INSTALL 1, 2
AdminUISequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADMIN и уровне пользовательского интерфейса — полный или сокращенный. Installer пропускает операции из этой таблицы, если уровень пользовательского интерфейса установлен в базовый или отключен 3
AdminExecuteSequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADMIN 2, 3
AdvtUISequence Installer не использует эту таблицу. Она должна быть удалена из базы данных или быть пустой
AdvtExecuteSequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADVERTISE 4
Читайте также:
Переустановка Windows 7 с сохранением данных и программ если не грузится

1. Все операции в последовательности инсталляции, вплоть до InstallValidate и диалогов выхода, помещаются в таблицу InstallUISequence. Все операции от InstallValidate и до конца инсталляции — в таблицу InstallExecuteSequence. Так как последняя таблица может использоваться независимо от первой (например, если пользовательский интерфейс отключен), она включает все операции инициализации, такие как LaunchConditions, CostInitialize, CostFinalize и ExecuteAction.

2. Все пользовательские операции, выполняемые в этой последовательности, при необходимости использования пользовательского интерфейса должны пользоваться функцией API MsiProcessMessage, вместо диалогов из таблицы Dialog.

3. Все операции в последовательности инсталляции, вплоть до InstallValidate и диалогов выхода, помещаются в таблицу AdminUISequence. Все операции от InstallValidate и до конца инсталляции — в таблицу AdminExecuteSequence. Так как последняя таблица может использоваться независимо от первой (например, если пользовательский интерфейс отключен), она включает все операции инициализации, такие как LaunchConditions, CostInitialize, CostFinalize и ExecuteAction.

4. Таблица AdvtExecuteSequence может содержать только ограниченный набор стандартных операций. Пользовательские операции не должны содержаться в этой таблице.

К другой группе относятся таблицы, позволяющие расширять функциональность пакета инсталляции. Достаточно часто, особенно при установке сложных программных продуктов, встроенной функциональности Windows Installer, основанной на стандартных операциях, не хватает. Здесь и приходит на помощь таблица Custom Action, позволяющая создавать и хранить в инсталляционной базе данных информацию для выполнения пользовательских операций.

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

Следующая группа таблиц расширяет возможности инсталлятора по манипулированию файлами и каталогами в процессе инсталляции.

Имя таблицы Краткое описание
RemoveFile Эта таблица содержит список файлов, которые необходимо удалить при инсталляции
RemoveIniFile Эта таблица содержит информацию, которую нужно удалить из .ini-файлов при инсталляции приложения
RemoveRegistry Эта таблица содержит информацию, которую нужно удалить из реестра при инсталляции связанного с ней компонента
CreateFolder Содержит список каталогов, которые необходимо создать при инсталляции приложения 1
MoveFile Эта таблица содержит список файлов, которые нужно перенести или скопировать во время инсталляции из исходного каталога в заданный каталог

1. Хотя Installer и создает при инсталляции каталоги по мере необходимости, они удаляются, если не содержат файлов. Каталоги, перечисленные в таблице CreateFolder, не удаляются до тех пор, пока не будет удален связанный с ними компонент.

И, наконец, последняя в списке, но далеко не последняя по значимости таблица, управляющая выполнением инсталляции: LaunchCondition. Эта таблица содержит список условий, при выполнении которых может начаться процесс инсталляции. Следует заметить, что эта таблица управляет процессом в целом и для успешного запуска процесса инсталляции необходимо выполнение ВСЕХ содержащихся в ней условий.

Последнее слово о таблицах

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

Источник: www.uhlib.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru