» Wansis: Украшаем инсталлятор

K.A.V.
www.oszone.net
22.02.2010
Автор: sawe
Последнее обновление: 01.09.2011


Плагин для NSIS, который позволяет надевать скины (шкурки), на ваши инсталляторы.
Это пожалуй самый простой способ, как приукрасить ваш инсталлятор. При этом потребление ресурсов минимально,
сам плагин имеет размер 44 кб, а изображения скинов в сумме не более 60 кб.
Единственное ограничение, связано с использованием плагинов, если они поверх основного окна создают своё дочернее окно,
которое может конфликтовать с плагином wansis - относится к страничке выбора папки в меню Пуск
Если использовать nsDialogs или интерфейс MUI2, можно сделать свою более красивую страницу или имитировать стандартную.

Скриншоты готовых инсталляторов


Скачать плагин
После установки плагина в папке NSIS вы найдете следующее:
Docs\Wansis                   -папка с описанием возможностей
Contrib\Graphics\wansis\skins -здесь собраны скины
Examples\Wansis               -в этой папке множество примеров
Плагин добавляет две новые функции в инсталляторе:
1. Возможность задавать уровень прозрачности, если кликнуть правой клавишей мыши в верхнем левом углу,
    в выпадающем системном меню кликните пункт - Opacity

Посмотреть


2. Если любая сторона инсталлятора будет приближена к любому краю окна монитора на расстояние менее 10 пикселов,
    сработает эффект прилипания к этой части экрана.

Чтобы задействовать скины, обязательно включите макрос wansis.nsh  в тело скрипта.
!include "wansis.nsh"
Чтобы использовать рисунки скина, их надо извлечь во временный каталог,
В функции .onInit используйте макрос ${INCLUDESKIN}
Скин состоит из двух файлов изображения, к примеру:
nsis_gen.bmp
nsis_genex.bmp
nsis - это название скина, именно с названием скина будем оперировать.
Не следует изменять вторую часть имени файла: gen.bmp и genex.bmp
Эти имена использует макрос  ${INCLUDESKIN} Вам нужно всего лишь передать имя скина:
!include wansis.nsh

Function .onInit
   InitPluginsDir # иницилизируем рабочую папку плагинов
   ${INCLUDESKIN} steel # имя скина
FunctionEnd
Если у вас есть скин, который находится не в папке с вашим скриптом, то определяем путь к скину:
# !define INCLUDESKIN_PATH "путь к папке с скином"
!define INCLUDESKIN_PATH "${NSISDIR}\Contrib\Graphics\wansis\skins"
Чтобы задействовать скины, обязательно включите макрос wansis.nsh  в тело скрипта.
!include "wansis.nsh"
Чтобы использовать рисунки скина, их надо извлечь во временный каталог,
В функции .onInit используйте макрос ${INCLUDESKIN}
Скин состоит из двух файлов изображения, к примеру:
nsis_gen.bmp
nsis_genex.bmp
nsis - это название скина, именно с названием скина будем оперировать.
Не следует изменять вторую часть имени файла: gen.bmp и genex.bmp
Эти имена использует макрос  ${INCLUDESKIN} Вам нужно всего лишь передать имя скина:
!include wansis.nsh

Function .onInit
   InitPluginsDir # иницилизируем рабочую папку плагинов
   ${INCLUDESKIN} steel # имя скина
FunctionEnd
Если у вас есть скин, который находится не в папке с вашим скриптом, то определяем путь к скину:
# !define INCLUDESKIN_PATH "путь к папке с скином"
!define INCLUDESKIN_PATH "${NSISDIR}\Contrib\Graphics\wansis\skins"
Не используйте команду HideWindow в скриптах, так как плагин создаёт
своё окно поверх основного, вследствии чего, окно инсталлятора не будет скрыто, и на экране останется
пустое белое окно, по периметру которого, будет видна цветная рамка шириной примерно 10 пикселей.

Для интерфейса MUI подключаем скин таким образом:
!include "MUI2.nsh"
!include "wansis.nsh"

!define INCLUDESKIN_PATH "${NSISDIR}\Contrib\Graphics\wansis\skins"

!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install-nsis.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp"

# странички инсталлятора
!define MUI_CUSTOMFUNCTION_GUIINIT MUIGUIInit
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

# странички деинсталлятора
!define MUI_CUSTOMFUNCTION_UNGUIINIT un.MUIGUIInit
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "Russian"

OutFile "wansis.exe"
ShowInstDetails show
InstallDir "C:\wansis"
Name "WANSIS"
Caption "WANSIS"

# обязательно отключаем стиль после опр. страничек!!!
XPstyle off

Function .onInit
   InitPluginsDir
   ${INCLUDESKIN} nsis
FunctionEnd
Function MUIGUIInit
   ${SKINIT} nsis  # задействуем скин в инсталляторе
   Pop $0
   StrCmp $0 success +2
   MessageBox MB_ICONSTOP|MB_OK "Скин не найден!" IDOK
FunctionEnd
Function .onGUIEnd
   ${UNSKINIT} # выгружаем скин в инсталляторе
FunctionEnd

Section "WANSIS плагин"
   SetOutPath "$INSTDIR"
   WriteUninstaller "$INSTDIR\uninstall.exe"
SectionEnd

Section Uninstall
   Delete "$INSTDIR\uninstall.exe"
SectionEnd

Function un.onInit
   InitPluginsDir
   ${INCLUDESKIN} nsis
FunctionEnd
Function un.MUIGUIInit
   ${SKINIT} nsis # задействуем скин в деинсталляторе
   Pop $0
   StrCmp $0 success +2
   MessageBox MB_ICONSTOP|MB_OK "Скин не найден!" IDOK
FunctionEnd
Function un.onGUIEnd
   ${UNSKINIT} # выгружаем скин в деинсталляторе
FunctionEnd

Тонкие настройки плагина

Спецификация скина

Редактирование скина без HEX редактора