사용자 도구

사이트 도구


사이드바

카테고리

tool:nsis:sample

기본 형식

default.nsi

코드 펼치기

설치 파일 이름 일부를 읽어서, 동작 변경하도록

#뒤의 세문자를 읽어서, 다음 동작을 결정한다.
Function MakeShortcutOrInternetshortcut
	# $0 : 저장할 임시 변수
	# $EXEFILE : 설치파일 실행 이름
	# 3 : 복사할 최대 문자수는 3글자
	# -3 : 맨 끝에서부터 -3 글자 위치에서부터 복사 시작
	StrCpy $0 $EXEFILE 3 -3
 
	MessageBox MB_OK "get the : $0"
 
	# $0에 저장된 문자가 ARA면 계속실행, 아니면 nextOne으로 점프
	StrCmp $0 "ARA" 0 nextOne
 
	CreateShortCut "$DESKTOP\${STR_GAME_NAME}.lnk" "$INSTDIR\${LAUNCHER_EXE_NAME}"
	goto done
nextOne:
	# $0에 저장된 문자가 HGC면 계속 실행, 아니면 nextTwo으로 점프
	StrCmp $0 "HGC" 0 nextTwo
	!insertmacro CreateInternetShortcut "$DESKTOP\${STR_GAME_NAME}" "${STR_WEB_SITE}" "$INSTDIR\${STR_GAME_NAME}.ico" "0"
	goto done
nextTwo:
	# for later usage
	MessageBox MB_OK "no choice"
done:
	# done 
FunctionEnd

폴더 선택 대화상자를 출력하는 예

# 레지스트리에서 폴더 위치를 읽어와야 하는데 못 읽는 경우, 폴더 선택 화면을 띄운다.
Var strGamePath		; game path
 
Function getGamePath
	ReadRegStr $strGamePath HKCU "Software\TestApp" "testapppath"
	StrCmp $strGamePath "" InitFailed InitSuccess
	Quit
InitFailed:
	MessageBox MB_OK "APP이 설치된 폴더를 찾을 수 없습니다. 폴더를 선택해주시길."
	# 폴더 선택 대화 상자 열기
	nsDialogs::SelectFolderDialog "ゲームが設置されたフォルダ選択" "$PROGRAMFILES\testapppath"
	# 리턴값을 스택에서 받아오기
	Pop $strGamePath
	# 빈 문자열이면 에러 처리
	StrCmp $strGamePath "" 0 InitSuccess
	MessageBox MB_OK "quit Install"
	Quit	
InitSuccess:	
	; MessageBox MB_OK "$strGamePath" ; (dbg msg)
	WriteRegStr HKCU "Software\TestApp" "testapppath" $strGamePath
	; go installation
FunctionEnd

스트링에 줄바꾸기 추가

MessageBox MB_OK "1st line $\r$\n 2nd line"
tool/nsis/sample.txt · 마지막으로 수정됨: 2013/08/29 16:01 저자 kieuns