Показать полную графическую версию : [архив].: NSIS - все вопросы :.
kotkovets, я обычно в секции задаю значение переменной
выглядит примерно так
section "Покажите мне следующую страницу"
strcpy $R0 "1"
sectionend
ну и далее по предложенному выше сценарию
kotkovets
21-02-2011, 17:57
hb860, Можно и так, или через стек, назначать метку отмеченной секции
но мне на макросах, как то удобней, особенно в сложных скриптах.
На то и NSIS - вариантов реализации предостаточно.
Кто нибудь сталкивался с проблемой создания нестандартных диалогов (nsDialog) на нестандартном интерфейсе (Ultra ModernUI)
Такая вот бяка с фоном получается :(
http://s014.radikal.ru/i326/1102/8d/fa42828a49bet.jpg (http://radikal.ru/F/s014.radikal.ru/i326/1102/8d/fa42828a49be.png)
kotkovets
27-02-2011, 22:43
jackrv, Цвет выделения текста при открытии странички?
Вообще цвет контролов можно менять так:
SetCtlColors [хэндл контрола] [цвет текста] [цвет фона]
SetCtlColors $Text `0x0000FF` `0xFFFFFF`
цвет текста - синий | цвет фона - белый
Скорее всего ты меня не понял..
Светлый фон на котором контролы находятся он по идее должен быть таким же цветом как и весь мастер.
Т.е. нужно заменить #EAEBEC на #566978
Правда цвета на фоне форумного фона не очень видно %)
kotkovets
27-02-2011, 22:59
jackrv, Я все прекрасно понял, вот примерчик:
Function fnCustomInit
nsDialogs::Create 1044
Pop $Dialog
SetCtlColors $Dialog `0x0000FF` `0x00FF00`
${NSD_CreateLabel} 15u 5u 100u 10u "Это надпись"
Pop $Label
SetCtlColors $Label `0x0000FF` `0x00FF00`
${NSD_CreateText} 15u 20u 90% 15u "Здесь можно печатать..."
Pop $Text
SetCtlColors $Text `0x0000FF` `0xFFFFFF`
${NSD_CreateCheckBox} 15u 45u 100u 10u "Можно отметить флажком"
Pop $CheckBox
SetCtlColors $CheckBox `0x0000FF` `0x00FF00`
nsDialogs::Show
FunctionEnd
Светлый фон на котором контролы находятся он по идее должен быть таким же цветом как и весь мастер »
Это картинка фоновая - однозначно, с какой кстати фон своей странички ни с того - должен быть под фон картинки?
Вам нужно узнать общий фон картинки - в шеснадцатиричном виде и закрасить фон.
Это примерно по скрину - 0x566978
kotkovets, вы были правы.. Классно когда тебя понимают даже тогда когда ты сам запутался)
Вопрос второй, у меня есть кастомная страница и страница UMUI_PAGE_ABORT. Так вот если посреди инсталяции нажать отмену, то перед вызовом UMUI_PAGE_ABORT открывается та самая кастомная страница, что собственно говоря не есть желанным..
Где мог быть косяк?)
kotkovets
27-02-2011, 23:38
jackrv, Трудно сказать вслепую, скрипт приведите...
хотя я Ultra ModernUI не пользуюсь и без этого фейса позволяю себе творить почти любую чертовщину :biggrin:
Вот почти весь код (за исключением инклюдов..)
Правда, не думаю что он покажется вам легкочитаемым..
; Все это добро накалякал jackrv[jackrv.org.ua].
; Версия компилятора: NSIS-2.46[ANSI]
; Используются плагины:
; - UltraModernUI[NSISSheild]
; - DotNetVer.nsh
; - Inetc
; При редактировании первое на что обратите внимание, так это строка [19] Константа {PRODUCT_PKG_DIR}
; Важно указать дирекотрию с исходными файлами продукта
; Следующие константы желательно подстроить под свой проект
!define PRODUCT_NAME "Etach Server" ; Имя проекта
!define PRODUCT_VERSION "3.1.1" ; Текущая версия
!define PRODUCT_FILENAME "Atott.Chat.Server.Manage.exe" ; Имя исполняемого файла
!define PRODUCT_UNFILENAME "uninst.exe" ; Имя файла деинсталяции
!define PRODUCT_PUBLISHER "Etach Group" ; Компания
!define PRODUCT_WEB_SITE "http://etach.ru" ; Офф.Сайт
!define PRODUCT_ICOFILE "${NSISDIR}\project\EtachClient\Orange128.ico" ; Иконка установцика
!define PRODUCT_UNICOFILE "${NSISDIR}\project\EtachClient\Silver128.ico" ; Иконка деинсталятора
!define PRODUCT_PKG_DIR "D:\Applications\NSIS\project\EtachClient\source" ; Путь к проекту на ЖД
!define URLDownloads "http://etach.ru/Downloads/" ; Адрес папки загрузки
!define FileDotNet "dotNetFx40_Full_x86_x64.exe" ; Имя инсталятора .Net FrameWork 4.0
!define URLEtachClient "" ; Имя файла инсталятора клиента
!define URLEtachServer "" ; Имя файла инсталятора сервера
; Нижеследующие константы изменять не нужно
!define PRODUCT_DIR_REGKEY "Software\${PRODUCT_FILENAME}" ; Ветвь реестра с доп.данными инсталятора
!define PRODUCT_UNKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define /date NOW "%d.%m.%Y" ; Формируем сегодняшнюю дату
!define URLDotNet ${URLDownloads}${FileDotNet}
; Кое-какие переменные
Var Dialog
Var Label
Var Text
Var CheckBox
; --------------------------------------------------------------------------------------------------
; Установка компрессора
SetCompress force
SetCompressor /SOLID lzma
; --------------------------------------------------------------------------------------------------
; Основные настройки инсталятора
Name "${PRODUCT_NAME}" ; Имя програмы
Caption "$(LANG_CAPTION) ${PRODUCT_NAME} ${PRODUCT_VERSION}" ; Заголовок инсталятора
BrandingText "${PRODUCT_PUBLISHER}" ; Текст описания (на полоске, в низу)
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}_build-${NOW}.exe" ; Имя файла после компиляции
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" ; Директория установки по-умолчанию
ShowInstDetails hide ; Не отображать список копируемых файлов
ShowUninstDetails hide ; Не отображать список удаляемых файлов
; Производим подключение вспомагательных скриптов
!include "DotNetVer.nsh" ; Проверка установленного .Net
!include "UMUI.nsh" ; Подключаем стильный дизайн
!include "LogicLib.nsh" ; Подключаем разширеную логику
!include "nsDialogs.nsh" ; Подключаем дополнительный редактор окон
; !include "macro.nsi" ; Мои макросы
; Настройки интерфейса
; Общие настройки
!define MUI_ABORTWARNING ; Подтвержление при выходе
!define MUI_COMPONENTSPAGE_NODESC ; MUI без описания (большая область для компонентов)
!define UMUI_USE_INSTALLOPTIONSEX
!define UMUI_PARAMS_REGISTRY_ROOT HKCU ; Ветка реестра для записи доп.данных инсталятора
!define UMUI_PARAMS_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}" ; Путь в реестре для доп.данных
!define UMUI_INSTALLDIR_REGISTRY_VALUENAME "InstallPath" ; Имя переменной, хрянящей путь к инсталяции
!define UMUI_LANGUAGE_REGISTRY_VALUENAME "Language" ; Имя переменной, зранящей язык установки
!define UMUI_USE_ALTERNATE_PAGE
!define UMUI_SKIN "NSISShield"
; Установки иконок файлов
!define MUI_ICON "${PRODUCT_ICOFILE}" ; Иконка инсталятора
!define MUI_UNICON "${PRODUCT_UNICOFILE}" ; Иконка деинсталятора
; --------------------------------------------------------------------------------------------------
; Настройка страниц при установке
; Основные страницы
!insertmacro UMUI_PAGE_MULTILANGUAGE ; Страница выбора языка
; !insertmacro MUI_PAGE_LICENSE "$(License)" ; Страницв лицензии
!insertmacro MUI_PAGE_DIRECTORY ; Страница выбора директорий
Page custom fnCustomInit fnCustomDestroy
!insertmacro UMUI_PAGE_ADDITIONALTASKS addtasks_function
; Страница отображения сведений об установке
!define UMUI_CONFIRMPAGE_TEXTBOX confirm_function
!insertmacro UMUI_PAGE_CONFIRM ; Страница сведений утановки
!insertmacro MUI_PAGE_INSTFILES ; Страница выполнения скрипта
; Страница завершения установки
!define MUI_FINISHPAGE_NOAUTOCLOSE ; Не закрывать автоматичесски
; Чекбоксы на финишной странице, запуск программы и офф.сайт
!define MUI_FINISHPAGE_RUN RunProgram ; Путь к программе
!define MUI_FINISHPAGE_RUN_TEXT "$(LANG_FINISHRUN)" ; Текст на чекбоксе запуска
!define MUI_FINISHPAGE_RUN_CHECKED ; По-умолчанию выбрано
!define MUI_FINISHPAGE_LINK "$(LANG_FINISHURL)" ; Текст ссылки
!define MUI_FINISHPAGE_LINK_LOCATION "${PRODUCT_WEB_SITE}" ; Адрес офф.сайта
!insertmacro MUI_PAGE_FINISH ; Финишная страница
!insertmacro UMUI_PAGE_ABORT
; --------------------------------------------------------------------------------------------------
; Настройка деинсталятора
!insertmacro MUI_UNPAGE_INSTFILES ; Страница хода удаления
; --------------------------------------------------------------------------------------------------
; Настройка локализации
!insertmacro MUI_LANGUAGE "Russian" ; Подключаем Русс.яз.
!insertmacro MUI_LANGUAGE "English" ; Подключаем Англ.яз.
!insertmacro MUI_LANGUAGE "Ukrainian" ; Подключаем Укр.яз.
; Так-же подключаем файлы определений/переопределений языковых строк
!include "Language\ru.nsh"
!include "Language\en.nsh"
!include "Language\ua.nsh"
; --------------------------------------------------------------------------------------------------
; Макросы
!macro DotNetInstall
!insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DotNet
inetc::get /CAPTION "Загрузка .NET Framework 4.0" /CANCELTEXT "Отмена" /HEADER "Загрузка .Net Framework 4.0" /POPUP "${URLDotNet}" ${URLDotNet} "C:\dotnetfx.exe" /END
Pop $0
StrCmp $0 "OK" InstDotNet
Delete "C:\dotnetfx.exe"
Abort "Установка отменена."
InstDotNet:
ExecWait "C:\dotnetfx.exe"
Delete "C:\dotnetfx.exe"
!insertmacro UMUI_ADDITIONALTASKS_ENDIF
!macroend
; --------------------------------------------------------------------------------------------------
; Функция инициализации
Function .onInit
!insertmacro UMUI_MULTILANG_GET ; Выбор языка установки
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "login.ini"
; !insertmacro CheckDotNet ; Проверка версии .Net
FunctionEnd
; Функция старта деинсталяции
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(LANG_unOnInit)" IDYES +2
Abort
FunctionEnd
Function addtasks_function
${If} $R0 == ""
MessageBox MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON2 "Имя администратора будет admin$\nВы можете вернуться на предыдущую страницу и указать нужный вам логин!"
${EndIf}
!insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LABEL "$(LANG_ADDITIONAL_ICONS)"
!insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK DESKTOP 1 "$(LANG_DESKTOP_ICON)"
!insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK QUICK_LAUNCH 0 "$(LANG_QUICK_LAUNCH_ICON)"
!insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_EMPTYLINE
!insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LABEL "$(LANG_ADDITIONAL_DotNet)"
!insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK DotNet 0 "$(LANG_DotNet_ICON)"
FunctionEnd
; Функция отображения инфы об установке
Function confirm_function
StrCpy $R1 0
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(UMUI_TEXT_INSTCONFIRM_TEXTBOX_DESTINATION_LOCATION)"
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE " - $INSTDIR"
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE ""
!insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DESKTOP
StrCpy $R1 1
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(LANG_ADD_ICONS)"
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE " - $(LANG_ADD_ICONS_0)"
!insertmacro UMUI_ADDITIONALTASKS_ENDIF
!insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED QUICK_LAUNCH
${If} $R1 = 0
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(LANG_ADD_ICONS)"
StrCpy $R1 1
${EndIf}
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE " - $(LANG_ADD_ICONS_1)"
!insertmacro UMUI_ADDITIONALTASKS_ENDIF
${If} $R1 = 1
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE ""
${EndIf}
!insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DotNet
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(LANG_ADD_PRGM)"
${If} ${HasDotNet4.0}
MessageBox MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON2 "$(LANG_CheckDotNet1)"
${EndIf}
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE " - .Net Framework 4.0"
Goto End
!insertmacro UMUI_ADDITIONALTASKS_ENDIF
${If} ${HasDotNet4.0}
${Else}
MessageBox MB_ICONINFORMATION|MB_OK|MB_DEFBUTTON2 "$(LANG_CheckDotNet0)"
${EndIf}
${If} $R0 == ""
StrCpy $R0 "admin"
${EndIf}
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "Админпанель"
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE " - Логин суперпользователя: $R0"
${If} $R9 = 1
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE " - Будет создан файл run.bat"
${EndIf}
!insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE ""
End:
FunctionEnd
Function RunProgram
Exec "$INSTDIR\${PRODUCT_FILENAME} admin:$R0"
FunctionEnd
Function fnCustomInit
nsDialogs::Create 1018
Pop $Dialog
SetCtlColors $Dialog "0x000000" "0x566978"
${NSD_CreateLabel} 5u 5u 100% 30u "Перед установкой вам необходимо указать логин будущего суперадминистратора.$\nЭтот пользователь будет иметь наивысшиее права, имейте это в виду!"
Pop $Label
SetCtlColors $Label "0xB4D3EA" "0x566978"
${NSD_CreateLabel} 25u 40u 150u 10u "Логин будущего суперадминистратора: "
Pop $Label
SetCtlColors $Label "0xB4D3EA" "0x566978"
${NSD_CreateText} 180u 38u 100u 15u ""
Pop $Text
SetCtlColors $Text "0xFFFFFF" "0x566978"
${NSD_CreateLabel} 5u 60u 100% 20u "По необходимости можно создать bat-файл$\nВ него будут занесены необходимые параметры для запуска сервера"
Pop $Label
SetCtlColors $Label "0xB4D3EA" "0x566978"
${NSD_CreateCheckBox} 10u 80u 100u 10u "Создать bat-файл"
Pop $CheckBox
SetCtlColors $CheckBox "0xB4D3EA" "0x566978"
${NSD_CreateLabel} 5u 100u 120% 30u "Важно!$\n Сервер изначально не настроен, т.е. не содержит никаких данных абсолютно!$\n Поэтому при первом входе вам нужно зарегистрироваться!"
Pop $Label
SetCtlColors $Label "0xFF9900" "0x566978"
nsDialogs::Show
FunctionEnd
Function fnCustomDestroy
${NSD_GetText} $Text $R0
${NSD_GetState} $CheckBox $R9
FunctionEnd
Function WriteToFile
Exch $0 ;file to write to
Exch
Exch $1 ;text to write
FileOpen $0 $0 a #open file
FileSeek $0 0 END #go to end
FileWrite $0 $1 #write to file
FileClose $0
Pop $1
Pop $0
FunctionEnd
!macro WriteToFile String File
Push "${String}"
Push "${File}"
Call WriteToFile
!macroend
!define WriteToFile "!insertmacro WriteToFile"
; --------------------------------------------------------------------------------------------------
; Секции установки (компоненты)
Section "!$(LANG_SECETACH)" SEC01
!insertmacro DotNetInstall
SetOutPath "$INSTDIR" ; Меняем паку распаковки
File "source\Atott.Core.dll"
File "source\Atott.Chat.Server.Manage.exe.config"
File "source\Atott.Chat.Server.Manage.exe"
File "source\Atott.Chat.Server.Core.dll"
File "source\Atott.Chat.Core.dll"
File "source\Atott.Chat.Client.Plugin.dll"
File "source\Atott.Chat.Client.Controls.dll"
WriteUninstaller "$INSTDIR\${PRODUCT_UNFILENAME}" ; Создаем деинсталятор
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" ; Создаем ярлык офф.сайта
; Ярлык на рабочем столе
!insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DESKTOP
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_FILENAME}" "admin:$R0" "$INSTDIR\${PRODUCT_UNFILENAME}" 0 SW_SHOWNORMAL ALT|CONTROL|SHIFT|F4 "$(LANG_ShRUN) $(^Name)"
!insertmacro UMUI_ADDITIONALTASKS_ENDIF
!insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED QUICK_LAUNCH
CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_FILENAME}" "admin:$R0" "$INSTDIR\${PRODUCT_UNFILENAME}" 0 SW_SHOWNORMAL ALT|CONTROL|SHIFT|F4 "$(LANG_ShRUN) $(^Name)"
!insertmacro UMUI_ADDITIONALTASKS_ENDIF
; Создание файла Run.bat
${If} $R9 == 1
${WriteToFile} "Atott.Chat.Server.Manage.exe admin:$R0" "$INSTDIR\Run.bat"
${EndIf}
; Регистрация деинсталятора
WriteRegStr HKCU "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\${PRODUCT_FILENAME}"
WriteRegStr HKLM "${PRODUCT_UNKEY}" "DisplayName" "$(^Name)"
WriteRegStr HKLM "${PRODUCT_UNKEY}" "UninstallString" "$INSTDIR\${PRODUCT_UNFILENAME}"
WriteRegStr HKLM "${PRODUCT_UNKEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_FILENAME}"
WriteRegStr HKLM "${PRODUCT_UNKEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKLM "${PRODUCT_UNKEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr HKLM "${PRODUCT_UNKEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
; --------------------------------------------------------------------------------------------------
; Секции деинсталятора
Section Uninstall
Delete "$INSTDIR\*.*"
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
RMDir /r "$INSTDIR"
DeleteRegKey HKLM "${PRODUCT_UNKEY}"
DeleteRegKey HKCU "${PRODUCT_DIR_REGKEY}"
SectionEnd
; --------------------------------------------------------------------------------------------------
; Информация о файле (о том что после компиляции появляется)
VIProductVersion ${PRODUCT_VERSION}.0
VIAddVersionKey /LANG=${LANG_RUSSIAN} ProductName "${PRODUCT_NAME}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} ProductVersion "${PRODUCT_VERSION}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} CompanyName "${PRODUCT_PUBLISHER}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} CompanyWebsite "${PRODUCT_WEB_SITE}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} FileVersion "${PRODUCT_VERSION}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} FileDescription "${PRODUCT_PUBLISHER}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} LegalCopyright "Copyright © ${PRODUCT_PUBLISHER}"
VIAddVersionKey /LANG=${LANG_RUSSIAN} Comments "Windows XP, Vista, Win7 $\t .Net Framework 4.0"
VIAddVersionKey /LANG=${LANG_RUSSIAN} OriginalFilename "${PRODUCT_FILENAME}"
kotkovets
28-02-2011, 00:14
Хм.. чтобы инсценировать ситуацию, нужен Ultra ModernUI, не качал.
Хотя вроде бы все верно, видно не совсем дружат совместно Ultra ModernUI и стандартный MUI.
!define MUI_ABORTWARNING - cтандарт MUI, по идее должно быть - !define UMUI_ABORTWARNING (когда нажимается кнопка отмена, вызывается мессага)
В таких случаях рекомендую создать простой отладочный скриптик со своей страничкой и последовательно добавлять странички, функции - до появления глюка и отслеживать значение используемых переменных в разные моменты, через DetailPrint или MessageBox.
Убрал !insertmacro UMUI_PAGE_ABORT проблема иссякла, не сильно нужно то окошко, поэтому как временный выход из ситуации..
Kolobaxa
04-03-2011, 08:42
Здравствуйте.
Дело в том что делаю инсталлер FlylinkDC++ для своего провайдера.
Не могу понять как например в отдельном окне сделать окна типа "ввод никнейма", "ввод IP адресса" и .т.п. и связать их с "DCPlusPlus.xml" т.е. файлом настроек.
Вообще хотел бы сделать много окон с пояснениями т.к. многим пользователям и не нужно лазить в настройках что-то где-то устанавливать, искать и т.п. Сразу все ввел и довольный пользуешься =)
Примерный билд инстала:
1 Страница. приветствие (в скрипте уже реализована)
2 Страница. выбор директории (в скрипте уже реализована)
3 Страница. Ввод никнейма Ввод мыла Ввод IP адресса
4 Страница. Настройка избранных хабов Название Адресс Никнейм Пароль Способ соединения
5 Страница. Шара т.е. вывод полного дерева и выбор пользователю что он хочет расшарить
6 Страница. Директория для скачивания
7 Страница. Вывод соглашения с правилами поведения на хабе и наказания за несоблюдение
Вот как то так =)
Буду очень благодарен за разъяснения хотя бы по пункту 3. И по завязке его с файлом настроек. дальше думаю по аналогии с остальным разберусь =)
kotkovets
04-03-2011, 13:15
разъяснения хотя бы по пункту 3. »
Создание своих страниц - в шапке, и куча примеров на предыдущих страничках темы.
Парсинг XML - пример в шапке.
В помощь плагины - http://nsis.sourceforge.net/Category:Plugins и по своим страничкам:
http://nsis.sourceforge.net/Category:NsDialogs_Examples
и еще в довесок:
Справочник по NSIS (http://forum.oszone.net/showpost.php?p=1569008)
Kolobaxa
04-03-2011, 14:41
Цитата Kolobaxa:
разъяснения хотя бы по пункту 3. »
Создание своих страниц - в шапке, и куча примеров на предыдущих страничках темы.
Парсинг XML - пример в шапке.
В помощь плагины - http://nsis.sourceforge.net/Category:Plugins и по своим страничкам:
http://nsis.sourceforge.net/Category:NsDialogs_Examples
и еще в довесок:
Справочник по NSIS »
Ок, спасибо. Буду разбираться =)
Необходимо покрасить текст на странице приветствия в белый цвет.
Сделал так:
!define MUI_PAGE_CUSTOMFUNCTION_SHOW WelcomePageSetupShow
!insertmacro MUI_PAGE_WELCOME
Function WelcomePageSetupShow
FindWindow $1 "#32770" "" $HWNDPARENT
GetDlgItem $2 $1 1201
SetCtlColors $2 '0xFFFFFF' transparent
GetDlgItem $2 $1 1202
SetCtlColors $2 '0xFFFFFF' transparent
FunctionEnd
Текст действительно стал белым, но если со страницы лицензионного соглашения вернуться обратно на страницу приветствия - текст снова черный. Как от этого избавится?
И еще вопрос, как узнать ID элементов диалогов (1201, 1202)? Я их нашел совершенно случайно в примерах...
kotkovets
08-03-2011, 13:23
zmeykas,
Я использую только MUI2.nsh, где странички приветствия/завершения рисуются через nsDialogs.
А значит, что уже контролы уже сформированы и все хэндлы контролов уже в "кармане"
Contrib\Modern UI 2\Pages\Welcome.nsh - в этом заголовочном файле хранится все, что нужно, для странички приветствия.
!include "MUI2.nsh"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
OutFile "test.exe"
ShowInstDetails show
!define MUI_PAGE_CUSTOMFUNCTION_SHOW WelcomePageShow
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\COPYING"
!insertmacro MUI_LANGUAGE Russian
/*
$mui.WelcomePage ;HWND странички риветствия
$mui.WelcomePage.Title ;HWND контрола титульного текста
$mui.WelcomePage.Text ;HWND контрола текста под титулом
*/
Function WelcomePageShow
SetCtlColors $mui.WelcomePage "" `0xFFD993`
CreateFont $1 "Verdana" "14" "700" /ITALIC ; создаем шрифт
SendMessage $mui.WelcomePage.Title ${WM_SETFONT} $1 1 ; применяем шрифт к титулу
SetCtlColors $mui.WelcomePage.Title `0xC0C0C0` `0xFFD993`
SetCtlColors $mui.WelcomePage.Text `0x8080FF` `0xFFD993`
FunctionEnd
Section Main
SectionEnd
wolkow70
09-03-2011, 12:22
Товарищи, помогите конвертнуть в NSIS значения реестра:
[HKEY_CURRENT_USER\Software\Classes\Directory\shell\treesize_fs]
@="TreeSize Professional &File Search"
[HKEY_CURRENT_USER\Software\Classes\Directory\shell\treesize_fs\command]
@="\"E:\\Program Files\\JAM Software\\TreeSize Professional\\TreeSize.exe\" /SEARCH /TABS 5 \"%1\""
[HKEY_CURRENT_USER\Software\Classes\Folder\shell\treesize5]
@="TreeSize Professional &5"
[HKEY_CURRENT_USER\Software\Classes\Folder\shell\treesize5\command]
@="\"E:\\Program Files\\JAM Software\\TreeSize Professional\\TreeSize.exe\" /CONTEXT \"%1\""
Reg2Nsis не помогает. Выдает такое:
WriteRegStr HKEY_CURRENT_USER "Software\Classes\Directory\shell\treesize_fs" "" "TreeSize Professional &File Search"
WriteRegStr HKEY_CURRENT_USER "Software\Classes\Directory\shell\treesize_fs\command" "" "\$\"$PROGRAMFILES\JAM Software\TreeSize Professional\TreeSize.exe\$\" /SEARCH /TABS 5 \$\"%1\$\""
WriteRegStr HKEY_CURRENT_USER "Software\Classes\Folder\shell\treesize5" "" "TreeSize Professional &5"
WriteRegStr HKEY_CURRENT_USER "Software\Classes\Folder\shell\treesize5\command" "" "\$\"$PROGRAMFILES\JAM Software\TreeSize Professional\TreeSize.exe\$\" /CONTEXT \$\"%1\$\""
Что то с путями путает. Короче там в реестре лишняя / получается перед буквой диска. В этом видимо проблема... Пункты контекстного меню не запускают программу.
kotkovets
09-03-2011, 15:26
Товарищи, помогите конвертнуть в NSIS значения реестра: »
Из справки:
WriteRegStr [root_key] [subkey] [key_name] [value]
Записывает строку value в параметр key_name раздела subkey ветки root_key
WriteRegStr HKCU "Software\Classes\Directory\shell\treesize_fs" "" "TreeSize Professional &File Search"
WriteRegStr HKCU "Software\Classes\Directory\shell\treesize_fs\command" "" '"$PROGRAMFILES\JAM Software\TreeSize Professional\TreeSize.exe" /SEARCH /TABS 5 "%1"'
WriteRegStr HKCU "Software\Classes\Folder\shell\treesize5" "" "TreeSize Professional &5"
WriteRegStr HKCU "Software\Classes\Folder\shell\treesize5\command" "" '"$PROGRAMFILES\JAM Software\TreeSize Professional\TreeSize.exe" /CONTEXT "%1"'
Следующая проблема. Как покрасить текст в чекбоксе на FinishPage?
Вот так не выходит:
Function FinishPageSetupShow
SetCtlColors $mui.FinishPage.Title `0xFFFFFF` transparent
SetCtlColors $mui.FinishPage.Text `0xFFFFFF` transparent
SetCtlColors $mui.FinishPage.Run `0xFFFFFF` transparent
FunctionEnd
Текст не красится вообще. А фон вместо прозрачного становится черным. Если transparent заменить на `0xCCCCCC` к примеру, то фон станет серым. Но вопрос именно в цвете текста.
kotkovets
09-03-2011, 15:58
Как покрасить текст в чекбоксе »
Не получится, рисуется через API и зависит о темы оформления WINDOWS
А вот при классической теме WINDOWS - раскрашивается.
Это то же касается в частности и GroupBox
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC