Windows Installer (msi) – это технология которая обеспечивает инсталяцию ПО, а сами файлы или пакеты инсталяции с расширением .msi представляют собой реляционную базу даных, хранящую всю логику и данные, необходимые для установки приложения.
Меня заинтересовала даная технология своей гибкостю и возможностю подкрутить установку ПО под свой лад. Конечно, в даном обзоре я не открою Америку, но материала на русском по даной теме не очень много в интернете. И целью написания этого материала было не дать исчерпывающую и полную информацию по технологии, а познакомить Хабрасообщество с некоторыми возможностями Windows Installer.
По сути как и другая любая база даных это таблици с определенными записями, которые описывают:
Опции приложения (feature)
Компоненты (component)
Записи в реестре (registry)
Необходимую структуру файлов и каталогов (File, Directory)
Свойства (property)
и еще много разных таблиц, но ограничимся пока этимы.
Установка ПО из .msi файла происходит с помощю обработчика msiexec.
С его помощью приложения можно устанавливать как в обычном режиме (со всеми окнами и кнопочками), в базовом режиме (Прогресс бар и кнопка отмены или без неё) или же совсем в тихом без вывода каких то окон либо сообщений. Справку по ключам msiexec можно получить запустив его.
Я же хотел вкратце поведать о трансфорсмах (transforms) и кастом екшенах (custom actions).
Итак, что же собой представляют трансформы и как они могут нам помочь.
Трансформы (англ. Transforms) – это колекция изменений применяемых к инсталяции, или другимы словами – это изменения основной бази даных хранящиеся в файле с расширением mst.
Для создания трансформов можно использовать бесплатную программу Orca входящую в состав Windows Installer SDK. Но я же порекомендую использовать тоже бесплатную, но более функциональную InstEd (сайт производителя www.instedit.com)
Например с помощью трансформа можно преобразовать инсталяционный пакет Opera 10.51, так что бы язык был русским, браузер по умолчанию остался Internet Explorer, ярлык положим только на рабочий стол, и т.п.
Для применения трансформа к инсталяционному пакету необходимо запустить с командной строки установщик пакетов (msiexec)
ключ /i – означает установить пакет
ключ /qb – означает выполнить инсталляцию в базовом пользовательском режиме
ну и применить трансформ TRANSFORMS=filename.mst
Вторым о чем я расскажу это custom actions это инструмент который предоставляет множество действий для выполнения процесса установки. Например с помощью кастом екшенов во время установки можно:
Но я считаю самым мощным инструментом возможность встраивать скрипты в пакет инсталляции. Например, нам нужно проверить во время инсталляции новой версии Оперы, не запущена ли Опера, и если запущена, выгрузить её с памяти, и продолжить процесс установки. Это делается очень просто с помощью скрипта на VBScript в одиннадцать строчек и помещением его в таблицу custom actions msi-пакета.
С помощью трансформов и кастом екшенов инсталляции мы можем заточить под себе пакет, так как нам этого хочется, устанавливать или нет различные фичи, выбирать языки по-умолчанию, ярлыки, лицензии, дополнительные файлы и ключи реестра и много другое.
Не все производители ПО выпускают свои продукты в пакетах инсталяции msi. Но есть много продуктов сторонних производителей по созданию msi пакетов, например Wise Package Studio, с помощью которых можна создавать инсталяции чего угодно.
Материалы которые использовались:
*) Голова + руки
*) msi.chm – с состава Windows Installer SDK
* ) www.rsdn.ru/article/install/wininstaller.xml
Меня заинтересовала даная технология своей гибкостю и возможностю подкрутить установку ПО под свой лад. Конечно, в даном обзоре я не открою Америку, но материала на русском по даной теме не очень много в интернете. И целью написания этого материала было не дать исчерпывающую и полную информацию по технологии, а познакомить Хабрасообщество с некоторыми возможностями Windows Installer.
По сути как и другая любая база даных это таблици с определенными записями, которые описывают:
Опции приложения (feature)
Компоненты (component)
Записи в реестре (registry)
Необходимую структуру файлов и каталогов (File, Directory)
Свойства (property)
и еще много разных таблиц, но ограничимся пока этимы.
Установка ПО из .msi файла происходит с помощю обработчика msiexec.
С его помощью приложения можно устанавливать как в обычном режиме (со всеми окнами и кнопочками), в базовом режиме (Прогресс бар и кнопка отмены или без неё) или же совсем в тихом без вывода каких то окон либо сообщений. Справку по ключам msiexec можно получить запустив его.
Я же хотел вкратце поведать о трансфорсмах (transforms) и кастом екшенах (custom actions).
Итак, что же собой представляют трансформы и как они могут нам помочь.
Трансформы (англ. Transforms) – это колекция изменений применяемых к инсталяции, или другимы словами – это изменения основной бази даных хранящиеся в файле с расширением mst.
Для создания трансформов можно использовать бесплатную программу Orca входящую в состав Windows Installer SDK. Но я же порекомендую использовать тоже бесплатную, но более функциональную InstEd (сайт производителя www.instedit.com)
Например с помощью трансформа можно преобразовать инсталяционный пакет Opera 10.51, так что бы язык был русским, браузер по умолчанию остался Internet Explorer, ярлык положим только на рабочий стол, и т.п.
Для применения трансформа к инсталяционному пакету необходимо запустить с командной строки установщик пакетов (msiexec)
msiexec /i "Opera Installer.msi" /qb TRANSFORMS=opera.mst
ключ /i – означает установить пакет
ключ /qb – означает выполнить инсталляцию в базовом пользовательском режиме
ну и применить трансформ TRANSFORMS=filename.mst
Вторым о чем я расскажу это custom actions это инструмент который предоставляет множество действий для выполнения процесса установки. Например с помощью кастом екшенов во время установки можно:
- Запустить любой исполняемый файл на компьютере пользователя;
- Выполнить скрипт написанный на VB Script или Jscript, что открывает огромные возможности;
- Вызывать функции с динамических библиотек dll.
Но я считаю самым мощным инструментом возможность встраивать скрипты в пакет инсталляции. Например, нам нужно проверить во время инсталляции новой версии Оперы, не запущена ли Опера, и если запущена, выгрузить её с памяти, и продолжить процесс установки. Это делается очень просто с помощью скрипта на VBScript в одиннадцать строчек и помещением его в таблицу custom actions msi-пакета.
Option Explicit
Dim objService
Dim objProc
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
For Each objProc In objService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = opera.exe'")
objProc.Terminate
Next
С помощью трансформов и кастом екшенов инсталляции мы можем заточить под себе пакет, так как нам этого хочется, устанавливать или нет различные фичи, выбирать языки по-умолчанию, ярлыки, лицензии, дополнительные файлы и ключи реестра и много другое.
Не все производители ПО выпускают свои продукты в пакетах инсталяции msi. Но есть много продуктов сторонних производителей по созданию msi пакетов, например Wise Package Studio, с помощью которых можна создавать инсталяции чего угодно.
Материалы которые использовались:
*) Голова + руки
*) msi.chm – с состава Windows Installer SDK
* ) www.rsdn.ru/article/install/wininstaller.xml