Variables - NSIS manual

프로그래밍/NSIS | 2006/12/22 15:21 | 게으른 엔지니어
1. 변수란?

NSIS에서 변수는 항상 전역적인 범위를 가진다. 즉 지역 변수라는게 없다는 얘기다. 그리고 변수명의 길이는 최대 1024 로 제한된다. 이 보다 큰 길이의 변수명이 필요하면 NSIS 소스를 새로 빌드하면 된다. 하지만 일반인이 이 보다 긴 길이의 이름을 쓴다는 것은 의미가 없다. 10자 이상만 길어져도 타이핑 하기가 귀찮은데 말이다... ㅋㅋㅋ

사용자가 변수를 선언할때는 Var 이라는 명령어와 함께 쓰면 된다. 이러한 변수는 값이나 문자열을 저장하는데 사용할 수 있다.



변수는 위와 같은 방식으로 선언할 수 있다. 이때 변수의 이름으로 사용가능한 문자는 [a-z][A-Z][0-9], '-' 를 사용할 수 있다. 모든 변수는 전역 변수라서 function이나 section 내에서 선언한 변수도 모두 전역으로 여겨 진다. 이때 /GLOBAL 스위치를 꼭 명시적으로 표시해야 한다. 그 이외의 위치에서는 /GLOBAL 스위치를 사용할 필요는 없다.



위와 같은 경우 변수를 선언시에는 '$'를 사용하지 않지만, 실제로 변수를 사용할 경우 항상 '$'로 시작해야 한다.

2. 수정 가능한 미리 지정된 변수들

  2.1. 유저가 선언한 변수와 거의 같은 용도로 사용할 수 있는 변수들

NSIS에는 미리 지정된 변수들이 있다. 이러한 미리 지정된 변수들 중에 변수의 값을 변경 가능한 것들 중에 Registers 라고 해서 유저가 선언한 변수랑 똑같이 쓰지만, 선언할 필요가 없는 변수가 있다. 유저가 선언한 변수랑 또 다른 점은 이 변수들은 plug-in DLL과 값이나 문자열을 주고 받는데 사용할 수가 있다는 것이다. 때문에 이런 변수를 사용할때는 항상 stack에  push 작업을 하고 다 사용한 이후에는 항상 pop하여 원래 값으로 돌려 주는 것을 잊지 말아야 한다.



  2.2. 변수 이름이 이미 지정되어서 의미를 가지고 있어서 인스톨에 영향을 주는 변수들


3. 상수들

윈도우 OS의 환경으로 부터 값을 가지고 있기 때문에 사용자가 수정할 수가 없다. 예를 들어 각각의 OS에서 프로그램을 인스톨하는 기본적인 디렉토리는 ...\Program Files 밑이지만, 윈도우의 레지스트리를 수정하여 기본 인스톨 디렉토리를 변경할 수도 있다. 이럴 경우 그 값을 인스톨 프로그램이 자동으로 감지하여 상수에 값을 저장하는 것이다. 여기에 나오는 모든 상수들이 모든 윈도우 OS에서 값을 가지는 것은 아니다. $CDBURN_AREA 와 같은 변수는 Windows XP 이후 버전에서만 의미가 있다. 특별히 언급하지 않는 상수들은 모든 Windows OS에서 동작한다고 보면 된다.



위에 설명된 것 보다 더 많은 상수들이 있지만, 대부분 필요없을것 같아서 더 이상 설명은 하지 않겠다. 더 필요한 내용은 NSIS manual 의 4.2.3 을 보면 되겠다.

변수에 대한 설명을 많이 보았으니 이제 예제를 하나 만들어서 실제로 확인해 보도록 하자.

variables.nsi


위 코드를 실행해 보자
사용자 삽입 이미지

코드와의 연관성을 보면 어떤식으로 사용할 수 있을지 확인할 수 있을 것이다. 다른 상수들로 실제로 어떤 의미를 가지는지 확인해 보자.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
TAG

트랙백을 보내세요

트랙백 주소 :: http://www.cipher.pe.kr/tt/cipher/trackback/102
  1. NSIS manual - Variables

    Tracked from Jeong Eun-seon 2009/11/25 16:39

    1. 변수란?NSIS에서 변수는 항상 전역적인 범위를 가진다. 즉 지역 변수라는게 없다는 얘기다. 그리고 변수명의 길이는 최대 1024 로 제한된다. 이 보다 큰 길이의 변수명이 필요하면 NSIS 소스를 새

댓글을 달아 주세요

  1. 최익필 2010/04/27 17:41

    감사합니다. 잘 보고 갑니다.

    • 게으른 엔지니어 2010/04/28 22:11

      상당히 옛날 글인데, 도움이 되신다니 다행이네요.
      조만간 NSIS의 최근 동향에 대해서도 도움되게 글을 써야 할지도 모르겠네요... ㅋㅋㅋ

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)