모든 변수는 전역 변수이며, 섹션이나 함수 안에서 사용될 수 있습니다. 기본적으로 변수의 이름은 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
레지스터입니다. 이 변수들은 사용자 변수처럼 사용될 수 있지만 대개 공유 함수나 매크로 안에서 사용됩니다. 이 변수들은 선언할 필요가 없으며 공유 코드 안에서 사용될 때 이름 충돌이 발생하지 않습니다. 공유 코드 안에서 이 변수들을 사용할 때 원본 값들을 저장하고 복원하기 위해 스택을 사용하는 것을 권장합니다.
또한 플러그인 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)