Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
zaguzin
7 лет назад

Разработка инсталляторов. Урок 18. Inno Setup: Изменение оформления установщика с использованием скинов.

Добрый вечер всем моим подписчикам и читателям. Сегодня мы рассмотрим вопрос изменения оформления вышего установочного пакета в Innо Setup. В данный момент сушествут достаточно много способов для решения этого вопроса, для начала мы расссмотрим вариант применения скинов с помощью ISSkin.

Данный пакет является бесплатной версией Codejock’s Skin Framework  и позволяет добавлять и редактировать кастомные скины в Inno Setup. Скачать программу можно тут.  Русификатор для SkinBuilder (заменить файл в папке с программой) можно взять тут.

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

В папке Styles находятся стили в формате .cjstyles, которые уже вполне можно добавлять в установщик. Скины для программы можно поискать также и в сети.

В комплекте всего три темы оформления. Можно запустить программу SkinBuilder для просмотра скина, редактирования, эеспорта и импорта.

Давайте для примера интегрируем в наш проект одну из стандартных тем оформления. 

Для этого копируем файлы в папку с проектом из папки ISSkin: Библиотеку ISSkin.dll и файл темы (например, Vista.cjstyles) из папки Styles. Если бы мы использовали Юникод версию Inno Setup, то потребовалось бы копировать ISSkinU.dll вместо ISSkin.dll

Открываем в Inno Setup наш прошлый проект и переходим в секцию [Files]. Прописываем туда нашу библиотеку ISSkin.dll и файл темы.

Source: "D:\Repack\Program\ISSkin.dll"; DestDir: {tmp}; Flags: dontcopy

Source: "D:\Repack\Program\Vista.cjstyles"; DestDir: {tmp}; Flags: dontcopy

В программе:

Тут используется папка назначения {tmp} (То есть временная) и флаг dontcopy. Он означает, что копировать файл на компьютер пользователя не требуется. Обычно он используется для извлечения файлов, используемых в секции [Code] и извлекающихся с помощью процедуры ExtractTemporaryFile. (Извлечение временных файлов)

Теперь создаём секцию [Code] в конце скрипта. Пишем:

procedure LoadSkin(lpszPath: String; lpszIniFileName: String);

external 'LoadSkin@files:isskin.dll stdcall';

То есть импортируем API функции загрузки скина.

procedure UnloadSkin();

external 'UnloadSkin@files:isskin.dll stdcall';

А тут уже выгрузка

function ShowWindow(hWnd: Integer; uType: Integer): Integer;

external 'ShowWindow@user32.dll stdcall';

Тут уже идёт фукнция ShowWindow Windows API из User32.dll.

function InitializeSetup(): Boolean;

begin

  ExtractTemporaryFile('Vista.cjstyles');

  LoadSkin(ExpandConstant('{tmp}\Vista.cjstyles'), '');

  Result := True;

end;

Добавили функцию инициализации инсталлятора (InitializeSetup()), распаковываем и вызываем загрузку нашего стиля Vista.cjstyles.

procedure DeinitializeSetup();

begin

  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);

  Sleep(110);

  UnloadSkin();

end;

Выгружаем скин до того, как инсталлятор закроется с помощью функции DeinitializeSetup()

В программе это всё выглядит следующим образом:

После сборки проекта и запуска установщика:

Сравните со стандартным стилем из прошлых уроков:

Так что всё работает.

Существует возможность импорта файла темы для WindowsXP в формате .msstyles. Их полно на сайте deviantart.com и много где ещё.

К примеру, я взял вот эту тему Tiger в стиле MacOS. Скачиваем тему и распаковываем. Открываем программу SkinBuilder из папки ISSkin и выбираем импорт. Указываем путь к файлу с расширением .msstyles из только что скачанного архива.

Как видим, изменения есть. Экспортируем с расширением cjstyles (Я назвал файл Tiger.cjstyles) в папку с проектом установщика или ещё куда.

Меняем в скрипте Vista на Tiger.

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

Совсем другое дело.

Одно время активно развивался проект Inno Ultra. Данный проект содержал различные инстурменты для облегчения разработки установочных пакетов на базе Inno Setup. К сожалению, долгое время проект не поддерживается и официальный сайт недоступен. Но его вы можете без труда найти в сети. Кроме собственно инструментов, он содержал и сборник тем оформления. Для удобства я выдернул оттуда папку с темами и выложил его сюда. Что там есть, вы можете узнать на скриншоте ниже.

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

683
94.575 GOLOS
На Golos с February 2017
Комментарии (1)
Сортировать по:
Сначала старые