Показать полную графическую версию : [архив].: NSIS - все вопросы :.
Кастом страница. Пользователь вводит данные, нажимает далее. Инстолятор проверяет данные и, если они не верны, пишет что "что-то там неправильно" и заставляет ещё раз заполнять форму. Вопрос. »
Я бы посоветовал делать проверку в режиме реального времени, а не после перехода на другую функцию. Я так понимаю что пользователь вводит данные в textbox, так вот можно проверять сразу после ввода пользователем текста.
Page custom fmPageModuleInstallCreate fmPageModuleInstallDestroy
Function fmPageModuleInstallCreate
; создаем все необходимые контролы
...
; проверяем изменения
${NSD_OnChange} $Textbox OnChange_Textbox
FunctionEnd
Function OnChange_Textbox
; проверка правильности заполнения
${If} ${FileExists} "$GModulesDir\Sys.bpl"
MessageBox MB_OK|MB_ICONEXCLAMATION "Что-то там неправильно"
;очищаем поле ввода
${NSD_SetText} $Textbox ""
${EndIf}
FunctionEnd
profcom, не только textedit. Есть ещё много контролов, которые надо проверить. Проверять в рантайме каждый контрол на нескольких страницах достаточно накладно.
Спасибо, что откликнулись.
profcom, не только textedit. Есть ещё много контролов, которые надо проверить. Проверять в рантайме каждый контрол на нескольких страницах достаточно накладно.
Спасибо, что откликнулись. »
Ну хотя бы решение есть пусть и много контролов но все можно проверить. Есть конечно и вариант сделать как вы хотите. Вкратце задумка такая на станице fmPageModuleInstallDestroy выполнить проверку как вы хотите и передать в переменную пройдена проверка или нет. А на следующей странице послать команду нажать назад, что автоматически восстановит нам станицу которую вы хотели.
Я пробовал сделать в рантайме. Говорю - накладно. Если не будет варианта другого оставлю.
Второй вариант тоже не плох, но я не знаю какая страница будет следующей... шесть вариантов... и, по-моему, это не очевидно. Следующий разработчик после меня не разберёт, что я имел ввиду.
kotkovets
26-11-2012, 22:59
Кастом страница. Пользователь вводит данные, нажимает далее. Инстолятор проверяет данные и, если они не верны, пишет что "что-то там неправильно" и заставляет ещё раз заполнять форму. Вопрос. »
В функции fmPageModuleInstallDestroy, или на других любых кастомных страничек..
если не верно введенные параметры делаем прерывание одной инструкцией:
Abort
и все.. никаких извращений..
kotkovets, когда будите обновлять справочник? Могу написать статейку, где подробно опишу, как делать плагины с помощью Delphi.
Krinkels
27-11-2012, 11:57
shut
ИМХО не имеет смысла. В сети куча сорцов. Разбирай не хочу. А написание плагина зависит только от желания программиста
Krinkels, разные ситуации бывают. Например, моему шефу приспичило окно для ввода пароля сделать достаточно креативным... похожего не нашёл и пришлось написать плагин.
написание плагина зависит только от желания программиста »
Хотелось бы , чтобы и пожелания пользователей учитывались... :) Полезных плагинов действительно много, но часть из них устарела, а ещё больше плагинов, могущих расширить возможности NSIS и облегчить "кодописание" - ещё вообще не написано, и будет ли ... Посмотрите тему, оч. часто для разных ситуаций звучит фраза - "Тут надо писать отдельный плагин" :) Потому что пока в природе нет подходящего.
Krinkels
27-11-2012, 13:15
shut
Бывает и такое. Но как по мне так это лишние сложности. Проще все это сделать на инно, там и инсталятор можно оформить по вкусу, и ввод пароля сделать более креативным. Но NSIS я люблю за отсутствие интерпретатора, и за малый вес конечного продукта
kotkovets, когда будите обновлять справочник? Могу написать статейку, где подробно опишу, как делать плагины с помощью Delphi. »
То же готов помочь, например перевод описания плагина nsis list готов добавить.
kotkovets
27-11-2012, 21:27
Посмотрите тему, оч. часто для разных ситуаций звучит фраза - "Тут надо писать отдельный плагин" »
верно.. но писать плаг не так то просто..
Могу написать статейку, где подробно опишу, как делать плагины с помощью Delphi. »
То же готов помочь, например перевод описания плагина nsis list готов добавить. »
я только за..
но главное, чтобы было написано грамотно и понятно среднестатическому пользователю.
присылайте в личку..
если контент нормальный - будем добавлять.
Вот так:
Код:
ReadRegStr $0 HKLM "Software\MyProgram" "SetupPath"
IfErrors 0 noerror
DetailPrint "Ключ не существует!"
Goto EndCheck
noerror:
DetailPrint "Ключ существует, значение SetupPath=$0"
EndCheck:
....продолжение кода скрипта »
извиняюсь что возвращаюсь к древнему посту, но интересует один вопрос, описанным выше методом можно определить существование конкретного параметра реестра, а можно ли определить существование ВЕТКИ реестра? тоесть так сказать "папочки" в реестре? тоесть надо определить существование определенной ветки реестра независимо от того есть в ней какие либо параметры или она просто пустая...
kotkovets
03-12-2012, 22:59
интересует один вопрос, описанным выше методом можно определить существование конкретного параметра реестра, а можно ли определить существование ВЕТКИ реестра? тоесть так сказать "папочки" в реестре? »
В справочнике смотрите - » Работа с реестром с помощью NSIS
Уважаемый kotkovets, решил воспользоваться вашим плагином WinVer2.nsh для определения разрядности оси, однако при компиляции получаю такую бяку:
!insertmacro: FUNC_WindowsPlatformArchitecture
File: "System.dll"->"$PLUGINSDIR\System.dll" 11264 bytes
Plugin Command: Store S
!insertmacro: CallArtificialFunction
!define: "CallArtificialFunction_TYPE"="inst"
Call ":.FUNC_OSVERSIONINFOEXinst"
Goto: FUNC_OSVERSIONINFOEXinst_DONE
!define: "FUNC_OSVERSIONINFOEXinst_DEFINED"=""
!insertmacro: FUNC_OSVERSIONINFOEX
File: "System.dll"->"$PLUGINSDIR\System.dll" 0/11264 bytes
Plugin Command: Alloc 156
Pop: $9
!insertmacro: FUNC_GetVersionEx
File: "System.dll"->"$PLUGINSDIR\System.dll" 0/11264 bytes
Plugin Command: Call *$9(i156)
Plugin Command: Call kernel32::GetVersionEx(ir9)i.R0
!insertmacro: end of FUNC_GetVersionEx
!insertmacro: _IfThen
!insertmacro: end of _IfThen
Plugin Command: Call *$9(i.R2, i.r0, i.r1, i.r2, i.r3, &t128.r4, &i2.r5, &i2.r6, &i2.r7, &i1.r8, &i1)
File: "System.dll"->"$PLUGINSDIR\System.dll" 0/11264 bytes
Plugin Command: Free $9
!insertmacro: end of FUNC_OSVERSIONINFOEX
Return
!undef: "CallArtificialFunction_TYPE"
!insertmacro: end of CallArtificialFunction
!insertmacro: _If
!insertmacro: end of _If
Plugin Command: Alloc 64
Pop: $9
Plugin Command: Call kernel32::GetNativeSystemInfo(ir9)v
Plugin Command: Call *$9(&i2.R0)
Plugin Command: Free $9
!insertmacro: _If
!insertmacro: end of _If
!insertmacro: _Or
!insertmacro: end of _Or
Push: 64
!insertmacro: _Else
!insertmacro: end of _Else
Push: 32
!insertmacro: _EndIf
!insertmacro: end of _EndIf
!insertmacro: _EndIf
!insertmacro: end of _EndIf
Plugin Command: Store L
ClearErrors
Usage: Pop $(user_var: output)
Error in macro FUNC_WindowsPlatformArchitecture on macroline 18
не подскажете из-за чего?
Доброй ночи!
Как реализовать поддержку различных видов файлов лицензии
Попробовал так
!insertmacro MUI_PAGE_WELCOME
Page license
!insertmacro MUI_PAGE_DIRECTORY
LicenseLangString license ${LANG_ENGLISH} "${pkgdir}\license_en.rtf"
LicenseLangString license ${LANG_VIETNAMESE} "${pkgdir}\license_vn.rtf"
LicenseData $(license)
Выбор файлов отображается корректно, но весь текст на самом инсталяторе пропал
что делать
Добрый день!
Можно ли в nsis вывести окно с текстом и ссылками на определенные ресурсы?
Добрый день!
Можно ли в nsis вывести окно с текстом и ссылками на определенные ресурсы? »
Можно, плагин nsDialogs вам в помощь и справочник по nsis там все описано.
Или интересует что то типа окна сообщений?
Или интересует что то типа окна сообщений? »
Мне нужно окно сообщений
Типа у Вас старая версия программы передийте по этой ссылке чтобы скачать новую версию
Мне нужно окно сообщений
Типа у Вас старая версия программы передийте по этой ссылке чтобы скачать новую версию »
Напрашиваются следующие действия :
Детект установленной версии ПО
Обычное сообщение - "у вас такая то версия, не желаете ли обновиться ?" Да Нет
Если Да, то используем плагин - типа Inetc plug-in , с помощью которого скачиваем нужное.
(обсуждение здесь : http://forums.winamp.com/showthread.php?t=198596)
Можно конечно вывести отдельную кастомную страницу с вариациями ссылок и пр. Только надо ли ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC