Sections
섹션이란 앞에서도 언급했듯이 NSIS 설치관리자의 핵심을 이루는 것입니다. NSIS는 반드시 하나 이상의 섹션을 포함해야하며 이 섹션들은 아래와 같은 규칙하에 그 밑의 명령들로 관리됩니다.
- 각 섹션은 0개 이상의 명령을 포함합니다. (하나도 없을 수도 있습니다).
- 섹션은 설치마법사에 의해 순서대로 실행되며 ComponentText 가 설정되어 있다면 사용자는 각 보이는 섹션을 선택하거나 해제할 수 있습니다.
- 만약 섹션의 이름이 ‘Uninstall’ 이거나 섹션 이름앞에 ‘un.’ 이라는 접두어를 붙이면 이것은 설치제거때에만 쓰입니다.
Section Commands
AddSize size_kb
설치관리자에게 현재 섹션이 추가로 size_kb 키로바이트 만큼 필요하다고 알려줍니다. 이 명령은 오직 섹션에서만 유효합니다.Section AddSize 500 SectionEndSection
[/o] [([!]|[-])section_name] [section index output]새로운 섹션을 시작합니다. 만약 섹션이름이 빈공간이거나 – 로 시작하면 이 섹션은 숨김 속성을 가져서 사용자에게 보이지 않습니다. 만약 섹션이름이 ‘Uninstall’ 이거나 ‘un.’으로 시작하면 설치제거 섹션으로 사용됩니다. 섹션 인덱스 출력 변수가 설정되면 이 매개변수는 !defined 매크로에 의해 섹션 인덱스 값이 설정되고 SectionSetText 등의 관리명령에서 사용됩니다. 섹션이름이 !로 시작하면 굵은 글씨로 보이고 /o 를 설정하면 기본적으로 선택해제된 상태가 됩니다.
Section "-hidden section" SectionEndSection # hidden section SectionEnd Section "!bold section" SectionEnd Section /o "optional" SectionEnd Section "install something" SEC_IDX SectionEndSectionEnd
현재 열린 섹션을 닫습니다.
SectionIn
insttype_index [insttype_index] [RO]이 명령은 현재 섹션이 기본적으로 속하게 될 설치유형을 설정합니다. 복합적인 SectionIn 명령은 모두 합해져서 나타납니다. 만약 RO 매개변수를 지정하면 이 섹션은 읽기전용으로 사용자는 상태를 변경할 수 없습니다. 설치 유형은 InstType 명령에 의해 최초 1부터 차례대로 붙어나갑니다.
InstType "full" InstType "minimal" Section "a section" SectionIn 1 2 SectionEnd Section "another section" SectionIn 1 SectionEndSectionGroup
[/e] Caption [section_group_name index output]섹션 그룹이란 섹션들을 포함하는 섹션으로 섹션들을 보기좋게 모아서 나타날 때 사용합니다.섹션 그룹을 설정하며 반드시 SectionGroupEnd 명령으로 닫아야 합니다. 또한 반드시 하나 이상의 섹션을 포함해야 합니다. !로 이름이 시작하면 굵은 글씨체로 나타납니다. /e 를 설정하면 섹션그룹은 펼쳐져서 나타납니다. 만약 섹션이름이 ‘un.’으로 시작하면 설치제거 섹션으로 사용됩니다. 섹션 인덱스 출력 변수가 설정되면 이 매개변수는 !defined 매크로에 의해 섹션 인덱스 값이 설정되고 SectionSetText 등의 관리명령에서 사용됩니다.
SectionGroup "some stuff" Section "a section" SectionEnd Section "another section" SectionEnd SectionGroupEndSectionGroupEnd
섹션그룹을 닫습니다.
Uninstall Section
‘Uninstall’ 이라는 특별한 섹션은 설치제거마법사를 생성하기 위해 반드시 만들어야합니다. 이 섹션에서 설치했던 파일, 레지스트리 등을 삭제합니다.Section "Uninstall" Delete $INSTDIR\Uninst.exe ; delete self (see explanation below why this works) Delete $INSTDIR\myApp.exe RMDir $INSTDIR DeleteRegKey HKLM SOFTWARE\myApp SectionEnd제일먼저 Delete 명령으로 설치제거마법사를 삭제합니다. 왜냐하면 설치제거마법사는 윈도 임시 디렉토리로 복사되어 그곳에서 실행되기 때문입니다.설치제거때 $INSTDIR 값은 설치제거마법사가 있는 곳입니다. 반드시 설치마법사가 있는 곳과 같지는 않습니다.