Чем открыть inno setup
Добрый вечер,друзья. В прошлом уроке я затрагивал тему изменения интерфейса стандартными средствами. Сегодня же хотел рассказать о скинах, но получается так, что эта тема настолько огромна, что пост ещё и на 30% не готов. Так что сегодня я расскажу вам о компонентах, а скины оставлю на пятницу.
По умолчанию, установка нашей программы выполняется полностью. Но что делать, если требуется прописать выбор тех или иных папок или файлов для установки?
Для этого требуется сделать несколько шагов.
Указываем в секции [Files] наши файлы и папки отдельно. Можно создать новый скрипт из мастера или указать пути вручную. Код:
Source: "D:\Program\Program.exe"; DestDir: ""; Flags: ignoreversion
Source: "D:\Program\Service.exe"; DestDir: ""; Flags: ignoreversion
Source: "D:\Program\en\*"; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\ru\*"; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\help-en\*"; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\help-ru\*"; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\themes\*"; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
То есть получим следующее:
Используемые флаги:
gnoreversion - файлы устанавливаются независимо отверсии. Версия не сравнивается.
recursesubdirs - рекурсивно включаем в установку все подкаталоги и файлы.
createallsubdirs - создаём подкаталоги в папке, комбинируется с recursesubdirs.
Теперь, если мы скомпилируем скрипт и запустим инсталлятор, то файлы и папки будут установлены без выбора. Так что продолжаем. Создаём секцию [Types], Нам требуется выбрать полную или выборочную установку. Для этого создаём параметры:
Name: "full"; Description: "Full installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom
Флагом iscustom мы определяем, какой же компонент является выборочным.
Описание:
Full installation - полная установка.
Custom installation - выборочная установка.
Теперь переходим собственно в компоненты. Создаём секцию [Components]. Далее у нас есть выбор:
Все компоненты в едином списке без группировки. Удобно, когда компонентов немного.
В секции [Components] перечисляем наши компоненты и указываем, в каком типе установки они будут установлены. Например:
Name: "main"; Description: "Main Files"; Types: full custom; Flags: fixed
Name: "Component1"; Description: "Themes"; Types: full custom
Name: "Component2"; Description: "English help files"; Types: full custom
Name: "Component3"; Description: "Russian help files"; Types: full custom
Name: "Component4"; Description: "English language"; Types: full custom
Name: "Component5"; Description: "Russian language"; Types: full custom
Флаг fixed в компоненте Main указывает, что выбор для пользователя будет не активен. Он нам требуется для файлов, которые обязательны для установки.
Теперь нам нужно добавить в раздел [Files] к нашим файлам и папкам значения, к какому компоненту они принадлежат. Делаем вот так:
Source: "D:\Program\Program.exe"; Components: Main; DestDir: ""; Flags: ignoreversion
Source: "D:\Program\Service.exe"; Components: Main; DestDir: ""; Flags: ignoreversion
Source: "D:\Program\en\*"; Components: Component4; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\ru\*"; Components: Component5; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\help-en\*"; Components: Component2; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\help-ru\*"; Components: Component3; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\themes\*"; Components: Component1; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
То есть два файла у нас в Main, а остальное можно выбрать.
Как видим, всё работает.
Группировка компонентов.
Например, сделаем группировку по языкам. Комбинируйте как хотите. Просто создаём группу таким образом в [Components]:
Name: "main"; Description: "Main Files"; Types: full custom; Flags: fixed
Name: "Component1"; Description: "Themes"; Types: full custom
Name: "Russian"; Description: "Russian language"; Types: full custom
Name: "Russian\Component3"; Description: "Russian help files"; Types: full custom
Name: "Russian\Component5"; Description: "Russian language files"; Types: full custom
Name: "English"; Description: "English language"; Types: full custom
Name: "English\Component2"; Description: "English help files"; Types: full custom
Name: "English\Component4"; Description: "English language files"; Types: full custom
Также не забудьте в секции [Files] добавить группу, иначе компилятор будет писать об ошибке:
Source: "D:\Program\Program.exe"; Components: Main; DestDir: ""; Flags: ignoreversion
Source: "D:\Program\Service.exe"; Components: Main; DestDir: ""; Flags: ignoreversion
Source: "D:\Program\en\*"; Components: English\Component4; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\ru\*"; Components: Russian\Component5; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\help-en\*"; Components: English\Component2; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\help-ru\*"; Components: Russian\Component3; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Program\themes\*"; Components: Component1; DestDir: ""; Flags: ignoreversion recursesubdirs createallsubdirs
В программе это выглядит вот так:
После компиляции и запуска наблюдаем следующее:
Как видите, особо сложного ничего нет. Группировать можете как хотите (не забывая опять же прописывать в секцию файлов правильное значение. Это частая ошибка начинающего. Но хотелось бы также добавить про флаги.
Флаг exclusive - Например, нам требуется сделать выбор только одного дочернего компонента в группе. Не будем создавать новые группы, а сделаем на текущем примере, хоть это и не совсем правильно. Но для примера пойдёт. То есть сделаем выбор установки только русского языка или справки. Добавляем к элементам флаги.
Name: "Russian\Component3"; Description: "Russian help files"; Types: full custom; Flags: exclusive
Name: "Russian\Component5"; Description: "Russian language files"; Types: full custom; Flags: exclusive
После сборки и запуска:
Как видим, наш чекбокс превратился в переключатель. Эту функцию удобно использовать, например, при выборе альтернативной локализации или озвучки при установке репака игры. Использование других флагов описано в справке вполне подробно, кое-что мы позже также разберём.
Для начала история. Inno Setup — открытое программное обеспечение, которое несет в себе цель создания полнофункционального инсталятора для программ Windows.
Плюсы программы:
— работает практически на всех системах Windows, вплоть для NT 4.0;
— поддержка создания одиночного .exe файла;
— имеет несколько типов сжатия, такие как zip, lzma и т.д;
— большое количество палагинов, красивый интерфейс и юзабилити.
Итак, перейдем к созданию своего инсталятора. Процесс очень просто, и для этого практически ничего знать не нужно. В этом файле находятся все исходники и файлы, которые я буду использовать в ходе работы.
Для начала скачаем программу с оффициального сайта. Установим приложение.
В процессе мастера создания, выставляем все значения как на скриншотах:
Остальное по дефолту, смело жмем кнопку «Finish».
На четвертом скриншоте добавляем свою программу. Примечание: в процессе добавления файлов не все так просто. Допустим, в Вашей программе файлы находятся в под папках, а Inno Setup по умолчанию скидывает все файлы в одну папку. Это мы исправим позже, в исходном коде программы.
И вот перед нами появляется в какой-то степени подобие блокнота, только с подсветкой синтаксиса.
Тут мы можем изменить простейшие переменные, такие как AppName, AppVersion и т.д. Что касается размещения файлов, и куда они будут копироваться при установке — это значение столбца [Files].
Именно тут все и меняем. Чтобы переместить файл например в под папку, дописываем к значению DestDir соответствующее местоположение:
Остальные опции, можно менять по такому-же принципу. В этом нам поможет раздел справки. Она на английском, но даже человеку который плохо знает этот язык, не будет сложно разобраться. Так-же есть русская справка, к более ранним версиям программы. На заметку: изображения которые применяются в инсталяторе, находятся в корневой папке Inno Setup. Соблюдая размер и расширение вы можете поменять их на свои.
Когда все сделали, можем компилировать. Вот наш установщик и работает. Если вдруг процесс не удался, значит стоит проверить весь проект, на наличие ошибок. В архиве, ссылка на который указана выше есть исходный код собранной мною программы. В интернете собрано достаточно информации о данной программе, что дает преимущество освоения. Пробуйте, и у Вас все получится.
Я не являюсь профессиональным программистом. В том смысле, что не зарабатываю денег этим ремеслом, а использую свои навыки в качестве инструмента для основной, научной, деятельности. Поэтому все мои «поделки» живут лишь отведенный им на решение конкретной задачи период и не выходят за пределы каталогов проекта. Кроме того, уже довольно давно я отошел от разработки под ОС Windows, ибо Linux для решения моих задач более удобен.
Однако ученым тоже хочется кушать, прилично одеваться и заправлять машину. Поэтому (правда довольно редко) возникает необходимость немного пофрилансить.
Недавно мне подкинули не слишком сложный проект — одна фирма хочет написать аналог программы, имеющейся у другой. Немного реверсинга, немного кодинга, в целом проект вполне обыденный. Однако тут же возник вопрос о создании инсталлятора — клиент ведь желает продукт «под ключ», чтобы клацнуть на «сетап», понажимать «Далее» и получить готовую к работе программу.
Созданием инсталляторов я не занимался никогда. Поэтому данный вопрос был основательно «загуглен», в числе прочего попалась и такая статья с Хабра. Выбор средств для подобной задачи довольно широк, и включает как проприетарные, так и открытые продукты. Вот список того, что я «пощупал»
-
— классика жанра, достаточно солидный проприетарный продукт — проприетарный инструмент с широкими возможностями кастомизации через GUI. На сайте сказано, что если Вы блоггер и будете писать об этом продукте много хороших слов, то у Вас есть возможность получить Free License — открытый бесплатный продукт, основанный на XML-скриптах. Мощная, хорошо документированная штука. Разбираться с ним я пока не стал, ибо время дорого (да и к XML душа лежит не очень). Возможно когда нибудь я к нему вернусь. Да, к нему есть плагины для Visual Studio, что несомненный плюс. — опенсорсный проект, код которого доступен на гитхабе. В силу бесплатности и низкого порога вхождения мой выбор остановился именно на нем, как инструменте позволившем выполнить работу быстро и качественно.
Так что в статье мы будем рассматривать пример использования Inno Setup, для которого имеется полезный фронтэнд Inno Script Studio, позволяющий выполнять создание простых инсталляторов с помощью мастера и менять настройки через GUI. GUI понадобился мне для первого знакомства, с продуктом, но мы не будем уделять ему большого внимания — мой «линукс головного мозга» в последнее время всё больше и больше уводит меня от желания использовать разного рода «мастера» (это субъективно, прошу не пинать). Мы рассмотрим хардкорный способ написания скрипта с чистого листа.
Думаю, что скачать программу с официального сайта и установить её труда не составит. Запускаем Inno Setup Compiler и видим такое окно
Пугающе уныло встречает нас Inno Setup.
Что это? По сути это просто-напросто редактор для набора скриптов, снабженный подсветкой синтаксиса и кнопками компиляции и запуска. От нас ждут, что мы начнем набирать в этом окне текст скрипта, определяющий логику работы будущего инсталлятора. Ну так и не будем терять время.
Прежде всего определим необходимые константы
Тело скрипта разделяется на секции, каждая из которых несет свое функциональное назначение. Обязательная секция [Setup] задает глобальные параметры работы инсталлятора и деинсталатора.
Пристальное внимание уделаем опции AddId — уникальный идентификатор приложения (GUID), используемый для регистрации приложения в реестре Windows. Его пишем не «от фонаря», а генерируем, открывая фигурную скобку, и выбрав в меню пункт Tools -> Generate GUID (или используя хот-кей Shift + Ctrl + G). Далее указываем имя приложения, под которым оно будет установлено в системе, его версию, данные фирмы разработчика, адреса сайтов разработчика, технической поддержки и обновления.
Путь, по умолчанию предлагаемый инсталлятором для установки определяем опцией DefaultDirName. При этом переменная — это путь в каталог Program Files соответствующей разрядности. Опция DefaultGroupName определяет имя группы программы в меню «Пуск». Обратите внимание на то, что для указания имени приложения мы используем данное нами выше макроопределение Name, обрамляя его фигурными скобками и решеткой.
Пара опций OutputDir и OutputBaseFileName задают каталог, куда будет записан скомпилированный «сетап» и его имя (без расширения). Кроме этого, указываем где взять иконку для test-setup.exe опцией SetupIconFile.
Последние опции в этой секции определяют алгоритм сжатия (LZMA) и указывают, что все файлы сжимаются одновременно, а не по отдельности (SolidCompression) что ускоряет процесс распаковки при большом количестве однотипных файлов.
В хорошем исталяторе должна быть поддержка нескольких языков. Включаем её в наш «сетап», используя опциональную секцию [Languages]. При отсутствии данной секции будет использоваться английский язык.
Каждая строка в данной секции задает один из используемых при установке языков. Синтаксис строки таков
Параметр LicenseFile задает путь к файлу с текстом лицензии на соответствующем языке.
Обычно установщик предлагает нам, например, определится, хотим мы или не хотим создать ярлык на рабочем столе. Такие опции установки определяются необязательной секцией [Tasks]
Здесь Name задает имя операции — «desktopicom» — создание иконки на рабочем столе; Description — описание чекбокса с опцией, которое увидит пользователь. Конструкция
Теперь укажем, какие файлы надо включить в дистрибутив и где их надо поместить при установке. Для этого используется обязательная секция [Files]
- Source — путь к файлу-источнику. У меня всё необходимое программе для работы лежит в каталоге Release проекта MS VS
- DestDir — каталог установки, переменная содержит путь, выбранный пользователем в окне установщика
- Flags — разнообразные флаги. В нашем примере для исполняемого файла: игнорирование версии программы при перезаписи исполняемого модуля, если он уже существует в системе (ignorevarsion); для остальных файлов и каталогов так же игнорируем версию, рекурсивно включаем все подкаталоги и файлы источника (recursesubdirs) и создаем подкаталоги, если их нет (createallsubdirs)
Наконец, чтобы всё было красиво, опционально укажем компилятору, где брать иконки для размещения в меню программ и на рабочем столе
Тут я указываю, что для группы в меню «Пуск» и для рабочего стола иконку надо брать из исполняемого модуля. Естественно, что иконка должна быть в него «вкомпилена», иначе в требуемых местах мы увидим стандартный значок из коллекции винды.
Итак, всё вроде готово. Жмем Ctrl + F9 и пытаемся собрать инсталлятор. Если не допущены синтаксические ошибки, начнется процесс сборки
Inno Setup собирает инсталлятор
После успешной сборки инсталлятор можно запустить, нажав F9. Если Вы работаете под учеткой с ограниченными правами (а я работаю в винде именно так), то придется полезть в каталог с результатами компиляции, который мы указали в скрипте, и запустить инсталлятор с правами админа
Запуск инсталлятора под ограниченной учетной записью
В итоге мы увидим до боли знакомое каждому пользователю Windows окно выбора языка
приветствие мастера
лицензионное соглашение
ну и так далее. Приятно, что по умолчанию используется лаконичный дизайн мастера, без рюшечек (которые при желании можно добавить)
Ну что сказать? Ура! Мы написали свой первый «сетап» и могли бы радоваться, но
- Определиться с тем, как будем получать дистрибутив фреймворка. Тут есть два варианта — поставлять его вместе с дистрибутивом программы или, при необходимости установки загрузить его онлайн на целевую машину. Мы остановимся на варианте включения фреймворка в дистрибутив. Сам фреймфорк, скажем версии 4.0, можно взять бесплатно у Майкрософта
- Детектировать наличие/отсутствие данного фреймфорка в целевой системе. Для этого потребуется написать логику, анализирующую состояние системного реестра.
Значения в реестре, которые необходимо проверить приведены в официальной документации Microsoft, в статье я приведу краткую выжимку из неё
хотя можно набить код и непосредственно в секции [Code]. Надо помнить, что внутри этой секции используется синтаксис Pascal, и комментарии предваряются последовательностью "//" вместо используемой в основной части скрипта точки с запятой.
Не смотря на обилие кода, логика его работы достаточно проста — в зависимости от значения параметра version с помощью функции RegQueryDWordValue(. ) читается значение соответствующего ключа реестра и сравнивается с требуемым значением (смотрим таблицу 1). Для версии 4.5 дополнительно передаем номер релиза в параметре release.
Для того, чтобы перед началом установки проверить наличие фреймворка и сообщить пользователю о предпринимаемых действиях используем Callback-функцию InitializeSetup()
Сам запуск инсталляции фрейворка можно выполнить после установки основной программы, поэтому включаем в скрипт секцию [Run], в которой указывается, что необходимо запускать по окончании установки
Обратите внимание на то, что мы сначала указываем имя секции [Run], чтобы закрыть секцию [Code], а затем пишем комментарий начинающийся с точки с запятой. Это необходимо из-за различия синтаксиса основного скрипта и секции [Code], в противном случае при компиляции мы получим синтаксическую ошибку.
Майкрософт просит нас принять лицензию.
Я не профессионал и во многих вещах могу ошибаться. Прошу отнестись к этому с пониманием. Статья писалась нубом для нубов, её основная цель — задать вектор поиска при решении задачи написания инсталлятора. За остальными вопросами можно обратится к документации, поставляемой вместе с Inno Setup.
Код данного примера доступен в моем репозитории на Github. «Кракозябры» в комментах вызваны несовпадением кирилических кодировок. Для себя всегда пишу английские комментарии, но для лучшего понимания кода допустил этот ляп. При скачивании в винде всё просматривается замечательно, так что прошу простить мне и эту несуразность.
В остальном, полагаю «хаутушка» вышла достойной и благодарю за уделенное мне внимание.
Привет, друзья. В предыдущих частях я в основном рассматривал использование Advanced Installer, сегодня же мы переходим к знакомству с другой программой для создания инсталляторов - Inno Setup. Данная программа, пожалуй, наиболее популярна в мире для создания установочных пакетов. В основном все репаки игр, которые вы качаете с трекеров, созданы именно в ней. В программе поддерживается шифрование, установка пароля, различные задачи по завершении установки и многое другое. Самое главное, на мой взгляд, это возможность интеграции с различными упаковщиками-архиваторами и огромные возможности модификации интерефйса. Программа абсолютно бесплатна и использует Pascal scripting для написания кода. Данную программу в своих проектах я давно не использовал, так что буду вспоминать вместе с вами.
Первое знакомство и установка.
Скачиваем QuickStart Pack с официального сайта и устанавливаем. Программа распространяется в двух версиях - обычной и unicode. Я использую обычную (ansi). При запуске установщика программа спросит вас про установку Inno Script Studio и других компонентов. Соглашаемся.
Стандартный интерфейс программы Inno Setup достаточно убог, на мой взгляд. Для написания кода вручную - он вполне подходит. Можете сравнить рабочие окна Inno Setup и Inno Script Studio. Мы в основном будем работать во второй.
Если вам нужен русский язык в данных программах, то скачиваем русификатор для Inno Setup (Заменить файл Compil32.exe в папке с программой на файл из архива) и Inno Script Studio (Файл из архива Russian.lng скопировать в папку Inno Script Studio\Languages и в открытой программе выбрать в меню View -> Languages -> Русский). После русификации программы выглядят следующим образом:
Также Вы можете скачать русскую справку по этой ссылке.
Дополнительные программы.
Для Inno Setup за всё время её существования написано достаточно много разных утилит, облегчающих написание кода, распаковщики готовых инсталляторов, библиотеки и модули. Упоминать их все в данном посту я не буду, их очень много, по мере построения наших проектов мы будем подключать те или иные возможности.
Простой проект.
Как вы помните, в Advanced Installer существует мастер для создания проектов. В Inno Script Studio также существует такая возможность. Запускаем мастер создания проекта при запуске программы (то есть выбираем Простой скрипт). Я буду использовать уже набивший оскомину проект Program, то есть те же файлы, что мы использовали ранее в других уроках. Это даст, на мой взгляд, более глубокое понимание различий в работе с этими программами.
Мастер нам понадобиться только на начальном этапе. После его работы будет более понятно, что и как получается в результате его трудов.
Пишем название программы, номер версии и заполняем другие поля по желанию.
Если в окне ниже мы не будем ничего менять, то наша программа по умолчанию будет установлена в папку Program Files/Program.
Добавляем папку, содержащую файлы для установки и указываем главный исполняемый файл.
Создание ярлыков в мастере организовано даже лучше, чем в Advanced Installer.
Далее можно указать файл лицензионного соглашения и другие документы. Я создал практически пустые текстовые файлы, только для теста.
Естественно, кроме английского языка мы выберем русский.
Выбираем, где требуется создать готовый установщик и название установочного пакета. Иконку опять пришлось выдёргивать через Restorator.
После завершения мастера отказываемся от компиляции и начинаем изучать, что же сделал мастер со скриптом установщика. Как видим, всё на данный момент достаточно просто и интуитивно понятно. В разделе с файлами у нас указаны только папки с нашими файлами. В остальных я подписал что к чему.
А пока сохраним проект и выполним компиляцию.
После сборки запустим готовый установщик и проверим.
Как видим, сначала инсталлятор попросит нас выбрать язык, далее подтвердить лицензию и всё остальное. После установки все файлы там, где и должны быть. Общие временные затраты на создание и компиляцию проекта - 10 минут и простой проект закончен. По мере развития проекта и добавления возможностей скрипт у нас будет всё больше и сложнее.
Кстати, скрипты Inno Setup можно открывать и редактировать не только в этой программе, но и в разнообразных редакторах. Например, в Notepad++.
Всем спасибо, на этом на сегодня всё. Встретимся завтра.
В данном случае используется английский и русский языки, как мы видим выше. Имя (Name) мы можем менять. Указанный путь "compiler:Default.isl" - означает, что язык по умолчанию (Английский) находится в папке с компилятором. По умолчанию это C:\Program Files\Inno Setup 5, а русский язык (Russian.isl) находится в подпапке Languages там-же. Давайте откроем файл с английским языком - Default.isl с помощью редактора. Я использую Notepad++.
Название же языка указано символами юникода в шестнадцатеричном виде: LanguageName= . Это сделано в целях правильного использования и недопущения ошибок.
Можно отредактировать эти файлы прямо в папке с компилятором, то есть изменить стандартные значения. Можно скопировать эти файлы в папку с проектом и переименовать Default.isl в English.isl для собственного удобства. Я так и сделал. То есть эти файлы у меня будут использованы только в этом проекте, для других проектов буду использовать свои. Откроем проект и пропишем значения в секцию [Languages]:
Также хочу обратить ваше внимание на добавление в секцию [Languages] дополнительных возможностей. Например, мы можем указать там путь к текстовым файлам (отображаемым до и после установки) и лицензионному соглашению, которые будут использоваться только для выбранного языка:
InfoBeforeFile: "D:\Program\Do.txt"; InfoAfterFile: "D:\Program\Posle.txt"; LicenseFile: "D:\Program\License.txt"
InfoBeforeFile: "D:\Program\DoRus.txt"; InfoAfterFile: "D:\Program\PosleRus.txt"; LicenseFile: "D:\Program\LicenseRus.txt"
В программе:
InfoBeforeFile - текст из этого файла отображается до установки программы.
InfoAfterFile - текст из этого файла отображается после установки программы.
LicenseFile - файл с лицензионным соглашением.
Я данный функционал в проекте использовать не буду, просто ввёл в курс, что можно так сделать. Файлы можно использовать в формате .txt или .rtf.
Теперь давайте придумаем значения для текста вчерашнего проекта. На русском:
RusHelp=Русская справка для программы
EngHelp=Английская справка для программы
FullInstallation=Полная установка программы
CustomInstallation=Выборочная установка программы
Для английского языка:
RusHelp=Russian Help Files
EngHelp=English Help Files
Последние два значения есть в стандартных файлах локализации. Но у меня почему-то они не работали (то есть текст не менялся). По этому буду использовать другую возможность изменения этого текста.
Теперь создаём секцию [CustomMessages] под секцией [Languages]. Перед названием значения константы пишем префикс - имя языка из секции [Languages] с точкой после названия. На примере одной строки (чтобы не загромождать пост):
И на английском:
На примере выбора типа установки:
[Types]
Name: "custom"; Description: ""; Flags: iscustom
Скриншот:
[Types]
Name: "custom"; Description: ""; Flags: iscustom
[Components]
Name: "main"; Description: ""; Types: full custom; Flags: fixed
Name: "Component1"; Description: ""; Types: full custom
Name: "Russian"; Description: ""; Types: full custom
Name: "Russian\Component3"; Description: ""; Types: full custom
Name: "Russian\Component5"; Description: ""; Types: full custom
Name: "English"; Description: ""; Types: full custom
Name: "English\Component2"; Description: ""; Types: full custom
Name: "English\Component4"; Description: ""; Types: full custom
В программе:
Также мы можем создать секцию [LangOptions] в скрипте и указать нужные нам значения (шрифт, размер и т.п) для каждого языка. Если требуется, конечно. Также перед названием значения пишем префикс - имя языка и точку. Например:
[LangOptions]
russian.DialogFontName= MS Shell Dlg
В программе:
Это делать совсем не обязательно. Но полезно, если не хотите редактировать файлы, содержащие локализацию. WelcomeFontName и WelcomeFontSize определяют название и размер шрифта, используемого на страницах Приветствие и Установка завершена. Остальное есть в начале поста.
[Messages]
То текст на кнопках будет изменён на использованный в секции. Всё достаточно просто.
Давайте скомпилируем наш скрипт.
Проверим русский язык:
На буржуйском:
Как видим, у нас всё прекрасно получилось. Задача на сегодня выполнена. Если же в будущем мы будем сталкиваться с теми функциями, которые мы сегодня не рассмотрели, но они относятся к языку - они будут естественно описаны и использованы. На этом на сегодня всё. Всем спасибо за внимание.
Читайте также: