헬마입니다.

  며칠전에 방명록에 사용자 페이지에서 조건등을 검사하여 특정 조건이 아니면 다음 페이지로 넘어가지 않도록 하는 작업에 대해서 문의가 있었는데요. 답글을 달고 한동안 해야지 해야지 하다가 이제서야 올리게 되었습니다. ㅠㅠ

간단한 예제 스크립트입니다. 컴파일 후에 실행하시면, 사용자 페이지가 나타나고 입력상자 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

댓글을 달아 주세요

  1. 박정근 2010.03.09 10:47 신고 Address Modify/Delete Reply

    Error: resolving install function "Nsis2Io" in function "mui.WelcomePre_12.5.9"

    에러가 나는데 혹시 원인이 뭔지 알수 있을까요^^;?

    • 헬마 2010.03.09 13:13 신고 Address Modify/Delete

      제가 컴파일한 NSIS 는 2.46 버전입니다. 2.46 을 덮어서 설치해보시고 그래도 안되면 제가 쓰고있는 NSIS 를 압축해서 올려보겠습니다.

  2. BlogIcon 주전자 2010.03.12 09:34 신고 Address Modify/Delete Reply

    아아 nsDialogs를 쓰셨군요!
    감사합니다 +ㅅ+b

  3. 임현석 2010.04.10 14:30 신고 Address Modify/Delete Reply

    NSIS 플러그 인에는 무었이있고 어떡해 사용하는지 좀 알려주세요~~

    프로세스 종료 플러그 인이라던지...

  4. 질문이요 2011.01.11 10:00 신고 Address Modify/Delete Reply

    자신이 입력하기로 원하는 비밀번호는 어디에 설정해야해요?

  5. 2012.02.13 14:01 Address Modify/Delete Reply

    비밀댓글입니다

  6. 2013.09.14 18:28 Address Modify/Delete Reply

    비밀댓글입니다