NSIS 사용자 설명서

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

4.2 변수

모든 변수는 전역 변수이며, 섹션이나 함수 안에서 사용될 수 있습니다. 기본적으로 변수의 이름은 1024자로 제한됩니다. 이 제한을 확장하기 위해서는 NSIS_MAX_STRLEN 값을 더 크게한 후 다시 build NSIS하거나 Special Builds를 사용하십시오.

4.2.1 사용자 변수

$VARNAME

사용자 변수는 Var 명령을 통해 선언되어야 합니다. 이 변수들은 값을 저장하기 위해 사용되며, 문자열 조작 등의 작업에 이용합니다.

    4.2.1.1 Var

[/GLOBAL] var_name

사용자 변수를 선언합니다. 변수명에 사용될 수 있는 문자는 [a-z][A-Z][0-9] 및 '_' 입니다. 선언된 변수는 전역 변수입니다. (섹션이나 함수 안에서 선언되더라도) 이를 명확히 하기 위해, 섹션이나 함수 안에서의 변수 선언은 /GLOBAL 플래그를 사용해야 합니다. /GLOBAL 플래그는 섹션이나 함수 밖에서는 필요하지 않습니다.

Var example

Function testVar
  Var /GLOBAL example2

  StrCpy $example "example value"
  StrCpy $example2 "another example value"
FunctionEnd

4.2.2 기타 쓰기 가능한 변수

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9

$R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, $R8, $R9

레지스터입니다. 이 변수들은 사용자 변수처럼 사용될 수 있지만 대개 공유 함수나 매크로 안에서 사용됩니다. 이 변수들은 선언할 필요가 없으며 공유 코드 안에서 사용될 때 이름 충돌이 발생하지 않습니다. 공유 코드 안에서 이 변수들을 사용할 때 원본 값들을 저장하고 복원하기 위해 스택을 사용하는 것을 권장합니다.

Win32 API 프로그래밍을 경험한 개발자의 경우, DC 오브젝트를 핸들링 과정과 비슷합니다.

또한 플러그인 DLL에 의해 읽고 쓰일 수 있기 때문에 플러그인들 간의 통신에 사용될 수도 있습니다.

$INSTDIR

설치 디렉터리입니다. (StrCpy, ReadRegStr, ReadINIStr 등을 사용하여 수정할 수 있습니다. 예를 들어 .onInit 함수에서 설치 위치의 고급 검색을 위해 사용될 수 있습니다.)

언인스톨러 코드에서의 $INSTDIR는 언인스톨러 실행 파일이 위치하는 디렉터리로 지정됩니다. 인스톨러에서 사용된 값은 포함하지 않습니다. 예를 들어, 언인스톨러를 $WINDIR에 생성했고 사용자가 그것을 이동하지 않았다면 언인스톨러 실행 시 $INSTDIR 값은 $WINDIR가 됩니다. 그러므로 만약 언인스톨러를 프로그램 설치 위치가 아닌 다른 위치에 생성했다면, 인스톨러의 $INSTDIR 값을 레지스트리나 다른 저장 공간에 저장해서 언인스톨러가 그것을 읽어야 프로그램의 설치 위치를 찾을 수 있습니다.

$OUTDIR

현재 출력 위치입니다. SetOutPath를 통해 암시적으로 설정되거나 StrCpy, ReadRegStr, ReadINIStr 등을 통해 명시적으로 설정됩니다.

$CMDLINE

인스톨러의 명령줄 옵션입니다. 명령줄 포맷은 다음과 같습니다.

  • "full\path to\installer.exe" PARAMETER PARAMETER PARAMETER
  • installer.exe PARAMETER PARAMETER PARAMETER
  • PARAMETER 부분을 구문 분석하기 위해서는 GetParameters를 참조하십시오. /D=가 지정되었을 시(설치 디렉터리를 대체하기 위해) $CMDLINE에 저장되지 않습니다.

$LANGUAGE

현재 사용되는 언어를 나타내는 식별자입니다. 예를 들어, 영어는 1033이며 한국어는 1042입니다. (LCID Dec)

더 자세한 정보는 https://msdn.microsoft.com/en-us/library/cc233982.aspx를 참조하십시오.

이 변수는 .onInit 함수 안에서만 수정할 수 있습니다.

4.2.3 상수

상수는 InstallDir 속성에서  사용될 수 있습니다.

새로운 상수 중 몇가지는 모든 OS에서 작동되지 않습니다. 예를 들어, $CDBURN_AREA는 Windows XP (Windows NT 5.1) 이상의 OS에서만 작동됩니다. 만약 Windows 98 등 하위 OS에서 사용된다면 빈값을 가집니다.

각 상수는 별도의 언급이 없는 한 모든 OS에서 사용 가능합니다.

$PROGRAMFILES, $PROGRAMFILES32, $PROGRAMFILES64

Program Files 디렉터리입니다. (대개 C:\Program Files 이지만 런타임에 플랫폼에 따라 설정됩니다.) 64비트 Windows에서는 $PROGRAMFILES 및 $PROGRAMFILES32는 C:\Program Files (x86)을 가리키며,$PROGRAMFILES64는 C:\Program Files를 가리킵니다. 64비트 응용 프로그램을 설치할 경우 $PROGRAMFILES64를 사용하십시오.

$COMMONFILES, $COMMONFILES32, $COMMONFILES64

 Common Files 디렉터리입니다. 이 디렉터리는 응용 프로그램 간에 공유되는 구성 요소들의 디렉터리입니다. (대개 C:\Program Files\Common Files 이지만 런타임에 플랫폼에 따라 설정됩니다.) 64비트 Windows에서는 $COMMONFILES 및 $COMMONFILES32는 C:\Program Files (x86)\Common Files을 가리키며, $COMMONFILES64는 C:\Program Files\Common Files를 가리킵니다. 64비트 응용 프로그램을 설치할 경우 $COMMONFILES64를 사용하십시오.

$DESKTOP

바탕화면 디렉터리입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다. 일반적으로 C:\Documents and Settings\Administrator\Desktop (Windows NT 6.0 미만) 또는 C:\Users\Administrator\Desktop (Windows NT 6.0 이상)위치입니다.

$EXEDIR

인스톨러 실행 파일이 위치하는 디렉터리입니다. (이 변수값을 수정할 수 있지만 권장하지 않습니다.)

$EXEFILE

인스톨러 실행 파일의 기본 이름입니다.

$EXEPATH

인스톨러 실행 파일의 전체 경로입니다.

${NSISDIR}

NSIS 설치 디렉터리의 경로를 갖는 기호입니다. NSIS 디렉터리 안의 아이콘이나 UI 리소스를 참조할 때 유용합니다.

makensis와 데이터를 같은 위치에 저장(Windows에서 기본값)하면서 컴파일할 경우, makensis와 같은 위치입니다. 다른 플랫폼에서는 컴파일 타임에 설정됩니다. (INSTALL 파일을 참조하십시오.) 두 경우 모두 NSISDIR 환경 변수를 설정하므로써 런타임에 이를 수정할 수 있습니다. 더 자세한 정보는 section 3.1.3를 참조하십시오.

$WINDIR

Windows 디렉터리입니다. (%windir%입니다. 대개 C:\Windows 또는 C:\WinNT 이지만 런타임에 플랫폼에 따라 설정됩니다.)

$SYSDIR

Windows System 디렉터리입니다. (대개 C:\Windows\System 또는 C:\WinNT\System32 이지만 런타임에 플랫폼에 따라 설정됩니다.)

$TEMP

임시 디렉터리입니다. 일반적으로 C:\Documents and Settings\Administrator\Local Settings\Temp (Windows NT 6.0 미만) 또는 C:\Users\Administrator\AppData\Local\Temp (Windows NT 6.0 이상)위치입니다. (%temp%)

$STARTMENU

시작메뉴 폴더입니다. (CreateShortcut을 활용해 시작메뉴 항목을 추가할 때 유용합니다.) 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

$SMPROGRAMS

시작메뉴->프로그램 폴더입니다. ($STARTMENU\Programs가 필요할 때 사용합니다.) 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

$SMSTARTUP

시작메뉴->프로그램->시작프로그램 폴더입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

$QUICKLAUNCH

Internet Explorer 4 active desktop 및 상위 버전을 위한 빠른실행 폴더입니다. $QUICKLAUNCH를 사용할 수 없는 플랫폼에서는 $TEMP와 동일한 값을 가집니다.

$DOCUMENTS

문서 디렉터리입니다. 일반적으로 C:\Documents and Settings\Administrator\My Documents (Windows NT 6.0 미만) 또는 C:\Users\Administrator\Documents (Windows NT 6.0 이상)위치입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

이 상수는 Internet Explorer 4가 설치되지 않은 Windows 95에서는 사용할 수 없습니다.

$SENDTO

보내기 메뉴의 바로가기 항목이 있는 디렉터리입니다.

$RECENT

사용자의 최근 문서의 바로가기 항목이 있는 디렉터리입니다.

$FAVORITES

사용자의 웹사이트 즐겨찾기, 문서 등의 바로가기 항목이 있는 디렉터리입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

이 상수는 Internet Explorer 4가 설치되지 않은 Windows 95에서는 사용할 수 없습니다.

$MUSIC

사용자의 음악 디렉터리입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

이 상수는 Windows XP, ME 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$PICTURES

사용자의 사진 디렉터리입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

이 상수는 Windows XP, ME 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$VIDEOS

사용자의 동영상 디렉터리입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

이 상수는 Windows XP, ME 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$NETHOOD

네트워크 환경 폴더에 있는 링크 객체가 포함된 디렉터리입니다.

이 상수는 Internet Explorer 4가 설치되지 않은 Windows 95에서는 사용할 수 없습니다.

$FONTS

Windows의 Fonts 디렉터리입니다.

$TEMPLATES

문서 템플릿 디렉터리입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

$APPDATA

응용 프로그램 데이터 디렉터리입니다. 현재 사용자 경로를 검색하려면 Internet Explorer 4 또는 그 이상의 버전이 필요합니다. 모든 사용자 경로를 검색하려면 Internet Explorer 5 또는 그 이상의 버전이 필요합니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

이 상수는 Internet Explorer 4가 설치되지 않은 Windows 95에서는 사용할 수 없습니다.

$LOCALAPPDATA

로컬(논-로밍) 응용 프로그램 데이터 디렉터리입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

이 상수는 Windows ME, 2000 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$PRINTHOOD

장치 및 프린터 폴더에 있는 링크 객체가 포함된 디렉터리입니다.

이 상수는 Windows 95 및 Windows 98에서는 사용할 수 없습니다.

$INTERNET_CACHE

Internet Explorer의 임시 인터넷 파일 디렉터리입니다.

이 상수는 Internet Explorer 4가 설치되지 않은 Windows 95 및 Windows NT 4에서는 사용할 수 없습니다.

$COOKIES

Internet Explorer의 쿠키 디렉터리입니다.

이 상수는 Internet Explorer 4가 설치되지 않은 Windows 95 및 Windows NT 4에서는 사용할 수 없습니다.

$HISTORY

Internet Explorer의 기록 디렉터리입니다.

이 상수는 Internet Explorer 4가 설치되지 않은 Windows 95 및 Windows NT 4에서는 사용할 수 없습니다.

$PROFILE

사용자 프로필 디렉터리입니다. 일반적으로 C:\Documents and Settings\Administrator (Windows NT 6.0 미만) 또는 C:\Users\Administrator (Windows NT 6.0 이상)위치입니다.

이 상수는 Windows 2000 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$ADMINTOOLS

관리 도구가 보관되는 디렉터리입니다. 이 상수의 컨텍스트(모든 사용자 또는 현재 사용자)는 SetShellVarContext 설정에 따라 다릅니다. 기본값은 현재 사용자입니다.

이 상수는 Windows ME, 2000 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$RESOURCES

테마 및 다른 Windows 리소스를 저장하는 리소스 디렉터리입니다. (대개 $WINDIR\Resources 이지만 런타임에 플랫폼에 따라 설정됩니다.)

이 상수는 Windows XP 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$RESOURCES_LOCALIZED

로컬라이징된 테마 및 다른 Windows 리소스를 저장하는 리소스 디렉터리입니다. (대개 $WINDIR\Resources\1042 (한국어) 이지만 런타임에 플랫폼에 따라 설정됩니다.)

이 상수는 Windows XP 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$CDBURN_AREA

CD 굽기 대기 중인 파일이 저장된 디렉터리입니다.

이 상수는 Windows XP 또는 그 이상의 Windows 버전에서 사용할 수 있습니다.

$HWNDPARENT

메인 윈도우의 핸들값(HWND)입니다. (10진수)

$PLUGINSDIR

플러그인 최초 사용 시 또는 InitPluginsDir 명령 호출 시 생성된 임시 폴더 경로입니다. 이 폴더는 인스톨러가 종료될 때 자동으로 삭제됩니다. 이것은 InstallOptions의 INI 파일, 스플래시 플러그인의 비트맵 리소스 파일 및 기타 플러그인의 동작에 필요한 파일들을 임시 저장하는데 적합한 폴더입니다.

4.2.4 문자열에 사용되는 상수

$$

$를 표현하기 위해 사용합니다.

$\r

캐리지 리턴을 표현하기 위해 사용합니다. (\r)

$\n

개행을 표현하기 위해 사용합니다. (\n)

$\t

탭을 표현하기 우해 사용합니다. (\t)

댓글

댓글 본문
작성자
비밀번호
버전 관리
CraXicS
현재 버전
선택 버전
graphittie 자세히 보기