헬마입니다.

며칠전에 방명록에서 관련 질문을 받고 써야지 하다가 게으름에 이제서야 글을 쓰게 되었습니다.

사실 코드는 굉장히 단순하구요.

사용자 정의 대화상자를 만들어서 체크박스 등을 통해 선택받는 방법은 2가지가 있습니다.

NSIS 2 초기에 사용되었던 INI 파일을 이용한 InstallOptions 라는 플러그인을 이용하는 방법이 첫째입니다.

둘째는, 비교적 최근 버전의 NSIS에 도입된 nsDialogs 플러그인을 이용하는 방법입니다.

후자의 방법이 속도도 훨씬 빠르며, 유연합니다. 또한, 더욱 여러가지 원하는 대로 통제도 가능하지요. 하지만, 그런만큼 윈도 프로그래밍의 지식을 갖추지 않으면 어렵습니다.

이번에 예제는 후자인 nsDialogs 플러그인을 사용하도록 작성했습니다.

작성 NSIS 버전은 2.45 버전입니다.

예제 테스트 방법은 NSIS 폴더에 넣고 컴파일 후 실행하여 보시면 됩니다.


컴파일 후에 실행하면 위와 같은 화면이 나오며, 선택하면 선택한 단축아이콘이 바탕화면에 생성됩니다.



!include LogicLib.nsh
!include nsDialogs.nsh

Name 'NSIS_EX'
OutFile 'Nsis_ex.exe'
XPStyle on

Page custom nsDialogEnter nsDialogLeave
Page instfiles

Var hMainDlg
Var hCheckBox1
Var hCheckBox2
Var CheckState

Section -
SectionEnd

Function nsDialogEnter
	nsDialogs::Create 1018
	Pop $hMainDlg
	
	${If} $hMainDlg == error
		Abort
	${EndIf}
	
	${NSD_CreateCheckBox} 0 0 100% 12u 'MakeNSISW.EXE 단축아이콘 생성'
	Pop $hCheckBox1
	
	${NSD_CreateCheckBox} 0 14u 100% 12u 'NSIS.EXE 단축아이콘 생성'
	Pop $hCheckBox2
	
	${NSD_SetState} $hCheckBox1 ${BST_CHECKED}
	nsDialogs::Show
	
FunctionEnd

Function nsDialogLeave
	${NSD_GetState} $hCheckBox1 $CheckState
	${If} $CheckState == ${BST_CHECKED}
		MessageBox MB_OK 'MakeNSISW 단축아이콘을 생성합니다.'
		CreateShortCut '$DESKTOP\MakeNSISW.LNK' '$EXEDIR\MakeNsisw.exe'
	${EndIf}
	
	${NSD_GetState} $hCheckBox2 $CheckState
	${If} $CheckState == ${BST_CHECKED}
		MessageBox MB_OK 'Nsis 단축아이콘 생성'
		CreateShortCut '$DESKTOP\nsis.exe' '$EXEDIR\nsis.exe'
	${EndIf}	
FunctionEnd
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

댓글을 달아 주세요

  1. BlogIcon enemy 2011.05.11 16:15 신고 Address Modify/Delete Reply

    하나 알고 갑니다.^^
    감사 드립니다.

  2. BlogIcon 지우 초이 2016.03.24 12:13 신고 Address Modify/Delete Reply

    nsdialog설명중에서 가장 간단하면서도 가장 명쾌합니다.
    왜쓰는지, 어떻게쓰는지 완벽히 이해하고갑니다!

티스토리 툴바