PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 [49] 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

hb860
21-02-2011, 16:32
kotkovets, я обычно в секции задаю значение переменной
выглядит примерно так

section "Покажите мне следующую страницу"
strcpy $R0 "1"
sectionend
ну и далее по предложенному выше сценарию

kotkovets
21-02-2011, 17:57
hb860, Можно и так, или через стек, назначать метку отмеченной секции
но мне на макросах, как то удобней, особенно в сложных скриптах.
На то и NSIS - вариантов реализации предостаточно.

jackrv
27-02-2011, 21:31
Кто нибудь сталкивался с проблемой создания нестандартных диалогов (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`
цвет текста - синий | цвет фона - белый

jackrv
27-02-2011, 22:54
Скорее всего ты меня не понял..
Светлый фон на котором контролы находятся он по идее должен быть таким же цветом как и весь мастер.
Т.е. нужно заменить #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

jackrv
27-02-2011, 23:29
kotkovets, вы были правы.. Классно когда тебя понимают даже тогда когда ты сам запутался)
Вопрос второй, у меня есть кастомная страница и страница UMUI_PAGE_ABORT. Так вот если посреди инсталяции нажать отмену, то перед вызовом UMUI_PAGE_ABORT открывается та самая кастомная страница, что собственно говоря не есть желанным..
Где мог быть косяк?)

kotkovets
27-02-2011, 23:38
jackrv, Трудно сказать вслепую, скрипт приведите...
хотя я Ultra ModernUI не пользуюсь и без этого фейса позволяю себе творить почти любую чертовщину :biggrin:

jackrv
27-02-2011, 23:45
Вот почти весь код (за исключением инклюдов..)
Правда, не думаю что он покажется вам легкочитаемым..
; Все это добро накалякал 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.

jackrv
28-02-2011, 00:28
Убрал !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 »
Ок, спасибо. Буду разбираться =)

zmeykas
08-03-2011, 11:11
Необходимо покрасить текст на странице приветствия в белый цвет.

Сделал так:

!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"'

zmeykas
09-03-2011, 15:46
Следующая проблема. Как покрасить текст в чекбоксе на 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