Как создать годный инсталлятор 3


Поделиться статьёй с друзьями:

It4you.su_firs_image_Inno_setup_manual

Стирая пальцы о клавиши, проливая пот и слёзы, живя под лозунгом «На ведро пота, капля кофе», ты наконец закончил свой шедевр. Тебе рукоплещут красивые девушки, мастера кодинга падают в обморок от чистоты твоего кода, а из Google предлагают работу. Но Setup то где, где Setup, Карл?! Не выкладывать же шедевр с ReadMy, где описано куда надо этот файл скопировать, куда поместить ту библиотеку, да и деистолятор бы пригодился. Не спеши расстраиваться, друг мой на этот вопрос найдётся ответ. Inno Setup, самое универсальное решение из всех (двух) что я пробовал для создания инсталлятора, оно же самое бесплатное. Inno Setup — компилятор скрипта, за одно и Pascal’я. Текст данного повествования, расскажет тебе как создать инсталятор, своими руками:

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

  • Собственно, устанавливать и регистрировать в реестре как положено всем инсталляторам,не требовать прав администратора для установки. Ну и на закусочку, устанавливаться для доступа только пользователю под чьим именем была запущена инсталляция.
  • Предоставлять возможность пользователю выбирать компоненты программы, в моём случае выбирать какую программу из нескольких установить.
  • Давать пользователю выбрать необходимые компоненты программы, а при повторном запуске инсталлятора позволять удалить не нужные компоненты.

Реализация простого инсталлятора

Для начала нужно скачать программу. Тыц.

Установил ? Запустил ? Видишь пустое окно редактора и думаешь с чего же начать? Тогда вперёд, волшебник тебе поможет (Inno Setup Script Wizard).

File > New > Next >

it4you.su_Inno_setup_1

Application Name — Наименование программы, будет отображаться в «Меню Пуск» и в «Программах и компонентах».

Application version – версия программы, отображается в «Программах и компонентах» рядом с названием. Также есть возможность проверять версию программы в скрипте, и предпринимать определённые действия в зависимости от результата.

Application publisher — отображается в «Программах и компонентах» в колонке «Организация».

Application website – сайт разработчика к примеру, можно будет потом создать ярлык с ссылкой на сайт, в «Меню Пуск» например.

Next >

it4you.su_Inno_setup_2

Application destination base folderуказывает директорию для установки, по умолчанию – «Program Files». Но для установки от имени пользователя, не имеющего прав администратора, эта папка не подходит. Поэтому пока оставим так потом в скрипте поправим.

Application folder Nameпапка в которую будут помещаться файлы программы.

Allow user to change the application folderразрешить пользователю выбирать папку установки. У нас тут тоталитаризм так что я убрал галочку.

The application doesn’t need folderэтому приложению не нужна папка. Т.е. файлы будут распаковываться прямо в корень папки назначения (по умолчанию Program Files).

Next >

it4you.su_Inno_setup_3

Application main executable fileосновной исполняемый файл. Указываем вместе с Allow user to start the application after Setup has finished (разрешить пользователю запускать приложение после установки), если хотим, чтобы у пользователя была возможность поставить галочку, «Запустить после установки».

The application does’t have a main execute fileприложение не имеет основного исполняемого файла. К примеру, у меня установщик распаковывает сразу несколько программ, основной среди них нет, в таком случае я ставлю галочку и указываю директорию с программами.

Next >

it4you.su_Inno_setup_4

Create a shortcut to the main executable in the common Start Menu Programs folderСоздать ярлык для главного исполняемого файла в общую папку «Программы», «Меню Пуск». В общую, значит доступна для всех пользователей. Меня это не устраивает, поэтому долой галку.

Application Start Menu folder nameимя папки приложения в «Меню Пуск».

Allow user to change the start Menu folder nameразрешить пользователю изменять имя папки приложения в «Меню Пуск».

Allow user to disable Start Menu folder creationразрешить пользователю отключать создание папки в «Меню Пуск».

Create an Internet shortcut in the Start Menu folderсоздать ярлык на сайт в «Меню Пуск». Помните на первом шаге указывали сайт? Вот на него то и будет создан ярлык.

Create an Uninstall shortcut in the Start Menu folderсоздать ярлык деинсталляции приложения в «Меню Пуск».

Allow user to create a desktop shortcutразрешить пользователю создать ярлык на рабочем столе.

Allow user to create a Quick Launch shortcut on older versions of Windowsразрешить пользователю создавать ярлыки быстрого доступа для старых версий Windows. Под старыми понимаются бородачи до Windows XP.

Next >

it4you.su_Inno_setup_5

License fileфайл лицензирования. Здесь нужно указать путь к файлу .txt, где будет описано лицензионно соглашение, это то на что пользователь обычно соглашаешься не прочитав.

Information file show before installationинформационный файл который будет показан до инсталляции. Например, приветствие.

Information file show after installationинформационный файл который будет показан после инсталляции. Например, ReadMy.

Next >

it4you.su_Inno_setup_6

В этом окне выбираем язык установки. Если выбрано несколько языков, то при запуске пользователю будет предоставлен выбор на каком языке запустить инсталлятор.

Next >

it4you.su_Inno_setup_7

Custom compiler output folderпользовательская папка для компиляции. Куда будет складываться наш долгожданный Setup.

Compiler output base file nameимя скомпилированного файла.

Custom Setup icon fileпользовательская иконка Setup-файла.

Setup passwordпароль. Запрашивается при установке, без него пользователь не сможет провести установку. Если ничего не указано, пароль не будет спрашиваться.

Next >Next >

И наконец окно редактора заполнено.

it4you.su_Inno_setup_8

Но что это за буквы? Спросишь ты.

Ну давай разбираться, первое что бросается в глаза это структура, весь скрипт разбит на секции как, например, INI-файл.

#define – определяет переменные. Можно определить, как текст, так и числа, можно даже массивы. Если, хочешь узнать более подробно то выделив слово «define» и нажав на F1 можно получить справку по синтаксису. Естественно на английском, но, если не селён — Google translate тебе в помощь. Все переменные вызываются так {#имя_переменной}, а задаются так #define Имя_переменной Значение

Секция [Setup] – определяет предварительные настройки. Здесь можно изменить, например, путь компиляции, имя приложения или путь к иконке. Да что объяснять, взглянув и сам поймёшь.

Я же изменил только директорию установки DifualtDirName.

Для установки в Program Files, необходимы права администратора, мне это мешает. По сему я определил своё приложение в AppData.

DefaultDirName={userappdata}\{#MyAppName}

Также добавил строку, которая отменяет требование административных привилегий для установки программы.

PrivilegesRequired=none

[Languages] – языки на которых будет балакать программа установки.

[Tasks] – Задания, от пользователя. Допустим нужно поместить программу в автозапуск, или спросить создавать значок на рабочем столе или нет. Всё это описывается в этом разделе. Для примера, спросим у пользователя стоит ли поместить ярлык в автозагрузки для запуска приложения вместе с операционной системой.

Name: "AutoStart"; Description: "Автоматически запускать приложение при входе в Windows";  GroupDescription: "Атозапуск:"; Flags: unchecked

Name – Имя задания. Если флажок (в квадратике) поставлен, то он возвращает значение true. Используется в дальнейшем что бы привязать задание к определённым действиям.

Description – описание, будет отображаться на против флажка.

GroupDescription – Разделяет задания по группам.

Flags – Дополнительные флаги. Unchecked – галочка по умолчанию не ставится. Если не указать этот флаг, то галочка будет стоять.

Так будет выглядеть эта часть скрипта в инсталляторе:

it4you.su_Inno_setup_9

[Files] – собственно файлы самой программы, в примере один файл, но можно указать несколько, или всю папку целиком.

К примеру проект вырос и теперь есть папка с DLL.

Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyDll\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

Source – Источник файлов, в конце пути указываем звёздочку что бы сказать компилятору что нужно брать все файлы в директории.

DestDir – директория установки. Константа {app} – директория установки программы, можно изменить в разделе [setup]> DefualtDirName.

Flags – дополнительные флаги. Ignoreversion – не сравнивать версию файла с уже установленной, recursesubdirs – рекурсия, проваливаться во все папки и подпапки, сreateallsubdirs – создать все поддиректории.

[Icons] — создаёт иконки для приложения. Мне необходимо создать иконки на рабочем столе и в «Меню Пуск», для пользователя от имени которого запущена установка. Ну и не забуду про автозагрузку, если пользователь выберет это пункт. Для этого я буду использовать константы {userdesktop} – рабочий стол пользователя и {userprograms} – «Меню Пуск» > «Все программы».

 

Name: "{userprograms}\{#MyAppName}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{userprograms}\{#MyAppName}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{userprograms}\{#MyAppName}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: {app};
Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: {app}; Tasks: desktopicon
Name: "{userstartup}\{#MyAppName}"; Filename: {app}\{#MyAppExeName}; WorkingDir: {app}; Tasks: AutoStart

 

Name — Имя ярлыка. Все промежуточные папки создаются автоматически. Например, для создания ярлыка в «Меню Пуск» в отдельной папке с названием моей программы, я указал через константу #MyAppName — имя приложения. (Пуск/Все программы/MeMegaProgram/MeMegaProgram.exe).

Filename – путь к файлу на который ссылается ярлык.

WorkingDir— Рабочая папка. По умолчанию почему-то не прописывается, но если ваша программа использует дополнительные библиотеки или файлы настроек из рабочей директории, то без указания этого параметра программа запускаться, с созданного ярлыка, не будет!

Tasks – Помнишь раздел [Tasks] ? Так вот, там мы задавали флажок. Указав имя одного или нескольких параметров [Tasks], мы определяем, если параметр вернул true (флажок поставлен), то создать ярлык. Как понимаешь, логические выражения такие как «not», «or», тоже можно использовать. Например, если будет подобная конструкция Tasks: not startupicon, то ярлык создастся в том случае если галочка не будет стоять напротив выражения “Автоматически запускать приложение при входе в Windows”.

[Run] – запустить. Запустить можно что угодно, саму программу, стороннюю программу, ReadMe, URL и т.д. Внимание, чтобы переходить по URL адресу или открывать файлы формата не .exe, нужно ставить в параметре “Flags:” флаг shellexec.

К примеру ссылка на мой блог:

Filename: "http://it4you.su"; Description: "Посетить блог разработчика"; Flags:postinstall shellexec;

it4you.su_Inno_setup_10

Filename – путь к файлу или адрес URL

Description – наименование флажка

Flags – флаги.Флаг Postinstall— задать вопрос после установки. Если не ставить этот флаг, запуск произойдет, без ведома пользователя сразу после установки. Shellexec — открыть содержимое, URL, .txt, и т.д.

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

Спасибо за внимание. Если есть вопросы по Inno Setup, жду в комментариях.

 

P.S. Оцени статью и оставь комментарий, что бы помочь принять решения тратить ли на сей шедевр время другим читателям блога. Не упусти возможности поставить плюсик к карме.

[yasr_visitor_votes size=»medium»]

 

ТОП 10 лучших статей:

[yasr_top_ten_highest_rated]

 

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

3 мыслей про “Как создать годный инсталлятор

  • Данил

    Выбираю между WiX и InnoSetup. Статья понравилась, осталось найти что-то такое же простое и понятное про WiX )

     
  • Александр

    Премного благодарен.
    Кратко, четко, понятно.
    На inno-форуме порой приходится сотни страниц перелопатить, чтоб на элементарные вопросы ответы найти…