Цитата NoName01.cpp:
Люди, а можно на nsis написать обработчик нажатий клавиш? »
|
NSIS пора наверно С/С++ вытеснять?
Не пробовал, но
в самом NSIS вы такого не напишите, можно написать библиотеку на С/С++ и вызывать её, но мне кажется маловероятным использование данной библиотеки, например, на странице выбора компонентов....
Показываем картинки на странице выбора компонентов при наведении курсора мыши на компоненты
Необходимо внести изменения в файл интерфейса (
\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
Ну вообщем тестируйте сами, всю инфу которая нужна была - я выложил
И не смейте потом где-нибудь писать, что вы сами реализовали данную возможность!