NSIS 스크립트 예제 - 사용자 페이지에서 조건 검사하기 -
프로그래밍/NSIS 2010/03/08 14:19 |헬마입니다.
며칠전에 방명록에 사용자 페이지에서 조건등을 검사하여 특정 조건이 아니면 다음 페이지로 넘어가지 않도록 하는 작업에 대해서 문의가 있었는데요. 답글을 달고 한동안 해야지 해야지 하다가 이제서야 올리게 되었습니다. ㅠㅠ
간단한 예제 스크립트입니다. 컴파일 후에 실행하시면, 사용자 페이지가 나타나고 입력상자 2개에 같은 비밀번호를 숫자 4자로 입력하지 않으면 다음 버튼을 눌러도 넘어가지 않도록 되어있습니다.
!define APPNAME 'NSIS Example'
Name 'NSIS 예제 스크립트'
OutFile 'NSIS-Example.exe'
!include "MUI.nsh"
!include "LogicLib.nsh"
!include "nsDialogs.nsh"
!include 'WordFunc.nsh'
!insertmacro MUI_PAGE_WELCOME
Page custom ConfigPage CheckConfig ''
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE 'Korean'
BrandingText 'NSIS 예제 스크립트'
!insertmacro StrFilter
Var hPassword_Text_1
Var hPassword_Confirm
Function ConfigPage
!insertmacro MUI_HEADER_TEXT '${APPNAME} 설치' '환경 설정'
nsDialogs::Create 1018
Pop $0
${If} $0 == error
Abort
${EndIf}
${NSD_CreateGroupBox} 50% 0 50% 80% "비밀번호 설정"
Pop $1
${NSD_CreateLabel} 61% 20u 30% 10% '개인 비밀번호를 입력하세요'
Pop $2
${NSD_CreatePassword} 65% 40u 20% 10% ''
Pop $hPassword_Text_1
${NSD_CreateLabel} 60% 70u 33% 10% '한번 더 비밀번호를 입력하세요'
Pop $3
${NSD_CreatePassword} 65% 85u 20% 10% ''
Pop $hPassword_Confirm
${NSD_SetTextLimit} $hPassword_Text_1 4
${NSD_SetTextLimit} $hPassword_Confirm 4
${NSD_OnChange} $hPassword_Text_1 nsPageUse_EditNotify
${NSD_OnChange} $hPassword_Confirm nsPageUse_EditNotify
nsDialogs::Show
FunctionEnd
Function CheckConfig
${NSD_GetText} $hPassword_Text_1 $0
${NSD_GetText} $hPassword_COnfirm $1
${If} $0 == ''
${OrIf} $1 == ''
MessageBox MB_OK '빈 비밀번호는 허용되지 않습니다.'
Abort
${EndIf}
${If} $0 != $1
MessageBox MB_OK '입력한 비밀번호가 서로 다릅니다\r\n비밀번호는 숫자 4자리로 정해주세요'
Abort
${EndIf}
FunctionEnd
Function nsPageUse_EditNotify
# 통지를 보낸 컨트롤을 스택에서 꺼냄
Pop $R0
${NSD_GetText} $R0 $0
# 문자열을 숫자 문자열로 변환해본 후 길이가 일치하는지 확인
StrLen $1 $0
${StrFilter} $0 '1' '' '' $2
Strlen $3 $2
${If} $1 <> $3
MessageBox MB_OK '비밀번호는 숫자 4자리만 가능합니다.'
IntOp $1 $1 - 1
StrCpy $4 $0 $1
${NSD_SetText} $R0 $4
${EndIf}
FunctionEnd
Section -
SectionEnd'프로그래밍 > NSIS' 카테고리의 다른 글
| NSIS 스크립트 예제 - 사용자 페이지에서 조건 검사하기 - (6) | 2010/03/08 |
|---|---|
| 간단한 ExperienceUI for NSIS 예제. (2) | 2009/12/10 |
| NSIS 2.46 - H.M - (7) | 2009/12/07 |
| Eclipse 와 NSIS 의 만남 - 설치 - (2) | 2009/11/18 |
| NSIS 의 사용자 정의 대화상자 - 사용자 선택 받기 - (2) | 2009/07/21 |
| NSIS의 SetOutPath 와 File (0) | 2009/07/16 |

example.nsi
NSIS-Example.exe
Script.zip
댓글을 달아 주세요
Error: resolving install function "Nsis2Io" in function "mui.WelcomePre_12.5.9"
에러가 나는데 혹시 원인이 뭔지 알수 있을까요^^;?
제가 컴파일한 NSIS 는 2.46 버전입니다. 2.46 을 덮어서 설치해보시고 그래도 안되면 제가 쓰고있는 NSIS 를 압축해서 올려보겠습니다.
아아 nsDialogs를 쓰셨군요!
감사합니다 +ㅅ+b
NSIS 플러그 인에는 무었이있고 어떡해 사용하는지 좀 알려주세요~~
프로세스 종료 플러그 인이라던지...
자신이 입력하기로 원하는 비밀번호는 어디에 설정해야해요?
비밀댓글입니다