» Показываем картинки на странице выбора компонентов при наведении курсора мыши на компоненты

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

Первое, что нам необходимо сделать, это внести изменения в файл интерфейса, если вы не прописывали путь к своему интерфейсу, то редактировать необходимо файл по пути \Program Files\NSIS\Contrib\UIs\modern.exe
Открываем данный файл с помощью программы ResHacker, переходим в диалог 105
Создаём элемент "BITMAP", устанавливаем ему идентификатор (поле ID), например 9999

Придётся подгонять элемент, если добавлять элемент в диалог 104 (где и есть выбор компонентов), то при компиляции вы получите сообщение об ошибке

На этом редактирование файла интерфейса закончено (при условии, что вы правильно подогнали расположение элемента), сохраняем изменения и закрываем ResHacker

Открываем файл \Program Files\NSIS\Contrib\Modern UI\System.nsh (можно скопировать данный файл в каталог с вашим скриптом и редактировать его, чтобы не распространять изменения на ваши последующие скрипты, НО при этом, необходимо заменить строку !include "MUI.nsh" в вашем скрипте на !include "System.nsh"), ищем в данном файле строку

!insertmacro MUI_DESCRIPTION_BEGIN

После неё, вставляем код
StrCmp $0 ${section1} 0 +2
SetBrandingImage /IMGID=9999 "$exedir\MODERNUI\Addons\Images\SEC57.bmp"
StrCmp $0 ${section2} 0 +2
SetBrandingImage /IMGID=9999 "$exedir\MODERNUI\Addons\Images\SEC66.bmp"
StrCmp $0 ${section3} 0 +2
SetBrandingImage /IMGID=9999 "$exedir\MODERNUI\Addons\Images\SEC69.bmp"
StrCmp $0 ${section4} 0 +2
SetBrandingImage /IMGID=9999 "$exedir\MODERNUI\Addons\Images\SEC75.bmp"

В данном коде:
9999 - идентификатор добавленного нами элемента
sectionX - идентификаторы секций
Ну а пути к файлам прописываем полные...
Да кстати, только BMP файлы, и все изображения должны быть одного разрешения, иначе получите глюки

Находим строчки, где прописаны какие странички в вашем инсталляторе показывать (в вашем скрипте)

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_COMPONENTS
page custom MyCustom
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

Строчка, выделенная красным цветом обязательна! Если вы её не добавите, то элемент с изображением потом отобразится на следующих страничках
Ну и последнее, добавляем функцию, которая и скрывает этот элемент (в вашем скрипте)

Function MyCustom
!include WinMessages.nsh
GetDlgItem $0 $HWNDPARENT 9999
ShowWindow $0 ${SW_HIDE}
FunctionEnd