Разработка инсталляторов. Урок 16. Inno Setup: Компоненты, флаги и переключатели.


Добрый вечер,друзья. В прошлом уроке я затрагивал тему изменения интерфейса стандартными средствами. Сегодня же хотел рассказать о скинах, но получается так, что эта тема настолько огромна, что пост ещё и на 30% не готов. Так что сегодня я расскажу вам о компонентах, а скины оставлю на пятницу.

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

Для этого требуется сделать несколько шагов.

Указываем в секции [Files] наши файлы и папки отдельно. Можно создать новый скрипт из мастера или указать пути вручную. Код:

Source: D:\Program\Program.exe"; DestDir: "{app}"; Flagss: ignoreversion
ource: "D:\Pro:\rce:"D:\Program\Service.exe"; DestDir: s: ignoreversion
ource: "D:\Pro>

Source:>Source: "D:\Program\en\*"; DestDir: "{app}"; Flags: igcreateallsubdirs
ource: "D:\Pro:\ngp>

Source:p>Source: "D:\Program\ru\*"; DestDir: "{apcreateallsubdirs
ource: "D:\Pro:\

Source:ng>

Source: "D:\Program\help-en\*";createallsubdirs
ource: "D:\Pro:\

Source:irs

Source: "D:\Progrcreateallsubdirs
ource: "D:\Prolubdirs

Source:teallsubdirs

Soureateallsubdirs

То ест`` 

То есть rsesubdirs createallsubdirs

То есть получим следующее:

gnooreversion - файлы усИспользуемые флаги:

iививается.
code>rrseстанdirs
- рсимо отверсии. Версия не сравнивается.

<и и файлы.
code>ctea- реubdirs
- создтановку все подкаталоги и файлы.

subdirs. Тепеrong> - создаём подкаталоги в папке, комбинируется с recursesubdirs.

Теперь, если мы скомпилируем скрипт и запустим инсталлятор, то файлы и папки будут установлены без выбора. Так что продолжаем. Создаём секцию [Types]

Name: "fullли выборочную установку. Для llation"
Name: "g> Nameong>Name: "full"; Description: "Full ins: iscustom
p>Name: "custom"; Description: "Custom installation"; Flags: iscustom

Флагом iscustom мы определяем, какой же компонент является выборочным.

Описание:

Full installation - полная установка.

Custom installation - выборочная установка.

Если мы просто пропишем текст на русском, то он будет использоваться для всех языков и наоборот, что не очень красиво. Но в данном случае пока оставим так. В следующем уроке расскажу как это всё поменять, чтобы для каждого языка выводились свои сообщения.

Теперь переходим собственно в компоненты. Создаём секцию [Components]. Далее у нас есть выбор:

Все компоненты в едином списке без группировки. Удобно, когда компонентов немного.

В секции [Components] ример:

Name: "mainзываем, в каком типе установки они будут установm; Flags: fixed
ame: " "Componente Description: "Main Filespes: full custom
ame: "Componennentame

Name: "Component1"; Depes: full custom
ame: "Componenonent Name>

Name: "Component2"pes: full custom
ame: "Componenponent Namem

Name: "Cl custom
Name: "ame: "Compotrong> Namepes: full custom

Namull customp>Флаг

Name: "Component5"; Description: "Russian language"; Types: full custom

Флаг fixed в компоненте Main указывает, что выбор для пользователя будет не активен. Он нам требуется для файлов, которые обязательны для установки.

Теперь нам нуж>

Source: "D:es]
к нашим файлам и папкам значения, кs: ignoreversion
ource: "D:\Pro

Sourк:

Source: "s: ignoreversion
ource: "D:\Pro

SourFlags: ignoreversion

Source: "D:\Program\Servicecreateallsubdirs
ource: "D:\Pro

Souron

Source: "D:\Program\en\*"; Components: Componcreateallsubdirs
ource: "D:\Pro

Sourreateallsubdirs

Source: "D:\Program\ru\*"; Componentscreateallsubdirs
ource: "D:\Pro

Sourubdirs createallsubdirs

Source: "D:\Program\help-en\*createallsubdirs
ource: "D:\Pro

Soursion recursesubdirs createallsubdirs

Source: "D:\Program\help-ru\*"; Compoallsubdirs

То есть"; Flags: ignoreversion recursesubdirs createallsubdirs

Source: "D:\Program\themes\*"; Components: Component1; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

То есть два файла у нас в Main, а остальное можно выбрать.

В программе:

После компиляции:

Как видим, всё rong>:

Name: "mainпировка компонентов.

ame: "аемixed

Nameм ame: "Russian"p> Nameазом в [Comppes: full custom
ame: "Russian\p> Name"Main Files"; Types: full custom;pes: full custom
ame: "Russian\p> Namescription: "Themes"; Types: full custpes: full custom
ame: "English"p> Namessian language"; Typpes: full custom
ame: "English\p> Namenent3"; Description: "Russian help files"l custom
ame: "stostom

NameRussian\Component5"; Description: "Russian language files"; Tycustomp>Так/p>

Name: "English"; Description: "English language"; Types: full custom

Name: "English\Compoшибке:

Source: "D:p files"; Types: full custom

ource: "D:\Prop> Sourge files"; Types: full custom

Такжeversion
ource:секsion

Sourвить группу, иначе компилятор будет писать об ошибке: ource: "D:\Prop> SourMain; DestDir: "{app}"; Flags: ignoreversion

Source: "D:\createallsubdirs
ource: "D:\Prop> Sourags: ignoreversion

Source: "D:\Program\en\*"; Components: Englcreateallsubdirs
ource: "D:\Prop> Soursesubdirs createallsubdirs

Source: "D:\Program\ru\*"; Components: Russlsubdirs
ource:Desdirs

Souron recursesubdirs createallsubdirs

Source: "D:\Program\help-en\*"; Components:ubdirsp>В пir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

Source: "D:\Program\help-ru\*"; Components: Russian\Component3; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

Source: "D:\Program\themes\*"; Components: Component1; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

В программе это выглядит вот так:

После компиляции и запуска наблюдаем следующее:

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

Name: "Russ;

Флаг exclusive - Например, нам требуетсяxclusive
Name: "ольsive

Nameгруппе. Не будем создавать новые группы, а сделаем на текущем примере, хоть это и неve

только русского языка или справки. Добавляем к элементам флаги.

Name: "Russian\Component3"; Description: "Russian help files"; Types: full custom; Flags: exclusive

Name: "Russian\Component5"; Description: "Russian language files"; Types: full custom; Flags: exclusive

В программе:

После сборки и запуска:

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

На этом на сегодня всё. Завтра я расскажу как менять языки и добавлять свои сообщения в установщик и менять стандартные. Всем спасибо и удачи!


Comments 0


Прошу прощения. Редактор кривоват. В следующий раз буду использовать Markdown.

29.03.2017 15:09
0

Привет!

Этот пост был выбран Академией Голоса и попал в список программы поддержки качественных образовательных постов.
Ссылка на твой пост будет опубликована в отчете Академии.

Спасибо за полезный контент (ノ◕ヮ◕)ノ*:・゚✧

30.03.2017 17:04
0