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

profcom
26-11-2012, 14:08
Кастом страница. Пользователь вводит данные, нажимает далее. Инстолятор проверяет данные и, если они не верны, пишет что "что-то там неправильно" и заставляет ещё раз заполнять форму. Вопрос. »
Я бы посоветовал делать проверку в режиме реального времени, а не после перехода на другую функцию. Я так понимаю что пользователь вводит данные в 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

shut
26-11-2012, 15:04
profcom, не только textedit. Есть ещё много контролов, которые надо проверить. Проверять в рантайме каждый контрол на нескольких страницах достаточно накладно.
Спасибо, что откликнулись.

profcom
26-11-2012, 15:40
profcom, не только textedit. Есть ещё много контролов, которые надо проверить. Проверять в рантайме каждый контрол на нескольких страницах достаточно накладно.
Спасибо, что откликнулись. »
Ну хотя бы решение есть пусть и много контролов но все можно проверить. Есть конечно и вариант сделать как вы хотите. Вкратце задумка такая на станице fmPageModuleInstallDestroy выполнить проверку как вы хотите и передать в переменную пройдена проверка или нет. А на следующей странице послать команду нажать назад, что автоматически восстановит нам станицу которую вы хотели.

shut
26-11-2012, 15:49
Я пробовал сделать в рантайме. Говорю - накладно. Если не будет варианта другого оставлю.

Второй вариант тоже не плох, но я не знаю какая страница будет следующей... шесть вариантов... и, по-моему, это не очевидно. Следующий разработчик после меня не разберёт, что я имел ввиду.

kotkovets
26-11-2012, 22:59
Кастом страница. Пользователь вводит данные, нажимает далее. Инстолятор проверяет данные и, если они не верны, пишет что "что-то там неправильно" и заставляет ещё раз заполнять форму. Вопрос. »
В функции fmPageModuleInstallDestroy, или на других любых кастомных страничек..
если не верно введенные параметры делаем прерывание одной инструкцией:
Abort
и все.. никаких извращений..

shut
27-11-2012, 11:41
kotkovets, когда будите обновлять справочник? Могу написать статейку, где подробно опишу, как делать плагины с помощью Delphi.

Krinkels
27-11-2012, 11:57
shut
ИМХО не имеет смысла. В сети куча сорцов. Разбирай не хочу. А написание плагина зависит только от желания программиста

shut
27-11-2012, 12:11
Krinkels, разные ситуации бывают. Например, моему шефу приспичило окно для ввода пароля сделать достаточно креативным... похожего не нашёл и пришлось написать плагин.

MKN
27-11-2012, 13:12
написание плагина зависит только от желания программиста »
Хотелось бы , чтобы и пожелания пользователей учитывались... :) Полезных плагинов действительно много, но часть из них устарела, а ещё больше плагинов, могущих расширить возможности NSIS и облегчить "кодописание" - ещё вообще не написано, и будет ли ... Посмотрите тему, оч. часто для разных ситуаций звучит фраза - "Тут надо писать отдельный плагин" :) Потому что пока в природе нет подходящего.

Krinkels
27-11-2012, 13:15
shut
Бывает и такое. Но как по мне так это лишние сложности. Проще все это сделать на инно, там и инсталятор можно оформить по вкусу, и ввод пароля сделать более креативным. Но NSIS я люблю за отсутствие интерпретатора, и за малый вес конечного продукта

profcom
27-11-2012, 14:40
kotkovets, когда будите обновлять справочник? Могу написать статейку, где подробно опишу, как делать плагины с помощью Delphi. »
То же готов помочь, например перевод описания плагина nsis list готов добавить.

kotkovets
27-11-2012, 21:27
Посмотрите тему, оч. часто для разных ситуаций звучит фраза - "Тут надо писать отдельный плагин" »
верно.. но писать плаг не так то просто..
Могу написать статейку, где подробно опишу, как делать плагины с помощью Delphi. »
То же готов помочь, например перевод описания плагина nsis list готов добавить. »
я только за..
но главное, чтобы было написано грамотно и понятно среднестатическому пользователю.
присылайте в личку..
если контент нормальный - будем добавлять.

XCV
03-12-2012, 13:02
Вот так:
Код:
ReadRegStr $0 HKLM "Software\MyProgram" "SetupPath"
IfErrors 0 noerror
DetailPrint "Ключ не существует!"
Goto EndCheck
noerror:
DetailPrint "Ключ существует, значение SetupPath=$0"
EndCheck:
....продолжение кода скрипта »
извиняюсь что возвращаюсь к древнему посту, но интересует один вопрос, описанным выше методом можно определить существование конкретного параметра реестра, а можно ли определить существование ВЕТКИ реестра? тоесть так сказать "папочки" в реестре? тоесть надо определить существование определенной ветки реестра независимо от того есть в ней какие либо параметры или она просто пустая...

kotkovets
03-12-2012, 22:59
интересует один вопрос, описанным выше методом можно определить существование конкретного параметра реестра, а можно ли определить существование ВЕТКИ реестра? тоесть так сказать "папочки" в реестре? »
В справочнике смотрите - » Работа с реестром с помощью NSIS

XCV
04-12-2012, 18:02
Уважаемый 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

не подскажете из-за чего?

dix75
05-12-2012, 00:09
Доброй ночи!
Как реализовать поддержку различных видов файлов лицензии
Попробовал так

!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)

Выбор файлов отображается корректно, но весь текст на самом инсталяторе пропал
что делать

dix75
05-12-2012, 16:38
Добрый день!

Можно ли в nsis вывести окно с текстом и ссылками на определенные ресурсы?

profcom
05-12-2012, 17:15
Добрый день!
Можно ли в nsis вывести окно с текстом и ссылками на определенные ресурсы? »
Можно, плагин nsDialogs вам в помощь и справочник по nsis там все описано.

Или интересует что то типа окна сообщений?

dix75
05-12-2012, 17:45
Или интересует что то типа окна сообщений? »
Мне нужно окно сообщений
Типа у Вас старая версия программы передийте по этой ссылке чтобы скачать новую версию

MKN
05-12-2012, 18:48
Мне нужно окно сообщений
Типа у Вас старая версия программы передийте по этой ссылке чтобы скачать новую версию »
Напрашиваются следующие действия :
Детект установленной версии ПО
Обычное сообщение - "у вас такая то версия, не желаете ли обновиться ?" Да Нет
Если Да, то используем плагин - типа Inetc plug-in , с помощью которого скачиваем нужное.
(обсуждение здесь : http://forums.winamp.com/showthread.php?t=198596)

Можно конечно вывести отдельную кастомную страницу с вариациями ссылок и пр. Только надо ли ?




© OSzone.net 2001-2012