Search
Write a publication
Pull to refresh

Transforms и Custom Actions в технологии Windows Installer

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)

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
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.