суббота, 13 октября 2012 г.

IExpress – создание самораспаковывающихся архивов и инсталляторов

Недавно узнал, что в состав Windows (начиная с Windows XP) входит интересная утилита – IExpress. Располагается она в c:\windows\system32, и поэтому ее можно вызывать без указания полного пути. У нее два основных назначения – создание относительно простых инсталляторов и самораспаковывающихся архивов (файлы с расширением exe). Конечно, в архивации она не сравнится в удобстве использования с коммерческими продуктами типа WinRar, однако вполне может выручить, когда коммерческий архиватор не доступен (например, на сервере). Так же что не маловажно, утилита поддерживает работу из командной строки, что делает ее пригодной для использования в автоматизации (например, ее можно использовать как один из шагов в bat-файлах, при сборке проекта в Visual Studio и на билд-сервере). Еще и еще один плюс -- антивирусов нет аллергии на полученный исполняемый файл (в отличи, скажем, от исполняемого бутстраппера который формирует WiX Burn).

Далее приведу пример, как создать архив при помощи IEpress и посмотрим какие опции есть у утилиты. Также увидим как выглядит процесс распаковки такого архива.

Появится начальное окно мастера IExpress.

image

Как видно по скриншоту, он не локализован и даже на русской версии Windows имеет англоязычный интерфейс пользователя. Выберем Create new Self Extraction Directive file и нажмем «Далее». Вторя опция Open existing Self Extraction Directive file позволяет открыть текстовый файл в формате SED c заданными параметрами для утилиты (мы еще встретим создание этого файла далее).

На следующем экране выберем опцию Extract files only. Если бы мы создавали инсталлятор, то следует выбрать опцию Extract files and run an installation command. А если выбрать последнюю опцию – Create compressed files only – то будет создан cab файл.

image

Далее в Package title введем название архива, его увидит пользователь. Например, «ReadMe архив».

На экране Confirmation prompt можно еще раз спросить у пользователя точно ли он хочет распаковать наш архив. В целя изучения IExpres, выберем опцию Promt user with и введем в поле ниже «Распакуем архивчик?»

image

На экране License agreenment можно предварить распаковку показом лицензии пользователю. Так мы и сделаем и поэтому выберем опцию Display a licene и выберем текстовый файл произвольного содержания.

Важный экран Packaged files. Именно здесь перечисляются файлы, которые войдут в состав архива. Добавим сюда файлы архива.

image

На экране Show window определяется как пользователь будет видеть окно с прогрессом распаковки архива (инсталлятора). Оставим дефолтную опцию Default.

На следующем экране Finished message можно задать сообщение, которое получит пользователь после распаковки архива. Так мы и поступим. Выберем опцию Display message и в поле ниже введем «Поздравляем!».

image

Экран Package Name and Options позволяет задать имя архива (инсталлятора). Выберите так же параметр Store files using Long File Name inside Package, чтобы файлы длиннее 8 символов остались не измененными.

image

Экран Save Self Extraction Directive позволяет сохранить выбранные нами опции и введенные значения в текстовый файл, для повторного использования (помните вариант Open existing Self Extraction Directive file с первого скриншота?)

Больше вводить ничего не придется и просто жмем кнопу Далее. И получим вот такой исполняемый файл.

image

Теперь запустим полученный файл. Вначале пользователь видит наше приветствие. А заголовок окна – это имя пакета.

image

Затем пользователю показывается лицензия.

image

Далее окно для ввода местоположения для распаковки архива. Обратите внимание, что если сама утилита IExress не локализована, то полученный файл – локализован.

image

По окончанию пользователь видит наше последнее сообщения.

image

Как видим, получился весьма неплохой самораспаковывающийся архив.

Еще один интересный вариант применения IExress нашел в статье Deployment with IExpress: How to turn your MSI file into an EXE-- это создание инсталлятора с расширением exe для msi файла. Это не бутстраппер, а в некотором роде обертка, которая распаковывает msi файл и запускает его инсталляцию. По правде говоря, необходимости в такой обертке нет, но большинство пользователей комфортней себя чествуют, когда скачивают exe файл, а не непонятный msi. Там же приведен пример, как настроить автоматическое создание инсталлятора при сборке в студии.

Хочу так же отметить один важный нюанс. Если вы используете IExpress на 64 битной Windows, то полученный файл не исполняется на 32 битной версии

image

Для такого случая есть 32 битная версия IExpress, которая надо вызывать из каталога c:\windows\syswow64 (расшифровывается как Windows On Windows 64).

В завершение статьи могу порекомендовать раздел с Technet где описаны параметры командной строки для утилиты и немого более рассказывается про создание инсталлятора.

Комментариев нет: