Разработка инсталляторов. Урок 5. Первое знакомство с функциями и компонентами, архитектура и файлы.
Добрый вечер всем, кто меня читает. Вчерашний пост я умудрился отправить за час до падения Голоса. Так что если не читали, ознакомьтесь пожалуйста, прежде чем продолжать. Сегодня мы с вами приступим к достаточно интересной теме - организации установщика.
Вы наверное видели при установке разнообразных программ, что инсталлятор требует выбрать необходимые функции, например устанавливаемые языки, скины, шаблоны или ещё что. Или же, например, установщик самостоятельно выбирает версию устанавливаемой программы в зависимости от разрядности вашей ОС. Это всё является функциями.
Функции - наверное самая важная настройка в Advanced Installer. В будущем мы в основном с ними и будем работать. А пока только немного познакомимся на несложном примере.
Немного теории:
Функции состоят из компонентов. Компонентом же может быть что угодно, будь то файл, ключ реестра, ярлык или ещё что.
Например, если мы зайдем во вкладку "Организация продукта" в нашем проекте, который мы пилим уже третий урок, то мы увидим следующее:
На скриншоте выше у нас всего одна функция. И множество компонентов. То есть это все наши ресурсы, которые включены в установщик. Например, мы с вами вчера создавали ключи реестра, данные в которые заносятся из полей для ввода текста, которые запрашивает установщик. Ключи эти также являются компонентами. Чтобы быстро их найти, зайдем во вкладку "Реестр", выберем ключ и перейдём к компонентам:
Как видим, обычные файлы тут уживаются с ключами реестра:
Вообще, значения не имеет, в каком месте находятся компоненты относительно друг друга - главное чтобы они были в одной функции. Иногда один компонент содержит несколько файлов - это также нормально. Надеюсь о роли функций и компонентов теперь всё ясно?
Создаём единый установщик для разных систем (x86 и x64)
В Advanced Installer можно выполнять данную операцию с помощью мастера или же вручную. Сейчас ознакомимся с мастером, а после уже сможете создавать то же самое вручную.
Предположим, что у нас есть два исполняемых файла программы. Один 32 разрядный, второй соответственно 64-разрядный. И нам требуется, чтобы установщик автоматически определил разрядность ОС пользователя и, в зависимости от результата, установил нужный исполняемый файл. Что для этого нужно? Создаём в папке на диске папки, например x64 и x86, и добавляем туда файлы в соответствии с разрядностью. Удаляем из проекта файл Program.exe:
Далее заходим во вкладку "Параметры установки" и в типе пакета выбираем смешанный пакет:
У нас запустится мастер. Так как у нас проект ещё не содержит файла для x64, добавляем его через "Новые файлы". Лишние файлы из списка удаляем:
Для x86 поступаем аналогично (папку можете назвать как угодно):
В следующем окне мастера предлагается выбрать название функций:
Выбираем, нужны ли нам ярлыки:
Модули слияния нам не нужны, так что просто нажимаем "Готово". Теперь посмотрим, что же сделал мастер? Переходим во вкладку файлы и папки и видим, что у нас в проекте опять появился файл Program.exe и путь прописан на x64 и добавилась папка "32-разрядная":
В этой папке теперь живёт файл, который будет установлен на систему x86. Если мы зайдём в организацию продукта, то увидим что у нас появились новые функции:
То есть при установке будут активны только те, которые зависят от разрядности ОС. А общие функции так и будут установлены, вне зависимости от системы. Добавлять можно не только один файл, как вы поняли. Можно конфигурировать как душе угодно. Но как же определяется разрядность ос и активные функции? Всё просто. Откроем функцию "64-разрядная":
Как мы видим, функция зависит от условий, которые тут прописаны. Мастер просто помогает их прописать. И всё это можно сделать вручную. В 32-разрядной функции всё наоборот:
Условия могут быть зависимы не только от разрядности, но и от других факторов. Настраиваются в дополнительных параметрах там же. Можете экспериментировать, хотя мы к этому вернёмся обязательно. По этим настройкам условий можно целый пост отдельно написать. Названия функций вы можете менять, добавлять описание и т.п.
После всех этих сегодняшних манипуляций проверим установщик. Теперь при выборе "Полной" установки установщик определит ОС и установит необходимые файлы, а при "Выборочной" мы увидим следующее:
Как видите, получилось неплохо. Вот только функция MainFeature тут зачем? Перетаскиваем мышкой единственный компонент из этой функции в Общие:
Саму функцию MainFeature удаляем через контекстное меню. Теперь в установщике её не будет:
На этом на сегодня всё, продолжим завтра. Всем удачи и до встречи!