Skip to content
DarkKaiser의 블로그
DarkKaiser의 블로그
  • 개발 관련 자료(노션)
  • Raspberry Pi(노션)
  • WD My Cloud(노션)
  • GitHub
DarkKaiser의 블로그

NSIS란…

DarkKaiser, 2007년 6월 13일2023년 9월 6일
NSIS의 장점

  1. 파일크기가 작다.
  2. 거의대부분의 윈도와 호환된다.
  3. 특수한 압축방식으로 최소한의 오버헤드와 따로 자동압축풀림 기능을 사용할 필요가 없습니다.
  4. 스크립트 방식으로 인스톨러의 모든 동작을 직접 제어할 수 있습니다.
  5. 다국어를 지원합니다.
  6. 인터페이스나 대화상자를 편집할 수 있습니다.
  7. 필요한 기능은 플러그인으로 추가할 수 있습니다.
  8. 웹을 통한 설치, 패치를 지원합니다.
  9. NSIS는 쉽게 하나의 설치마법사에 여러 프로젝트를 통합하거나 라이트, 풀 버전등을 만듭니다.

간단한 NSIS 문법

  1. 주석
    “;”, “#” 이후의 문장은 주석입니다. /* 와 */ 사이의 문장은 주석입니다.
  2. 명령
    명령 (인자) 입니다. 예) File “myfile.exe”
  3. 플러그인
    플러그인 이름::명령 (인자)
  4. 숫자
    10진수(일반적인 수), 16진수(앞에 0x를 붙입니다.), 8진수(앞에 0를 붙입니다.)
  5. 변수
    변수명 앞에 $를 붙입니다.

NSIS Section이란?

NSIS에 있어서 섹션이란 매우 중요합니다. 섹션은 보통, 다른 설치마법사 제작기에서 다른 이름으로 많이 있습니다. 컴포넌트, 기능(Feature), 구성요소 등으로 말이죠. 이름만 다르고 이들과 하는 일은 같습니다. 즉, 제작자가 어떤 프로그램을 설치하려고 할때 그 프로그램을 구성하는 하나의 구성요소 라고 할 수 있습니다. 파일이 모여서 섹션이 되고 섹션이 모여서 프로그램이 되는거죠.

NSIS Page에 대해서

NSIS로 만들 수 있는 설치마법사 중 대개는 화면에 뭔가 보여주면서 선택을 하게 됩니다. 당연한가요? Page에 관련된 일련의 명령들은 바로 이러한 화면을 제어합니다. 순서, 보여지는 형태, 언어, 동작 등 많은 것들을 제어합니다. 또한, NSIS에서는 NSIS에서 내장해서 자체적으로 제공하는 화면 말고 CustomPage 라고 하여 사용자가 원하는 화면을 만들어서 보여줄 수 있습니다. (InstallOptions 라는 플러그인이 있고, Codec xPack에서 ffdshow 옵션을 설정하는 화면에서 쓰였습니다.)페이지를 다룰때는 일단 기본적으로 Page, UninstPage(설치제거용) 두가지 명령을 쓰며 Page나 UninstPage의 확장판으로 PageEx라는 명령이 있습니다.

일단 페이지를 만든다고 치면 각 페이지들의 순서를 정해야 할 것입니다. 여기서 NSIS 스크립트만의 편리성이 드러납니다. NSIS 스크립트는 위에서 아래로 차례로 순차적으로 실행된다고 언급한 적이 있습니다. 즉, 배열하려는 Page 순서대로 스크립트에서 한줄씩 차례대로 적어주기만 하면 됩니다.

Page license;
Page components

이렇게 적으면 NSIS는 라이센스 화면을 보여주고 다음에 컴포넌트 선택 화면을 보여줍니다.

NSIS에서 자체적으로 제공하는 페이지들.. (license, components, directory, instfiles, uninstConfirm) 입니다. instfiles는 설치/제거 모두에 쓰입니다.

또한 이렇게 순서만 정하면 재미가 없을겁니다. NSIS에서는 이렇게 순서를 정하면서 동시에 간단한 동작이나 형태를 지정해 줄 수 있습니다. 물론, 이렇게 하기위해서는 NSIS의 함수에 대해서 알아야합니다. 또한, Page, UninstPage 의 인자에 대해서도 알아야겠죠.

Page
custom [creator_function] [leave_function] 
   OR (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function] 
UninstPage
custom [creator_function] [leave_function] 
   OR (license|components|directory|instfiles
NSIS 배포NSIS

글 내비게이션

Previous post
Next post

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • AssertJ 소개testCompile ‘org.assertj:assertj-core:3.6.2’ 2017년 9월 14일
  • 자주 사용되는 Lombok 어노테이션 2017년 9월 14일
  • 유니코드 #3 2017년 9월 14일
  • 유니코드 #2 2017년 9월 14일
  • 유니코드 #1 2017년 9월 14일

최신 댓글

    카테고리

    • 개인 자료 (1)
      • 일기 (1)
    • 주절주절 (7)
    • 프로그래밍 갤러리 (16)
    • 프로그래밍 언어 (186)
      • Java (29)
      • C/C++/VC++ (114)
      • C# (11)
      • Visual Basic (6)
      • 안드로이드 (9)
      • Objective-C (5)
      • JavaScript (4)
      • JSP/Servlet (2)
      • Python (4)
      • 어셈블러 (1)
    • 개발++ (44)
      • Book (11)
        • Joel On Software (10)
      • 프로젝트 관리 (6)
      • Maven (1)
      • 디버깅 (1)
      • DirectX (1)
      • Silverlight (1)
      • RESTful (1)
      • Hacking (1)
      • WDM (4)
      • VoIP (5)
      • 기타 (1)
    • 개발 도구 (15)
      • eclipse (14)
      • Sublime Text (1)
    • 네트워크 (7)
    • 설치 및 배포 (7)
      • InstallShield (2)
      • NSIS (4)
    • 버전 관리 (9)
      • Git (2)
      • CVS (2)
      • Subversion (5)
    • 데이터베이스 (7)
      • Oracle (3)
      • Sybase (2)
      • MS-SQL (2)
    • 단위테스트 (3)
      • JUnit (1)
      • NUnit (2)
    • 버그추적시스템 (2)
      • mantis (2)
    • 운영체제 (7)
      • Windows (5)
      • 리눅스 (2)
    • WAS (3)
      • WebLogic (3)
    • 디자인패턴 (1)
    • 디지털 이미지 프로세싱 (16)

    태그

    Assert() CImage cvsnt DDK DefaultTraceListener delegate eclipse EventLogTraceListener maven MDI MFC MSDN mutable NAnt new pragma RAW snoopspy std::auto_ptr STLFit STLPort STLTask TCP/IP Thread UNICODE useBean VI volatile watch WinSXS XP테마 기하학 데이터소스 드라이브 마스크 문자열 상수 스레드 스레드 동기화 시간 실용주의 실용주의 프로그래머 자바빈즈 툴팁 패킷

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org
    ©2025 DarkKaiser의 블로그 | WordPress Theme by SuperbThemes