도전2022

NSIS 본문

소스코드

NSIS

hotdigi 2012. 7. 19. 18:53

이전 | 목차 | 다음

제 4 장 : 스크립트 참조

4.1 스크립트 파일 형식

NSIS 스크립트 파일 (. NSI) 단지 스크립트 코드가있는 텍스트 파일입니다.

명령

명령 라인 형식입니다 '명령 [매개 변수]'

파일 "myfile"

댓글

선은으로 시작하거나, # 댓글입니다. 당신은 명령 후 코멘트를 넣을 수 있습니다. 당신은 또한 하나 이상의 라인을 언급 C-스타일의 주석을 사용할 수 있습니다.

; 댓글
# 덧글

# 덧글 \
    다른 주석 라인 (`아래의 긴 명령어`섹션을 참조)

/ *
논평
논평
* /

이름 / * 주석 * / mysetup

파일 "myfile"; 코멘트

당신이 원하는 경우에는 매개 변수로 시작하는, 또는 # 따옴표에 넣어.

플러그인

플러그인 호출하기 위해 사용하는 '플러그인 :: 명령은 [매개 변수]'. 자세한 내용은 참조 DLL이 플러그인 .

nsExec :: EXEC "myfile"

민수기

숫자로 취급되는 매개 변수의 경우 진수 (숫자) 또는 진수 (즉 0x12345AB, 그것에 prepended 0x로 사용), 또는 진수를 (숫자 0 시작하고 아니 X)를 사용합니다.

색상은 HTML과 같은 진수 RGB 형식으로 있지만 #없이 설정해야합니다.

IntCmp 한 0x1을의 lbl_equal

SetCtlColors $ HWND CCCCCC

문자열

공백, 사용 따옴표가 문자열을 표현하려면

"안녕!"MessageBox MB_OK

인용문은 그들이 매개 변수를 시작하는 경우 매개 변수를 포함하는의 속성을 가집니다. 그들은 어느 작은 따옴표, 큰 따옴표, 또는 뒤로 따옴표가 될 수 있습니다.

당신은 $ \를 사용하여 따옴표를 이스케이프 수 있습니다 :

MessageBox MB_OK "나는 행복하게",이 한 문자열 안에 '을 박았어요
MessageBox MB_OK "그리고 그는"안녕! "나에게 말했다 ';이 녀석은"내부 문자열을 박았
MessageBox MB_OK가`그리고 그는 나에게 말했다 "나는 드리겠습니다!"`,이 한 문자열 안에 모두 넣어 '와 "의
MessageBox MB_OK는 "$ \"현명한 사람은 $ \에서 따옴표 "현명한 사람이 말했다"; 따옴표로 이스케이프 이번 공연

그것은 $ \ r을 사용하여 문자열에 탭 등, 뉴라인 넣어도 가능 $ \ N, $ \ t 등 더 많은 정보 ...

변수

변수는 $로 시작합니다. 사용자 변수가 선언되어야합니다.

VAR MYVAR

StrCpy $ MYVAR "myvalue"

더 많은 정보 ...

긴 명령

여러 줄에 걸쳐 명령을 확장하려면 줄 끝에 역슬래쉬 (\)를 사용합니다. 다음 라인은 효과적으로 그것의 끝에 연결된 것입니다. 예를 들면 다음과 같습니다

CreateShortCut "$ SMPROGRAMS \ NSIS \ ZIP2EXE 프로젝트 workspace.lnk"\
    "$ INSTDIR \ 소스 \ zip2exe \ zip2exe.dsw"

MessageBox MB_YESNO | MB_ICONQUESTION \
    "당신이 폴더의 모든 파일을 제거 하시겠습니까? \
    (당신은 아무것도 가지고있다면 당신이 원하는 것을 만들어 \
     계속 ") 아니오를 누릅니다 \
    IDNO NoRemoveLabel

긴 명령어 라인 확장뿐만 의견을 작동합니다. 그것은 조금 혼동을 줄 수있다, 그래서 그것은 피해야한다.

# 댓글 \
    아직 여기에 덧글 ...

구성 파일

구성 디렉토리에 존재에서 "nsisconf.nsh"라는 파일이있다면, 그것은 어떤 스크립트 전에 기본 (/ NOCONFIG 명령줄 매개 변수가 사용되지 않는)가 포함됩니다. Windows에서 구성 디렉토리 makensis.exe 다른 플랫폼에서는 이것이 $ PREFIX은 / etc /에 설치 시간과 기본값으로 설정되어 인치이기 때문에 동일한 디렉토리입니다. 너도 알다시피, 런타임에 이것을 변경할 수있는 섹션 3.1.3을 자세한 내용은.

4.2 변수

모든 변수는 전역이며 섹션이나 함수에서 사용할 수 있습니다. 기본적으로 변수가 1024 자로 제한하고 있습니다. 이 한도를 확대하려면 NSIS를 구축 NSIS_MAX_STRLEN이 설정을 빌드하거나 사용 중 더 큰 값으로 특별한 빌드를 .

4.2.1 사용자 변수

$ VARNAME

사용자 변수로 선언할 수 있습니다 VAR 명령. 당신은 문자열 조작 등 작업, 가치를 저장하는 데이 변수를 사용할 수 있습니다

4.2.1.1 VAR

[/ 글로벌] var_name

사용자 변수를 선언합니다. 변수 이름에 허용되는 문자 : [AZ] [AZ] [0-9]와 '_'. 섹션 또는 함수에 정의된 경우에도 정의된 모든 변수는 전역입니다. 이것은 분명, 섹션 또는 함수에 정의된 변수 / 글로벌 플래그를 사용해야하기 위해 서요. / 글로벌 플래그 섹션과 함수의 외부에서 필요하지 않습니다.

VAR 예를

기능 testVar
  VAR / 글로벌 example2

  StrCpy $ 예 "예를 값을"
  StrCpy $ example2 "또 다른 예제 값"
FunctionEnd

4.2.2 기타 쓸 변수

R1 0달러, $ 1, $ 2, $ 3, 4달러, 5 $, $ 6, 7 $, $ 8, 9달러, $ R0, $, $ R2, $ R3, $ R4, $ R5, $ R6, $ R7, $ R8, $ R9

등록합니다. 이러한 변수는 단지 사용자 변수처럼 사용할 수 있지만, 일반적으로 공유 기능이나 매크로에 사용됩니다. 당신이이 변수를 선언하지 않아도되므로 공유 코드에서 그들을 사용할 때 어떤 이름 충돌을하지 않습니다. 공유 코드에서이 변수를 사용할 때, 그것은 당신이 그들의 원래 값을 저장하고 복원하기 위해 스택을 사용하는 것이 좋습니다. 그들이 읽고가 작성한 플러그인 DLL을 수 있기 때문에 이러한 변수는 또한 플러그인과의 통신을 위해 사용될 수 있습니다.

$ INSTDIR

설치 디렉토리 ($ INSTDIR 수정할가 사용하는 StrCpy , ReadRegStr , ReadINIStr 등 -이 사용될 수있다 예를 들어,에 . onInit의 기능은 설치 위치의 고급 검색을 수행하는).

제거 프로그램 코드에서, $ INSTDIR가 제거 프로그램이 자리하고있는 디렉토리가 포함되어 있습니다. 그것은 않습니다 없습니다 반드시 그것이 설치 프로그램에 포함된 동일한 값을 포함합니다. 당신 WINDIR $로 제거 프로그램을 작성하고 사용자가 이동하지 않을 경우 예를 들어, $ INSTDIR는 제거 프로그램에 $ WINDIR 될 것입니다. 당신이 다른 위치로 제거 프로그램을 작성하는 경우 레지스트리 또는 다른 저장 시설에서 설치 프로그램의 $ INSTDIR을 유지하고 제거에서 읽어야합니다.

$ OUTDIR

전류 출력 디렉토리 (를 통해 암시적으로 설정 SetOutPath 통해 또는 명시적으로 StrCpy , ReadRegStr , ReadINIStr 등)

$ CMDLINE

설치 프로그램의 명령줄. 커맨드 라인의 형식은 다음 중 하나일 수 있습니다 :

  • "전체 \ 경로 \ installer.exe"매개 변수 매개 변수 매개 변수
  • installer.exe 매개 변수 매개 변수 매개 변수
  • 매개 변수 부분을 파싱을 보려면 GetParameters를 . / D =이 명령줄 (설치 디렉토리를 무시하는)에 지정되어 있으면 그것은 $ CMDLINE에 표시되지 않습니다.

$ 언어

현재 사용되는 언어의 식별자입니다. 예를 들어, 영어는 1033입니다. 당신이이 변수를 변경할 수 있습니다 . onInit .

4.2.3 상수

상수에서도 사용할 수 InstallDir의 특성.

새로운 상수 중 일부는 모든 OS에서 작동하지 않습니다. 예를 들어, $ CDBURN_AREA은 윈도우 XP 이상에서 작동합니다. 그것은 윈도우 98에서 사용된다면, 그것은 비어 있습니다. 달리 언급하지 않는 한, 상수는 모든 운영 체제에서 사용할 수 있어야합니다.

$ PROGRAMFILES , $ PROGRAMFILES32 , $ PROGRAMFILES64

프로그램 파일 디렉토리 (보통 C : \ 프로그램 파일 있지만 런타임에 감지). 이 Windows x64에서 $ PROGRAMFILES와 $ PROGRAMFILES32 지점으로 C : \ 프로그램 파일 (x86)를 하는 동안에 $ PROGRAMFILES64 포인트 : C : \ 프로그램 파일 . x64 애플 리케이션을 설치할 때 $ PROGRAMFILES64을 사용합니다.

$ COMMONFILES , $ COMMONFILES32 , $ COMMONFILES64

일반 파일 디렉토리. (일반적으로 이것은 응용 프로그램간에 공유되는 구성 요소에 대한 디렉터리입니다 문자 : \ Program Files \ Common Files에 C 있지만 런타임에 감지). 이 Windows x64에서 $ COMMONFILES와 $ COMMONFILES32 지점으로 C : \ 프로그램 파일 (x86)를 \ Common Files에 $ COMMONFILES64 가리키는 반면 에 C : \ 프로그램 파일 \ Common Files에 . x64 애플 리케이션을 설치할 때 $ COMMONFILES64을 사용합니다.

$ 데스크톱

Windows 데스크톱 디렉토리 (일반적 으로 C : \ Windows \ 바탕 화면 있지만 런타임에 감지). 이 상수의 컨텍스트 (모든 사용자 또는 현재 사용자)에 따라 SetShellVarContext의 설정. 기본값은 현재 사용자입니다.

$ EXEDIR

설치 실행 파일을 포함하는 디렉토리 (기술적으로이 변수를 수정할 수 있지만, 그것은 아마도 좋은 생각이 아닙니다.)

$ EXEFILE

설치 프로그램 실행 파일의 기본 이름입니다.

$ EXEPATH

설치 프로그램 실행 파일의 전체 경로.

$ {NSISDIR}

NSIS가 설치된 경로가 포함되어 상징. 당신은 NSIS 디렉토리 예 : 아이콘에 자원 UIs 등에 전화를하려는 경우에 유용

makensis와 같은 장소 (윈도우 기본값)의 데이터를 보호하기위한 지원과 함께 컴파일되면 다른 플랫폼에서 그것을 (정보에 대한 INSTALL 파일을 참고) 컴파일 시간에 설정되어 makensis 같은 장소에있다. 두 경우에 당신은 NSISDIR 환경 변수를 설정하여 런타임에 그것을 수정할 수 있습니다. 참조 섹션 3.1.3을 자세한 내용은.

WINDIR $

Windows 디렉터리 (일반적 으로 C : \ Windows 또는 C : \ WINNT 하지만 런타임에 감지).

$ SYSDIR

Windows 시스템 디렉토리 (보통 C : \ WINDOWS \ SYSTEM 또는 C : \ WINNT \ SYSTEM32 하지만 런타임에 감지).

$ TEMP

시스템 임시 디렉토리 (보통 C : \ WINDOWS \ TEMP 하지만 런타임에 감지).

$ STARTMENU

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

$ SMPROGRAMS

시작 메뉴 프로그램 폴더 (당신이 STARTMENU \ 프로그램 $를 원한다면 언제든지 이것을 사용). 이 상수의 컨텍스트 (모든 사용자 또는 현재 사용자)에 따라 SetShellVarContext의 설정. 기본값은 현재 사용자입니다.

$ SMSTARTUP

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

$ QUICKLAUNCH

IE4 액티브 데스크톱 이상의 빠른 실행 폴더에 있습니다. 빠른 실행을 사용할 수없는 경우, 단순히 $와 동일 TEMP를 반환합니다.

$ 서류

문서 디렉토리. 현재 사용자에 대한 일반적인 경로는 \ 문서 및 설정 \ 홍길동 \ 내 문서 : C . 이 상수의 컨텍스트 (모든 사용자 또는 현재 사용자)에 따라 SetShellVarContext의 설정. 기본값은 현재 사용자입니다.

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

$ SENDTO

메뉴 바로 가기 항목 보내기를 포함 디렉토리.

최근 $

사용자의 최근에 사용한 문서에 대한 바로 가기가 포함되어 있습니다 디렉토리.

$ 즐겨찾기

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

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

$ MUSIC

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

이 상수는 ME 이상, Windows XP에서 사용할 수 있습니다.

$ 사진

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

이 상수는 윈도우 2000, XP, ME 이상에서 사용할 수 있습니다.

$ 비디오

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

이 상수는 ME 이상, Windows XP에서 사용할 수 있습니다.

$ NETHOOD

내 네트워크 환경 / 네트워크 환경 폴더에 존재할 수있는 링크 개체를 포함 디렉토리.

이 상수는 Internet Explorer 4와 액티브 데스크톱을 설치하지와 Windows 95에서 사용할 수 없습니다.

$ 글꼴

시스템의 폰트 디렉토리.

$ 템플릿

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

$ APPDATA

응용 프로그램 데이터 디렉토리. 현재 사용자 경로의 탐지 위의 인터넷 익스플로러 4가 필요합니다. 모든 사용자가 경로의 탐지는 Internet Explorer 5 이상이 필요합니다. 이 상수의 컨텍스트 (모든 사용자 또는 현재 사용자)에 따라 SetShellVarContext의 설정. 기본값은 현재 사용자입니다.

이 상수는 Internet Explorer 4와 액티브 데스크톱을 설치하지와 Windows 95에서 사용할 수 없습니다.

$ LOCALAPPDATA

지역 (nonroaming) 응용 프로그램 데이터 디렉토리.

이 상수는 Windows 2000 이상에서 사용할 수 있습니다.

$ PRINTHOOD

프린터 폴더에 존재할 수있는 링크 개체를 포함 디렉토리.

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

$ INTERNET_CACHE

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

이 상수는 Internet Explorer 4와 액티브 데스크톱을 설치하지 설치된 Windows 95 및 Windows NT에서 사용할 수 없습니다.

$ 쿠키

Internet Explorer의 쿠키 디렉토리.

이 상수는 Internet Explorer 4와 액티브 데스크톱을 설치하지 설치된 Windows 95 및 Windows NT에서 사용할 수 없습니다.

$ 연혁

인터넷 익스플로러의 역사 디렉토리.

이 상수는 Internet Explorer 4와 액티브 데스크톱을 설치하지 설치된 Windows 95 및 Windows NT에서 사용할 수 없습니다.

$ 프로필

사용자의 프로필 디렉터리. 일반적인 경로는 \ 문서 및 설정 \ 푸 : C .

이 상수는 Windows 2000 이상에서 사용할 수 있습니다.

$ ADMINTOOLS

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

이 상수는 Windows 2000, ME 이상에서 사용할 수 있습니다.

$ 자원

테마와 기타 Windows 리소스를 저장하는 리소스 디렉토리 (일반적 으로 C : \ Windows \ 자원 있지만 런타임에 감지).

이 상수는 Windows XP 이상에서 사용할 수 있습니다.

RESOURCES_LOCALIZED $

테마와 기타 Windows 리소스를 저장하는 지역화된 리소스 디렉토리 (일반적 으로 C : \ Windows \ 리소스 \ 1033 있지만 런타임에 감지).

이 상수는 Windows XP 이상에서 사용할 수 있습니다.

$ CDBURN_AREA

파일이 CD에 구운 것으로 대기 디렉토리가 저장됩니다.

이 상수는 Windows XP 이상에서 사용할 수 있습니다.

HWNDPARENT $

부모 윈도우의 진수 HWND.

$ PLUGINSDIR

플러그인의 첫 번째 사용 또는 호출시 생성된 임시 폴더에 대한 경로 InitPluginsDir . 때 설치 프로그램 종료이 폴더가 자동으로 삭제됩니다. 이렇게하면이 폴더에 INI 파일을 보유하는 이상적인 폴더를 만들어 InstallOptions 는 플러그인을 필요로 일할 수있는, 스플래시 플러그인에 대한 비트맵 또는 기타 파일을 만듭니다.

문자열에 사용 4.2.4 상수

$ $

$을 나타내기 위해 사용합니다.

$ \ R

캐리지 리턴 (\ R)를 나타내기 위해 사용합니다.

$ \ N

(\ n)이 개행을 나타내는 데 사용합니다.

$ \ t

탭 (\ t) 대표 사용합니다.

4.3 레이블

레이블 고토 지시하거나, 다양한 분기 지침 (예 :의 대상이다 IfErrors , MessageBox , IfFileExists 및 StrCmp ). 라벨 섹션 또는 함수 내에 있어야합니다. 레이블은 그들이, 레이블을 선언 인치 거주하고 간단하게 사용하는 섹션이나 함수에서 쓰인에만 액세스할 수 있습니다 즉, 범위의 지역입니다

MyLabel :

$, 또는 0-9,, +, - 라벨로 시작할 수 없습니다. 그들이 필요한 다양한 지침 레이블을 지정하면 빈 문자열 ( "")과 0 모두 모두 다음 명령어를 (아무 고토가 발생하지 않을 뜻) 대표 것을 기억 하여라. 마침표 (.)로 시작하는 레이블은 (당신이 설치 프로그램에서 제거 글로벌 라벨로 이동할 수 있지만, 그 반대도 마찬가지) 어떤 함수 또는 섹션에서 이동할 수 있습니다 즉, 글로벌입니다.

4.4 상대 점프

이름에서 알 수 있듯이 라벨과는 달리, 상대 점프들은에서 호출되는 장소에 상대입니다. 당신이 레이블을 사용하여 어디서나 당신이 상대 점프를 사용할 수 있습니다. 상대 점프는 숫자로 표시됩니다. 다음 명령 (기본 발전)에 한 점프,이 하나의 명령을 생략하고 현재 명령어에서 두번째 명령에 갈 것이며, -2는 후방이 지침을 이동하며, 10 9 지시 사항을 건너 것이며, 열째로 도약 현재 명령의 명령.

명령은 설치 프로그램이 실행되면 런타임에서 실행되는 모든 명령입니다. MessageBox , 고토 , GetDLLVersion , FileRead , SetShellVarContext이 모든 지침.입니다 AddSize ,  , SectionGroup , SectionEnd , SetOverwrite (이하 모든 컴파일러 플래그 ) 이름 , SetFont , LangString은 그들이 컴파일 시간에 실행되기 때문에, 지시하지 않습니다.

예 :

 고토 2
   MessageBox MB_OK "당신도이 메시지 상자를 보지 못할 것이다"
 MessageBox MB_OK "는 마지막 메시지가 생략되었다,이 하나가 표시될 것입니다"
 고토 사
 MessageBox MB_OK "은 다음과 같은 메시지가 생략됩니다"
 고토 3
 MessageBox MB_OK "당신도이 메시지 상자를 보지 못할 것이다"
 고토 -3
 MessageBox MB_OK는 "완료"

유의 매크로 삽입은 그것이 상대 점프 올 때 하나 수업으로 간주되지 않습니다. 매크로는 상대 점프이 적용되기 전에 확장됩니다, 그래서 상대적으로 점프가 삽입된 매크로 내부 코드로 이동할 수 있습니다. 다음 코드는 예를 들어, 매크로를 생략하지 않습니다. 그것은 메시지 상자를 표시합니다.

! 매크로 relative_jump_test
  MessageBox MB_OK "는 첫번째 매크로 라인"
  MessageBox MB_OK "둘째 매크로 라인"
! macroend

고토 2
! insertmacro relative_jump_test

4.5 페이지

각 (비 자동) NSIS 설치 관리자 페이지의 집합을 가지고 있습니다. 각 페이지는 페이지 또는 사용자의 기능 (함께 만들어 사용자 정의 페이지 - 내장 NSIS가 될 수 nsDialogs 또는 InstallOptions 예).

당신이 페이지의 주문, 모양 및 동작을 제어할 수있는 스크립트를 사용합니다. 당신은 페이지를 건너뛸 수 있습니다, 그들은 흰색 페인트, 사용자가 특정 조건이 충족 때까지 특정 페이지에 남아 추가 페이지를 표시, 입력 등을 위해 맞춤 설계된 페이지를 표시하도록 강요. 이 섹션에서는 위의 모든 제어하는​​ 방법을 배우게됩니다.

페이지에 관한 두 가지 기본 명령어가 있습니다 페이지 와 UninstPage가 . 처음 설치에 페이지를 추가, 두 번째는 제거 프로그램에 페이지를 추가합니다. 그 두 위에있다 PageEx 하나 하나에 페이지를 추가하고 옵션을 더욱 양의 수 있도록 명령. PageEx은 당신이 밖으로 설정되어있는 기본값을 사용하는 대신 추가하고 특정 페이지에 옵션을 설정할 수 있습니다 PageEx를 .

주문 4.5.1

페이지 주문 순서에 의해 간단하게 설정 페이지 , UninstPage 및 PageEx는 스크립트에 나타납니다. 예를 들면 다음과 같습니다

 페이지 라이선스
 페이지 구성 요소
 페이지 디렉토리
 페이지 instfiles
 UninstPage uninstConfirm
 UninstPage instfiles

이 코드는 예전처럼 설치 먼저 다음의 라이센스 페이지에서 다음 구성 요소 선택 페이지에서 디렉터리 선택 페이지와 섹션이 실행되고 마지막으로 설치 로그를 표시하도록 NSIS 알려 준다. 제거 프로그램이 먼저 설치 제거 확인 페이지 다음 제거 로그를 표시합니다.

당신은 두 번 이상 같은 페이지 유형을 지정할 수 있습니다.

어떤 설치 페이지 명령이 사용되지 않으면 하위 호환성을 위해 이전 NSIS 스크립트에 다음과 같은 설치 페이지가 추가됩니다 라이센스 (경우 LicenseText 및 LicenseData가 지정되었다), 부품 (경우 ComponentText가 지정하고있다습니다 하나 이상의 눈에 띄는 섹션), 디렉토리 (경우 DirText가 지정한)와 instfiles.에는 제거 프로그램 페이지 명령어가없는 경우, 다음 제거 페이지가 추가됩니다 : 제거 확인 페이지 (경우 UninstallText가 지정한)와 instfiles 있습니다. 이 메소드는 새로운 표준 언어 문자열을 사용할 수 있기 때문에 페이지 명령을 사용하는 스크립트가 좋습니다 변환, 사용 중지됩니다.

4.5.2 페이지 옵션

각 페이지는 모양과 행동 방식을 정의하는 데이터의 독특한 세트를 가지고 있습니다. 이 섹션은 각 페이지 사용의 유형과 방법을 당신이 그것을 설정할 수있는 데이터를 설명합니다. 콜백 함수는 아래에서 설명하고 있으며이 섹션에 처리되지 않습니다.

아래 목록은 명령은 특정 페이지 유형에 영향을 미칠 것을 보여줍니다. 달리 언급되지 않는 한,이 명령에서 퇴원을 모두 사용할 수 PageEx의 블록. 내부 사용한 경우 PageEx의 블록들은 단지 정한중인 현재 페이지에 적용됩니다 PageEx를 다른 그들은 다른 모든 페이지에 대한 기본값을 설정합니다.

라이센스 페이지

구성 요소 선택 페이지

디렉터리 선택 페이지

UN / 설치 로그 페이지

확인 페이지 제거

페이지 캡션 사용 설정하려면 캡션 .

4.5.3 콜백

사전 기능, 쇼 제작 기능과 휴가 기능 : 각 내장 페이지는 세 콜백 함수가 있습니다. 페이지 전에 미리 기능 페이지가 만들어집니다 직전이라고, 쇼 기능은 그것이 만들어지고 그것이 표시되기 전에하고 사용자가 다음 버튼을 눌렀을했다 직후두고 함수가 호출되며 직후라고합니다 떠났어.

  • 사전 기능은 사용 페이지를 건너뛸 수 있도록 중지를 .
  • 쇼 기능은 당신이 페이지의 사용자 인터페이스를 조정할 수 있습니다 CreateFont , SetCtlColors , SendMessage 등.
  • 휴가 기능은 사용자가 사용하여 현재 페이지에서 계속을 강제 수 있도록 중지를 .

사용자 정의 페이지는 두개의 콜백 함수도 필요하지만 그것을 만들어 하나 하나 그냥 내장 페이지에 휴가 - 함수처럼 행동 휴가 기능이 있습니다.

예 :

 페이지에서 라이센스 skipLicense ""stayInLicense
 페이지 정의 customPage "" ": 사용자 정의 페이지"
 페이지 instfiles

 기능 skipLicense
   MessageBox MB_YESNO는 "당신은 라이선스 페이지를 건너 뛰시겠습니까?" IDNO 없음
     중지
   번호 :
 FunctionEnd

 기능 stayInLicense
   MessageBox MB_YESNO는 "당신이 라이센스 페이지에 가실 래요?" IDNO 없음
     중지
   번호 :
 FunctionEnd

 기능 customPage
   GetTempFileName $ R0
   파일 / oname = $ R0 customPage.ini
   InstallOptions :: 대화 $ R0
   R1 $ 열어요
   한 StrCmp $ R1 "취소"
   한 StrCmp $ R1 "뒤로"
   한 StrCmp $ R1 "성공"
   오류 : MessageBox MB_OK | MB_ICONSTOP "InstallOptions 오류 : $ \ R $ \ N $ R1"
   완료 :
 FunctionEnd

4.5.4 페이지

사용자 정의 [creator_function] [leave_function] [자막] [/ ENABLECANCEL]
  또는
internal_page_type [pre_function] [show_function] [leave_function] [/ ENABLECANCEL]

설치 페이지가 추가합니다. 사용자 정의 페이지 대와 콜백 함수에 대한 내장에 대한 자세한 내용은 위의 섹션을 참조하십시오.

internal_page_type가 될 수 있습니다 :

  • 라이센스 - 라이센스 페이지
  • 구성 요소 - 구성 요소 선택 페이지
  • 디렉토리 - 설치 디렉토리 선택 페이지
  • instfiles 섹션이 실행되어 설치 페이지 -
  • uninstConfirm - 확인 페이지를 제거

설치 프로그램의 마지막 페이지는 혼란을 방지하기 위해 비활성화는 취소 버튼이 있습니다. 어쨌든 그것을 활성화하기 위해, 사용 / ENABLECANCEL .

4.5.5 UninstPage

사용자 정의 [creator_function] [leave_function] [자막] [/ ENABLECANCEL]
  또는
internal_page_type [pre_function] [show_function] [leave_function] [/ ENABLECANCEL]

제거 프로그램 페이지가 추가합니다. 사용자 정의 페이지 대와 콜백 함수에 대한 내장에 대한 자세한 내용은 위의 섹션을 참조하십시오.

참조 페이지 의 가능한 값을 internal_page_type .

4.5.6 PageEx

[취소.] (정의 | uninstConfirm | 사용권 | 부품 | 디렉토리 | instfiles)

취소하는 경우 설치 프로그램 페이지 또는 제거 페이지를 추가합니다. 접두사가 사용되었습니다. 모든 PageEx가 일치해야합니다 PageExEnd을 . PageEx 블록에서는이 페이지에만 해당하며 다른 페이지 사용하지 않을 옵션을 설정할 수 있습니다. 설정되지 않은 옵션은 아무것도 설정되지 않았다면 PageEx 블록이나 기본 설정 밖에 있었는지 되돌아갑니다. 페이지 사용을 위해 하위 캡션을 설정하려면 캡션 이나 SubCaption 기본값을 설정합니다. PageEx 사용으로 설정된 페이지에 대해 콜백 함수를 설정하려면 PageCallbacks . 사용자 정의 페이지 대 내장에 대한 자세한 내용은 위의 섹션을 참조하십시오.

예제 사용법 :

 PageEx 라이센스
   LicenseText "추가 정보"
   LicenseData rea​​dme.rtf
 PageExEnd

 PageEx 라이센스
   LicenseData license.txt
   LicenseForceSelection 확인란
 PageExEnd

4.5.7 PageExEnd

엔드 PageEx 블록.

4.5.8 PageCallbacks

([creator_function] [leave_function]) | ([pre_function] [show_function] [leave_function])

사용하여 정의 페이지에 대한 콜백 함수를 설정합니다 PageEx을 . 단지 안에서 사용할 수있는 PageEx의 블록. 콜백 함수에 대한 자세한 내용은 위의 섹션을 참조하십시오.

PageEx 라이센스
  PageCallbacks licensePre licenseShow licenseLeave
PageExEnd

4.6 섹션

각 NSIS 설치 프로그램은 하나 이상의 섹션이 포함되어 있습니다. 이러한 섹션 각각 만들어 수정하고, 다음 명령으로 종료됩니다.

  • 각 섹션에는 0 개 이상의 지침이 들어 있습니다.
  • 섹션은 결과 설치 프로그램에 의해 순서대로 실행되며, ComponentText가 설정되어 있으면, 사용자는 각 보이는 섹션을 비활성화 / 활성화하는 옵션이 있습니다.
  • 섹션의 이름은 '제거'이다 또는 '취소.'접두사가 붙은 경우는 제거 섹션입니다.

4.6.1 섹션 명령

4.6.1.1 AddSize

size_kb

현재 섹션의 디스크 공간 추가 "size_kb"킬로바이트을 필요로하는 설치 프로그램을 알려줍니다. 전용 섹션 내에서 유효 (섹션의 외부 또는 함수에서 아무런 효과가 없습니다).

섹션
AddSize 500
SectionEnd

4.6.1.2 섹션

[/ O] [([] |! [-]) 섹션 _] [section_index_output]

시작하고 새 섹션을 엽니다. 섹션 _가 비어 있으면, 생략, 또는로 시작 - 그리고 그것은 숨겨진 섹션이며, 사용자가 그것을 해제하는 옵션을 가지고 있지 않습니다. 섹션 이름 '제거'이다 또는 '취소.'접두사가 붙은 경우, 그것은 설치 제거 섹션입니다. 경우 section_index_output가 지정되어, 매개 변수가 될 것입니다 ! 정의된 섹션 지수 (사용할 수있는 함께 SectionSetText 등). 섹션 이름!로 시작하는 경우 섹션은 굵게로 표시됩니다. / o 스위치가 지정되면, 섹션은 기본적으로 선택되지 않은 것입니다.

섹션 "숨겨진 섹션"
SectionEnd

섹션 # 숨겨진 섹션
SectionEnd

섹션 "! 굵게 섹션"
SectionEnd

섹션 / O "옵션"
SectionEnd

섹션 SEC_IDX "을 무언가를 설치"
SectionEnd

섹션 인덱스를 액세스하려면 곱슬 브래킷을 사용해야하며 코드가 스크립트의 섹션 아래에 위치해야합니다.

제 test1 sec1_id
SectionEnd

제 TEST2 sec2_id
SectionEnd

기능. onInit
  SectionGetText $ {sec2_id} 0달러
  MessageBox MB_OK "$ {sec2_id}의 이름 : $ \ N 0달러가"# 올바로 표시합니다 "1 이름 : TEST2 '
FunctionEnd
기능. onInit
  SectionGetText $ {sec2_id} 0달러
  MessageBox MB_OK "$ {sec2_id}의 이름 : $ \ N 0달러는"# 잘못 'test1 $ {sec2_id}의 이름'을 표시합니다
    # 더하기 경고 진술 :
    # 알 수없는 상수 / 변수 '{sec2_id} "무시 감지
FunctionEnd

제 test1 sec1_id
SectionEnd

제 TEST2 sec2_id
SectionEnd

4.6.1.3 SectionEnd

이 명령은 현재 열린 섹션을 닫습니다.

4.6.1.4 SectionIn

insttype_index [insttype_index] [RO]

이 명령은 어떤 설치 유형 (참조 지정 InstType을 여러 SectionIn 명령 인치 활성화된 상태로) 현재 구역의 기본값은 (그들이 결합되어) 지정할 수 있습니다. 당신은 매개 변수로 소유주를 지정하면 다음 섹션은 사용자의 상태를 변경할 수 없습니다 즉, 읽기 전용으로 될 것입니다. 사용하여 정의 먼저 설치 유형InstType는 등등 앞으로 2, 1을 인덱스하고있다.

InstType "전체"
InstType "최소화"

섹션 "섹션"
SectionIn 1 2
SectionEnd

섹션 "다른 섹션"
SectionIn 일
SectionEnd

4.6.1.5 SectionGroup

[/ E] section_group_name [index_output]

이 명령은 삽입 섹션 그룹을. 섹션 그룹으로 폐쇄해야 SectionGroupEnd , 1 개 이상의 섹션을 포함해야합니다. 섹션 그룹 이름이!으로 시작하면 그 이름은 굵은 글꼴로 표시됩니다. / E가 있으면 섹션 그룹은 기본적으로 확장됩니다. 경우 index_output가 지정되어, 매개 변수가 될 것이다! 섹션 지수 (사용할 수 있습니다 그걸로 정의 SectionSetText 등). 있다면 이름이 접두사는 '유엔.' 섹션 그룹은 제거 섹션 그룹입니다.

"어떤 물건을"SectionGroup
섹션 "섹션"
SectionEnd
섹션 "다른 섹션"
SectionEnd
SectionGroupEnd

4.6.1.6 SectionGroupEnd

열 섹션 그룹을 닫습니다 SectionGroup을 .

4.6.2 제거 섹션

'제거'라는 특별 섹션이 제거 프로그램을 생성하기 위해 생성되어야합니다. 이 섹션은 시스템에서 모든 파일, 레지스트리 키 등 등 설치 프로그램으로 설치했다 그것을 제거합니다. 다음은 간단한 설치 제거 섹션의 예입니다 :

섹션은 "제거"
  삭제 셀프 (아래의 이유는이 작품 설명을 참조), $ INSTDIR \ Uninst.exe 삭제
  삭제 $ INSTDIR \ myApp.exe
  RMDIR $ INSTDIR
  DeleteRegKey HKLM SOFTWARE \ myApp
SectionEnd

최초의 삭제 명령어 작품 (제거 프로그램을 삭제) 제거는 투명하게 제거하기위한 시스템 임시 디렉토리에 복사되기 때문입니다.

제거 프로그램 코드에서, $ INSTDIR가 제거 프로그램이 자리하고있는 디렉토리가 포함되어 있습니다. 그것은 않습니다 없습니다 반드시 그것이 설치 프로그램에 포함된 동일한 값을 포함합니다.

4.7 함수

함수들은 0 개 이상의 지시 사항을 포함하는 그 섹션과 비슷합니다. 사용자 함수는 직접적으로, 대신 그들이 call 명령을 사용하여 섹션에서 호출되는 설치 프로그램에 의해 호출되지 않습니다. 특정 이벤트가 발생할 때 콜백 함수는 설치 프로그램에 의해 호출됩니다.

기능은 섹션이나 다른 함수 외부에서 선언해야합니다.

4.7.1 함수 명령

4.7.1.1 기능

[function_name]

시작하고 새로운 기능을 엽니다. 함수 이름으로 시작 "." (예 : ". 어쨌든")는 일반적으로 콜백 함수에 대한 보유합니다. 함수 이름으로 시작 "유엔." 제거 프로그램에서 생성됩니다 기능입니다. 따라서 정상적인 설치 섹션 및 함수 제거 기능 및 제거 섹션에 연락해서 기능이 정상적인 기능을 호출할 수 없습니다 제거할 수 없습니다.

기능 FUNC
  # 일부 명령어
FunctionEnd

섹션
  FUNC를 불러
SectionEnd

4.7.1.2 FunctionEnd

이 명령은 현재 열려있는 기능을 닫습니다.

4.7.2 콜백 함수

당신은 설치의 특정 지점에서 설치 프로그램에 의해 호출됩니다 특별한 이름을 가지고 콜백 함수를 만들 수 있습니다. 아래는 현재 사용 가능한 콜백의 목록입니다 :

4.7.2.1 설치 콜백

4.7.2.1.1. onGUIInit

이 콜백은 첫 번째 페이지가로드되고 설치 대화 상자가 사용자 인터페이스를 조정할 수 있도록 표시되어 있습니다 직전에 호출됩니다.

예 :

 ! 포함 "WinMessages.nsh"

 기능. onGUIInit
   # 1028는 브랜딩 텍스트 컨트롤의 ID입니다
   GetDlgItem $ R0 $ HWNDPARENT 1028
   CreateFont $ R1 "굴림"10 700
   SendMessage $ R0 $ {WM_SETFONT} $ R1 0
   # 빨간색에 흰색과 텍스트 색상을 배경 색상을 설정합니다
   SetCtlColors $ R0 FFFFFF FF0000
 FunctionEnd
4.7.2.1.2. onInit

설치 프로그램이 거의 초기화 완료되면이 콜백이 호출됩니다. '. onInit'함수가 호출하는 경우 중지 , 설치 즉시 종료됩니다.

이게 어디에 사용될 수있는지를 두 가지 예입니다 :

 기능. onInit
   MessageBox MB_YESNO는 "이 설치됩니다. 계속하시겠습니까?" IDYES NoAbort
     중지는, 종료 인스톨러를 일으 킵니다.
   NoAbort :
 FunctionEnd

또는 :

 기능. onInit
   ReadINIStr $ INSTDIR $ WINDIR \ wincmd.ini 구성 InstallDir
   StrCmp $ INSTDIR ""0 NoAbort
     MessageBox MB_OK "윈도우 사령관을 찾을 수 없습니다. 경로를 설치 가져올 수 없습니다."
     중지는, 종료 인스톨러를 일으 킵니다.
   NoAbort :
 FunctionEnd
4.7.2.1.3. onInstFailed

설치가 (이것은 파일 또는 사용한 설치 스크립트를 추출할 수 없다면 실패한 후 사용자가 '취소'버튼을 눌렀을 때이 콜백이 호출됩니다 중지 명령).

예 :

  기능. onInstFailed
    MessageBox MB_OK "다음에 다시 만나자."
  FunctionEnd
4.7.2.1.4. onInstSuccess

설치가 제대로 설치 창 문을 닫습니다 (경우에 사용자가 클릭 후 '닫기'일지 모르지만, 전에, 성공했을 때이 콜백이 호출됩니다 AutoCloseWindow 또는 SetAutoClose가 false로 설정됩니다.)

예 :

  기능. onInstSuccess
    MessageBox MB_YESNO "축하합니다, 그것은 일했습니다. 도움말보기?" IDNO NoReadme
      EXEC Notepad.exe가;보기를 추가하거나간에, 당신이 원하면.
    NoReadme :
  FunctionEnd
4.7.2.1.5. onGUIEnd

이 콜백은 설치 창이 닫힙니다 직후라고합니다. 필요한 경우 플러그인에 관련된 사용자 인터페이스를 해방하기 위하여 그것을 사용하십시오.

4.7.2.1.6. onMouseOverSection

섹션 트리 위에 마우스 위치가 변경되었습니다 때마다이 콜백이 호출됩니다. 이것은 예를 들어 각 섹션에 대한 설명을 설정할 수 있습니다. 마우스가 이상 현재 $ 0에, 일시적으로, 저장되어되는 섹션 ID입니다.

예 :

  기능. onMouseOverSection
    FindWindow $ R0 "# 32770" ""$ HWNDPARENT
    GetDlgItem $ R0 R0 $ 1,043; 설명 항목은 (UI에 추가되어야 함)

    StrCmp 0달러 0 ""2
      SendMessage $ R0 $ {WM_SETTEXT} 0 "STR : 첫 번째 섹션 설명"

    0달러 1 ""2를 StrCmp
      SendMessage $ R0 $ {WM_SETTEXT} 0 "STR : 두 번째 섹션 설명"
  FunctionEnd
4.7.2.1.7. onRebootFailed

경우이 콜백이 호출됩니다 다시 부팅이 실패합니다. WriteUninstaller , 플러그인 , 파일 및 WriteRegBin가 이 콜백에서 사용해서는 안됩니다.

예 :

 기능. onRebootFailed
   MessageBox MB_OK가 | MB_ICONSTOP "재부팅 실패를 수동으로 재부 팅을하시기 바랍니다.." / SD IDOK
 FunctionEnd
4.7.2.1.8. onSelChange

선택을 변경하는 경우에 호출 구성 요소 페이지 . 와 함께 사용하기위한 유용한 SectionSetFlags 및 SectionGetFlags .

선택 변경 섹션 선택 및 설치 유형의 변화를 모두 포함합니다.

4.7.2.1.9. onUserAbort

사용자가 '취소'버튼을 눌렀을 때이 콜백이 호출되고, 설치가 이미 실패하지 않았습니다. 이 함수를 호출하는 경우 중지 , 설치가 중단되지 않습니다.

예 :

 기능. onUserAbort
   MessageBox MB_YESNO "중단 설치?" IDYES NoCancelAbort
     중지는, 종료하지 않도록 설치됩니다.
   NoCancelAbort :
 FunctionEnd
4.7.2.1.10. onVerifyInstDir

이 콜백은 설치 경로가 설치 유효 여부를 제어할 수 있습니다. 이 코드는 사용자가 설치 디렉토리를 변경할 때마다 호출됩니다, 그래서 가진 미친 짓하지 말아야 할 MessageBox 이나 좋아하는 있습니다. 이 함수를 호출하는 경우 중지 , $ INSTDIR의 설치 경로는 무효로 간주된다.

예 :

  기능. onVerifyInstDir
    IfFileExists 달러 INSTDIR \ Winamp.exe PathGood
      중지, $ INSTDIR는 윈앰프 디렉토리가 아닌 경우, 우리가 거​​기서을 설치해서는 안된다
    PathGood :
  FunctionEnd

4.7.2.2 제거 콜백

4.7.2.2.1 un.onGUIInit

이 콜백은 첫 번째 페이지가로드되고 설치 대화 상자가 사용자 인터페이스를 조정할 수 있도록 표시되어 있습니다 직전에 호출됩니다.

한 번 되세요 . onGUIInit 예를 들어.

4.7.2.2.2 un.onInit

제거 프로그램은 거의 초기화 완료되면이 콜백이 호출됩니다. 'un.onInit'기능이 중지 호출하는 경우, 설치 제거 프로그램이 즉시 종료됩니다. 필요한 경우이 기능이 INSTDIR를 확인 및 / 또는 $를 수정할 수 없습니다.

이게 어디에 사용될 수있는지를 두 가지 예입니다 :

  기능 un.onInit
    MessageBox MB_YESNO는 "이것은 제거합니다. 계속하시겠습니까?" IDYES NoAbort
      중지는, 설치 제거 프로그램이 종료됩니다.
    NoAbort :
  FunctionEnd

또는 :

  기능 un.onInit
    IfFileExists $ INSTDIR \ myfile.exe 발견
      Messagebox MB_OK는 "잘못된 경로 제거"
      중지
    발견 :
  FunctionEnd
4.7.2.2.3는 un.onUninstFailed

제거가 (이것은 사용하면 실패한 후 사용자가 '취소'버튼을 눌렀을 때이 콜백이 호출됩니다 중지 명령을 하거나 실패).

예 :

  기능 un.onUninstFailed
    MessageBox MB_OK "다음에 다시 만나자."
  FunctionEnd
4.7.2.2.4 un.onUninstSuccess

제거 바로 설치 창 문을 닫습니다 (경우에 사용자가 클릭 후 '닫기'일지 모르지만, 전에, 성공했을 때이 콜백이 호출됩니다 SetAutoClose가 false로 설정된 경우) ..

예 :

  기능 un.onUninstSuccess
    MessageBox MB_OK "축하,​​ 그것은 없어 졌어요."
  FunctionEnd
4.7.2.2.5 un.onGUIEnd

이 콜백은 제거 창이 닫힙니다 직후라고합니다. 필요한 경우 플러그인에 관련된 사용자 인터페이스를 해방하기 위하여 그것을 사용하십시오.

4.7.2.2.6는 un.onRebootFailed

경우이 콜백이 호출됩니다 다시 부팅이 실패합니다. WriteUninstaller , 플러그인 , 파일 및 WriteRegBin가 이 콜백에서 사용해서는 안됩니다.

예 :

 기능 un.onRebootFailed
   MessageBox MB_OK가 | MB_ICONSTOP "재부팅 실패를 수동으로 재부 팅을하시기 바랍니다.." / SD IDOK
 FunctionEnd
4.7.2.2.7 un.onSelChange

선택을 변경하는 경우에 호출 구성 요소 페이지 . 와 함께 사용하기위한 유용한 SectionSetFlags 및 SectionGetFlags .

선택 변경 섹션 선택 및 설치 유형의 변화를 모두 포함합니다.

4.7.2.2.8 un.onUserAbort

사용자가 '취소'버튼을 눌렀을 및 제거가 이미 실패하지 않은 경우이 콜백이 호출됩니다. 이 기능은 중지 호출하면 설치가 중단되지 않습니다.

예 :

  기능 un.onUserAbort
    MessageBox MB_YESNO "중지는 제거?" IDYES NoCancelAbort
      중지는; 제거 프로그램이 종료되지하게됩니다.
    NoCancelAbort :
  FunctionEnd

4.8 설치 속성

4.8.1 일반적인 속성

설치 프로그램의 모든 조정 속성 아래 명령. 이러한 특성은 설치,보기와 페이지는 설치 프로그램의 이름을 지정하는 방법을 각 페이지의 각 부분에 표시되는 텍스트로, 설치 프로그램에 존재하는을 포함하여 기능, 방법을 제어, 왜 아이콘이 설치 관리자가 사용하는, 기본 설치 디렉토리, 무슨 파일 그것은 밖으로 기록수록.이러한 속성은 섹션이나 함수를 제외하고 파일에서 아무 곳이나 설정할 수 있습니다.

기본값은 굵게하고 밑줄

4.8.1.1 AddBrandingImage

(왼쪽 | 오른쪽 | 처음으로 | 아래) (폭 | 높이) [패딩]

브랜딩 왼쪽 상단, 하단에있는 이미지, 혹은 오른쪽의 설치를 추가합니다. 그 크기는 지정된 너비 / 높이에 따라 설정됩니다, 설치 폭 / 높이와 설치 글꼴. 최종 크기는 항상 요청한 것을 없으며, 실제 크기에 대한 명령의 출력에서​​ 본다 구. 이것이 설치 글꼴에 의존하기 때문에, 당신은 AddBrandingImage 전에 SetFont를 사용해야합니다. 기본 패딩 값은 2입니다.

AddBrandingImage은 이미지에 대한 자리 표시 자에 추가됩니다. 런타임에 이미지 자체를 설정하려면 사용 SetBrandingImage를 .

AddBrandingImage 100를 떠난
AddBrandingImage 오른쪽 50
AddBrandingImage 톱 20
AddBrandingImage 바닥 35
AddBrandingImage 100 5 남겨

4.8.1.2 AllowRootDirInstall

진실 | 거짓

설치는 드라이브의 루트 디렉토리, 또는 직접적으로 네트워크 공유로 활성화되어 있는지 여부를 제어. 설치로 디렉토리 (그리고 나중에, 제거) \ 또는 \ \ 서버 \ 공유 : C를 선택하는 것을 방지할 안전한 동작을 변경하려면 'true'로 설정합니다. 추가 디렉터리 선택 페이지 customizability을 보려면 . onVerifyInstDir을 .

4.8.1.3 AutoCloseWindow

진실 | 거짓

완료되면 설치 창이 자동으로 닫힙니다 여부를 설정합니다. 이것은 사용 섹션에서 overrideable입니다 SetAutoClose을 .

4.8.1.4 BGFont

[font_face [높이 [몸무게] [/ 기울임꼴] [/ 밑줄] [/ 스트라이크]]]

배경 그라데이션의 텍스트를 표시하는 데 사용되는 글꼴을 지정합니다. 컬러 사용 설정하려면 BGGradient을 . 어떤 매개 변수를 지정하지 않으면 기본 글꼴이 사용됩니다. 기본 글꼴은 굵게 및 기울임꼴 타임즈 뉴 로마입니다.

4.8.1.5 BGGradient

[ 오프 | (topc botc [textcolor | notext])]

그라디언트 배경 창을 사용할지 여부를 지정합니다. '끄기'면, 설치 프로그램은 매개 변수가 지정되지 않으면, 파란색 그라데이션으로 검정색 기본가 사용되는, 배경 창을 표시하지 않으며, 별도 top_color 또는 bottom_color은 그라디언트를 만들기 위해 사용됩니다. Top_color 및 bottom_color은 (# 코멘트에 사용될 수 있기 때문에, 오직 최고의 '#'마이너스, HTML에서와 같이 16 진수) 형태 RRGGBB을 사용하여 지정됩니다. 'textcolor'는 물론 지정할 수 있고, 또는 'notext'는 큰 배경 텍스트를 해제하도록 지정할 수 있습니다.

4.8.1.6 BrandingText

/ 트림 (왼쪽 | 오른쪽 | 센터​​) 텍스트

설치 윈도우의 하단에 (기본적으로 그것이 'Nullsoft 설치 시스템 vX.XX'이다) 표시되는 텍스트를 설정합니다. 빈 문자열 ( "")로 설정하면 기본값을 사용, 사용, 공백 문자열을 설정하는 "(공백)". 당신에게 문제가되지 않는 경우 설치 프로그램이 형편 없었 이유를 모두 알 수 있도록, 그것을 기본 둡니다. 훗. TRIMLEFT, / TRIMRIGHT 또는 / TRIMCENTER 문자열의 크​​기로 컨트롤의 크기를 아래로 잘라하기 / 사용하십시오.

변수를 받아들입니다. 변수를 사용하는 경우, 그들을 초기화해야합니다 . onInit .

4.8.1.7 캡션

캡션

외부에서 사용할 경우 PageEx의 블록 : 설치 프로그램의 제목 표시줄의 텍스트를 설정합니다. 기본적으로, 그것은 이름과 함께 지정되어 '이름 설정'이다 이름 명령어. 당신은 그러나 'MyApp 설치'또는 무엇이든 그것을 무시할 수 있습니다. 당신이 빈 문자열 ( "을") 지정하면 (빈 문자열을 달성하기 위해 "기본는 그러나 지정할 수 있음) 사용됩니다."

안에서 사용할 때 PageEx의 블록 : 현재 페이지의 subcaption을 설정합니다.

변수를 받아들입니다. 변수를 사용하는 경우, 그들을 초기화해야합니다 . onInit .

4.8.1.8 ChangeUI

대화 ui_file.exe

대화 상자 (대체 IDD_LICENSE , IDD_DIR , IDD_SELCOM , IDD_INST , IDD_INSTFILES , IDD_UNINST 또는 IDD_VERIFY ui_file.exe에서 동일한 리소스 ID가 대화 상자에서). 당신은 또한 지정할 수 있습니다 '모두'가 같은 UI 파일에서 한 번에 대화 상자의 모든 7을 교체하고자하는 경우에는 대화 상자가 있습니다.몇 가지 예제 UIs은 NSIS 디렉토리 아래 Contrib \ UIs 봐. 내용

  • IDD_LICENSE가 포함되어야합니다 IDC_EDIT1 (RichEdit의 컨트롤).
  • IDD_DIR가 포함되어야합니다 IDC_DIR (편집 상자), IDC_BROWSE (버튼)과 IDC_CHECK1 (확인란).
  • IDD_SELCOM가 포함되어야합니다 IDC_TREE1 (SysTreeView32 제어) 및 IDC_COMBO1을 (콤보 박스).
  • IDD_INST가 포함되어야합니다 IDC_BACK (버튼), IDC_CHILDRECT (정적 컨트롤을 다른 모든 대화 상자의 크기), IDC_VERSTR (정적), IDOK (버튼) 및 IDCANCEL (버튼). 이미지 컨트롤 (와 정적면 SS_BITMAP의 스타일)이 대화 상자에서 찾을 것이다 그것을 위해 기본적으로 사용됩니다 SetBrandingImage.
  • IDD_INSTFILES가 포함되어야합니다 IDC_LIST1 (SysListView32 제어) IDC_PROGRESS (msctls_progress32 제어) 및 IDC_SHOWDETAILS (버튼).
  • IDD_UNINST가 포함되어야합니다 IDC_EDIT1 (편집 상자).
  • IDD_VERIFY가 포함되어야합니다 IDC_STR를 (정적).
ChangeUI 모든 "$ {NSISDIR} \ Contrib \ UIs \ sdbarker_tiny.exe"

4.8.1.9 CheckBitmap

bitmap.bmp

구성 요소 선택 페이지 treeview의 검사에 사용되는 이미지와 비트맵을 지정합니다.

이 비트맵은 96x16 픽셀의 크기가 없다 더 이상 8bpp (256 색) 이상 및 다른 국가 6 16x16 이미지를 (순서가 포함되어야합니다 : 선택 마스크, 선택하지, 체크, 회색, 읽기 전용 및 선택하지, & 체크 ) 읽기 전용. 마스크 색상 (이 영역은 투명합니다)로 마젠타를 사용합니다.

4.8.1.10 CompletedText

본문

매개 변수를 지정하는 경우 설치의 끝에 인쇄되는 기본 텍스트 ( "완료")를 대체합니다. 그렇지 않으면 기본값이 사용됩니다.

변수를 받아들입니다. 변수를 사용하는 경우 메시지가 인쇄되기 전에, 그들은 초기화되어야한다.

4.8.1.11 ComponentText

[본문 [이중] [subtext2]]

구성 페이지에서 기본 텍스트를 변경하는 데 사용됩니다.

텍스트 : 설치 아이콘의 오른쪽에있는 컨트롤 위에 텍스트.

이중 : 설치 유형 선택 옆에있는 텍스트입니다.

subtext2 : 구성 요소 목록의 왼쪽에 텍스트와 아래에 설치 유형.

문자열 ( "") 비어있는 경우 기본값은 문자열이 사용됩니다.

변수를 받아들입니다. 변수를 사용하는 경우 구성 요소 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.12 CRCCheck

 해제 | | 력

설치 관리자가 설치 허용하기 전에 자체에 CRC를 수행할지 여부를 지정합니다. 설치 프로그램을 실행할 때 사용자가 커맨드 라인에서 / NCRC를 사용하며 여러분이 '힘'을 지정하지 않은 경우, CRC가 발생하지 않습니다, 그리고 사용자 (잠재적) 손상된 설치 프로그램을 설치할 수있게됩니다.

4.8.1.13 DetailsButtonText

자세한에게 텍스트를 표시

매개 변수를 지정하는 경우, "보기 세부 사항"의 기본 세부 정보 버튼 텍스트를 대체합니다 (그렇지 않으면 기본값이 사용됩니다.)

변수를 받아들입니다. 변수를 사용하는 경우 설치 로그 (instfiles) 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.14 DirText

[텍스트] [이중] [browse_button_text] [browse_dlg_text]

디렉토리 페이지에서 기본 텍스트를 변경하는 데 사용됩니다.

텍스트 : 설치 아이콘의 오른쪽에있는 컨트롤 위에 텍스트.

이중 : 디렉토리 선택 프레임에서 텍스트입니다.

browse_button_text : 찾아보기 버튼에 대한 텍스트입니다.

browse_dlg_text : "폴더 내용보기 '대화 상자의 텍스트는"찾아보기 "버튼을 클릭하면 표시됩니다.

문자열 ( "") 비어있는 경우 기본값은 문자열이 사용됩니다.

변수를 받아들입니다. 변수를 사용하는 경우 디렉토리 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.15 DirVar

user_var (디렉토리 입 / 출력)

선택한 디렉토리를 포함하는 데 사용되어야하는 어떤 변수를 지정합니다. 이 변수도 기본값을 포함해야합니다. 이것은 쉽게 $ INSTDIR에서 퇴원 가치를 움직일 필요하지 않습니다 두 개의 서로 다른 디렉터리 페이지를 만들 수 있습니다. 기본 변수는 $ INSTDIR입니다. 이것은 사용될 수 PageEx 및 디렉토리와 uninstConfirm 페이지.

VAR ANOTHER_DIR
PageEx 디렉토리
  DirVar $ ANOTHER_DIR
PageExEnd

섹션
  SetOutPath $ INSTDIR
  "file.dat을"파일
  SetOutPath $ ANOTHER_DIR
  "다른 file.dat을"파일
SectionEnd

4.8.1.16 DirVerify

오토 | 떠나

`DirVerify가 '를 사용하는 떠나면 설치 디렉토리가 유효하지 않거나 충분한 공간이 없을 경우에는 다음 단추가 비활성화되지 않습니다. 현재 사용 휴가 함수에서 읽을 수있는 플래그 GetInstDirError이 대신 설정됩니다.

PageEx 디렉토리
  휴가를 DirVerify
  PageCallbacks "" ""dirLeave
PageExEnd

4.8.1.17 FileErrorText

파일 오류 텍스트

파일에 쓸 수 없을 때 올라오는 기본 텍스트를 대체합니다. 이 문자열은 파일 이름 (0달러 일시적으로이 값을 변경됩니다)입니다 갖는 $ 0에 대한 참조를 포함할 수 있습니다. 예 : "$ \ R $ \ N 0달러 $ \ R $ \ ngood 행운을 파일에 쓸 수 없습니다.".

변수를 받아들입니다. 변수를 사용하는 경우에는 전에, 그들은 초기화되어야 파일이 사용됩니다.

4.8.1.18 아이콘

[경로 \] icon.ico

설치 프로그램의 아이콘을 설정합니다. 아이콘 파일에 모든 아이콘이 설치 프로그램에 포함됩니다. 사용 UninstallIcon를 제거 프로그램 아이콘을 설정합니다.

4.8.1.19 InstallButtonText

단추 텍스트를 설치

매개 변수가 지정된 경우, 지정된 텍스트로 기본 설치 버튼 텍스트 ( "설치"중)보다 우선합니다.

변수를 받아들입니다. 변수를 사용한다면, 설치 버튼을 프로그램하기 전에 초기화되어야합니다.

4.8.1.20 InstallColors

/ 창문 | (foreground_color background_color)

설치 정보 화면 (기본값은 00FF00 000,000입니다. # 코멘트에 사용될 수 있기 때문에, 오직 최고의 '#'마이너스, HTML에서와 같이 양식 RRGGBB을 (16 진수에서 사용)에 사용할 색상을 설정합니다. 참고는 "만약 / 윈도우 "는 유일한 매개 변수로, 기본 윈도우 색상이 사용됩니다 지정됩니다.

4.8.1.21 InstallDir

definstdir

기본 설치 디렉토리를 설정합니다. 참조 변수 부분 이 문자열 (특히 $ PROGRAMFILES) 확인하는 데 사용할 수있는 변수를. 마지막으로 \ 다음이 문자열의 부분은 사용자가 '찾아보기'선택하는 경우 사용되며, 이것을 해제하기 위해 설치 시간 (시 문자열에 다시 추가할 수있다는 것을 참고를 필요로합니다 \ (와 디렉토리를 종료 전체 매개 변수)는 따옴표로 묶어야합니다. 이것은 찾아보기 버튼 비트로 농땡이 이해가되지 않는 경우.

4.8.1.22 InstallDirRegKey

root_key 하위 키 key_name

이 속성은 레지스트리에 문자열을 확인하고 해당 문자열이 유효한 경우 설치 디렉토리에 사용하기 위해 설치 프로그램을 알려줍니다. 이 속성이 있으면 레지스트리 키가 유효한지, 그것이 InstallDir 속성을 무시합니다, 그렇지 않으면 그것은 InstallDir 기본값으로 다시 떨어질 것이다. 레지스트리를 질의하면이 명령은 자동으로 따옴표를 제거합니다. ": \ 프로그램 파일 \ 똥 \ poop.exe C", 이것을 사용해야할지 것입니다 "C : \ 프로그램 문자열". EXE "으로 끝나는 경우는 자동으로 문자열의 파일 이름 구성 요소 (즉, 문자열이있는 경우 제거됩니다 파일은 \ 똥 "). 보다 고급 설치 디렉토리 구성을 보려면. onInit 달러 INSTDIR을 설정합니다.

언어 문자열과 변수 InstallDirRegKey 함께 사용할 수 없습니다.

InstallDirRegKey HKLM 소프트웨어 \ NSIS ""
InstallDirRegKey HKLM SOFTWARE \ ACME \ 곳 InstallLocation

4.8.1.23 InstProgressFlags

[깃발 [...]]

국기에 대한 유효한 값은 (컬러 InstallColors에 의해 설정된 색상 진행률 표시줄 "부드러운"(매끄러운 진행 막대) 또는 "컬러"입니다 예 :. "InstProgressFlags"(기본값 구식 윈도우 모양), ( "부드러운가 InstProgressFlags"새로운 부드러운 모양), (색의 부드러운 모양의 야호) "부드러운 색 InstProgressFlags"참고 :.와도 "부드러운"또는 "컬러"작품 XPStyle 설치 프로그램이 현대적인 주제로 Windows XP에서 실행되는 경우에합니다.

4.8.1.24 InstType

install_type_name | / NOCUSTOM | / CUSTOMSTRING = str을 보여주고 | / COMPONENTSONLYONCUSTOM

설치 유형 목록에 설치 유형을 추가하거나 사용자 정의 설치 유형을 비활성화합니다. 많은 32 종류, 설치 타입의 이름을 지정 하나씩있을 수 있습니다. 있다면 이름이 접두사는 '유엔.' 그것은 제거 프로그램 설치 유형입니다. 이름은 구성 요소 페이지가 나타날 때까지 런타임에 처리됩니다 변수를 포함할 수 있습니다. 런타임 동안 InstType 이름을 변경하는 또 다른 방법입니다 InstTypeSetText 명령. 차이와 함께있다는 것입니다 InstTypeSetText 당신의 소중한 사용자 변수를 저장하고 있습니다. 첫 번째 유형은 기본적으로 (일반적으로 '일반')입니다. / NOCUSTOM 스위치가 지정되면, 그때 '사용자 정의'설치 유형이 비활성화하고, 사용자는 미리 정의된 설치 유형 중 하나를 선택할 가지고있다. / CUSTOMSTRING 스위치가 지정되는 경우 또는, 매개 변수는 "사용자 지정"설치 유형 텍스트보다 우선합니다. / COMPONENTSONLYONCUSTOM 플래그가 지정하는 경우 "사용자 지정"설치 유형을 선택하는 경우 또는, 구성 요소 목록에만 표시됩니다.

형식 이름에 대한 변수를 받아들입니다. 변수를 사용하는 경우 구성 요소 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.25 LicenseBkColor

컬러 | / 그레이 | / 창문

라이센스 데이터의 배경색을 설정합니다. 색상 (# 코멘트에 사용될 수 있기 때문에, 오직 최고의 '#'마이너스, HTML에서와 같이 16 진수) 형태 RRGGBB을 사용하여 지정됩니다. 기본값은 '/ 회색'입니다. 당신은 또한 '/ 윈도우'를 사용하여 Windows 운영 체제 정의 색상을 사용할 수 있습니다.

4.8.1.26 LicenseData

licdata. (TXT | RTF)

텍스트 파일이나 사용자가 읽을 수있는 면허증을 사용할 수 RTF 파일을 지정합니다. 라이센스 표시하지 이것을 생략하십시오. 파일이 악의 DOS 텍스트 형식 (\ R \ N, 그래!)에 있어야합니다. 다국어 라이센스 데이터 사용 정의하려면 LicenseLangString을 .

당신이 RTF 파일을 라이센스 파일을 만들수있다면 그것은 당신이 워드 패드로 편집이 아닌 MS 워드 권장합니다. 워드 패드를 사용하면 훨씬 작은 파일집니다.

사용 LicenseLangString를 모든 언어에 대해 다른 라이센스를 표시합니다.

4.8.1.27 LicenseForceSelection

(체크 박스 [accept_text] | radiobuttons [accept_text] [decline_text] | 오프 )

표시 라이센스가 명시적 또는 불가능해야하는 경우 지정합니다. 이 확인란 또는 radiobuttons에 의해 어느 수행할 수 있습니다. 기본적으로 "다음 버튼"이 비활성화되어 확인란이 활성화되어하거나 오른쪽 라디오 버튼이 선택된 경우에만 활성화됩니다. 오프가 지정되어 있으면 "다음 버튼"은 기본적으로 활성화되어 있습니다.

LicenseForceSelection 확인란
LicenseForceSelection 확인란은 "동의"
LicenseForceSelection의 radiobuttons
LicenseForceSelection의 radiobuttons는 "동의"
LicenseForceSelection의 radiobuttons은 "거절", "동의"
LicenseForceSelection의 radiobuttons는 "" "거절"
LicenseForceSelection 오프

4.8.1.28 LicenseText

[본문 [button_text]]

라이센스 페이지에서 기본 텍스트를 변경하는 데 사용됩니다.

텍스트 : 설치 아이콘의 오른쪽에있는 컨트롤 위에 텍스트.

button_text : "동의"버튼을 텍스트입니다.

문자열 ( "") 비어있는 경우 기본값은 문자열이 사용됩니다.

변수를 받아들입니다. 변수를 사용하는 경우 라이센스 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.29 MiscButtonText

[뒤로 버튼 텍스트 [다음 버튼 텍스트] [취소] 버튼 텍스트] [닫기 단추 텍스트]]

4 개의 단추 (<뒤로 다음> 취소 후 닫기)에 대해 기본 텍스트 문자열을 대체합니다. 매개 변수를 생략하는 경우 기본값이 사용됩니다.

변수를 받아들입니다. 변수를 사용하는 경우, 그들로 초기화해야합니다 . onInit .

4.8.1.30 이름

이름 [name_doubled_ampersands]

설치 프로그램의 이름을 설정합니다. 이름은 일반적으로 단순히 그러한 'MyApp'또는 'CrapSoft MyApp'와 같은 제품 이름입니다. 당신 이름에 하나 이상의 앰퍼샌드 (&)를 가지고있는 경우에만 두 배 앰퍼샌드와 같은 이름으로 두 번째 매개 변수를 설정합니다. 귀사의 제품의 이름이 "푸 & 바"인 경우 예를 들어, 사용

 이름 '푸 & 바 ""푸의 && 바 "

당신 이름에 앰퍼샌드을 가지고 사용하는 경우 LangString 이름을, 당신은 두 번째 매개 변수로 사용할 두 배로 앰퍼샌드로 하나 더 만들어야합니다.

변수를 받아들입니다. 변수를 사용하는 경우, 그들로 초기화해야합니다 . onInit .

4.8.1.31 OutFile

[경로 \] install.exe

MakeNSIS에 오신 것을 설치 프로그램을 작성해야하는 출력 파일을 지정합니다. 이것은 단지 MakeNSIS가 기록되는 파일입니다, 그것은 설치 프로그램의 내용에 영향을주지 않습니다.

4.8.1.32 RequestExecutionLevel

없음 | 사용자 | 최고 | 관리자

Windows Vista 및 Windows 7에 대한 요청된 실행 수준을 지정합니다. 값은 설치 프로그램과 제거 프로그램의 XML 매니 페스트에 포함된 및 Vista / 7 알, 그리고 설치에 필요한 어떤 권한 레벨 윈도우의 아마 차기 버전.되는 사용자의 요청없이 관리자 권한으로 일반 사용자의 수준. 최고는 최고 실행 수준을 요청합니다 현재 사용자 및 권한 상승을 확인하는 사용자에게 메시지를 표시하도록 Windows를 일으킬 수 없습니다. 프롬프트. 사용자의 암호를 요청할 수 있습니다 관리자 요청 관리자 수준과 윈도우뿐만 아니라 사용자에게 메시지를 표시하게됩니다. 지정하지 아무 도 기본이고,, 매니 페스트가 비어 유지하고 Windows가 실행 수준이 필요한지 결정하게됩니다. 윈도우 비스타 / 7이 자동 NSIS의 설치를 식별하여 관리자 권한이 필요합니다 결정합니다. 이 때문에 누구 와 관리자가 실질적으로 동일한 효력이 없습니다.

그것은 모든 응용 프로그램이 요구되는 실행 수준으로 표시됩니다 것을, 최소한 마이크로 소프트에 의해 좋습니다. 해제 설치 프로그램은 호환성 모드 적용됩니다. 이 모드의 해결 방법은 자동으로 모든 사용자의 시작 메뉴에 사용자의 시작 메뉴에 생성된 모든 단축키를 움직이고 있습니다. 시스템 폴더에 아무 것도 설치하거나 로컬 시스템 레지스트리 (HKLM)에 쓸 필요는 설치를 지정해야합니다 사용자 실행 수준.

이 항목에 대한 자세한 내용은 MSDN에서 찾을 수 있습니다. 키워드는 "UAC"를 포함, "비스타 매니 페스트"와 "비스타 보안", "실행 수준을 요청한."

4.8.1.33 SetFont

[/ LANG = lang_id] font_face_name font_size

설치 글꼴을 설정합니다. 선택한 글꼴뿐만 아니라 사용자의 컴퓨터에 참석하셔야합니다. 오직 당신이 가진 희귀 글꼴을 사용하지 마십시오.

당신은 각 언어에 대해 다른 글꼴을 지정하려는 경우 / LANG 스위치를 사용하십시오. 예를 들면 다음과 같습니다

 SetFont / LANG = $ {LANG_ENGLISH} "영어 글꼴"9
 SetFont / LANG = $ {LANG_FRENCH} "프랑스어 글꼴"10

두 명이 있습니다 LangString 모든 언어에 대한 글꼴 및 글꼴 크기를 포함할의 명명된 ^ 글꼴 및 글꼴 크기 ^에 있습니다.

4.8.1.34 ShowInstDetails

숨기기 | 쇼 | nevershow

설치의 세부 사항이 표시됩니다 여부를 설정합니다. 사용자가 기본적으로 그들을 보여준다고, 또는 '쇼'를 보거나 'nevershow', 그들을 보는 것을 사용자를 막기 위해 수 있도록 기본적으로 세부 정보를 숨기려면 '숨기'가 될 수 있습니다. 섹션이 이용하여 재정 의할 수 있습니다 SetDetailsView을 .

4.8.1.35 ShowUninstDetails

숨기기 | 쇼 | nevershow

제거에 대한 세부 정보가 표시됩니다 여부를 설정합니다. 사용자가 기본적으로 그들을 보여준다고, 또는 '쇼'를 보거나 'nevershow', 그들을 보는 것을 사용자를 막기 위해 수 있도록 기본적으로 세부 정보를 숨기려면 '숨기'가 될 수 있습니다. 섹션이 이용하여 재정 의할 수 있습니다 SetDetailsView을 .

4.8.1.36 SilentInstall

일반 | 자동 | silentlog

설치 프로그램이 침묵해야할지 여부를 지정합니다. 그것이 '침묵'또는 'silentlog'이면 SF_SELECTED 플래그를 가지고 모든 구역이 (당신이 사용하여이 플래그를 설정할 수 있습니다 조용하게 설치된 SectionSetFlags을 설치 프로그램 자체 (스크립트가 아직도 원하는대로 표시할 수로부터 화면 출력과,)를 사용MessageBox '는 S / SD) 자동 설치 프로그램에 대한 기본을 지정합니다. 이것이 '정상'으로 설정하고 사용자가 명령줄에 / S (대소문자 구분)으로 설치 프로그램을 실행하는 경우 SilentInstall '침묵'이 사용된 것처럼, 그것이 동작됩니다. 참고 : 또한 참조 로그 집합 .

참조 섹션 4.12을 자세한 내용은.

4.8.1.37 SilentUnInstall

일반 | 침묵

제거 프로그램은 침묵해야할지 여부를 지정합니다. 그것이 '침묵'또는 'silentlog'이면 제거 섹션 제거 프로그램 자체 (스크립트가 아직도 원하는대로 사용 표시할 수 있습니다로부터 화면 출력과 함께 조용히 실행됩니다 MessageBox 자동 설치에 대한 기본값을 지정할의 / SD)를 . 이것이 '정상'으로 설정하고 사용자가 명령줄에 / S로 제거 프로그램을 실행하는 경우 SilentUnInstall '침묵'이 사용된 것처럼, 그것이 동작됩니다. 참고 : 또한 참조 로그 집합 .

참조 섹션 4.12을 자세한 내용은.

4.8.1.38 SpaceTexts

[req 텍스트 [되다 텍스트]]

매개 변수를 지정하는 경우, 필요 공간 및 공간 사용 가능한 텍스트 (및 "사용 가능한 공간 :"기본적으로 "스페이스가 필요합니다")보다 우선합니다. '아무'이 필요한 텍스트로 지정되지 않은 경우에는 공백 문자가 표시되지 않습니다.

변수를 받아들입니다. 변수를 사용하는 경우 구성 요소 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.39 SubCaption

[PAGE_NUMBER subcaption]

설치 프로그램의 각 페이지 ( "사용권 계약", 1 = "설치 옵션", 2 = "설치 디렉토리"3 = "설치 파일", 4 = "완료"0 =)에 대한 subcaptions보다 우선합니다. 당신이 빈 문자열 ( "을") 지정하면 (빈 문자열을 달성하기 위해 "기본는 그러나 지정할 수 있음) 사용됩니다."

당신은 또한 사용 subcaption (또는 기본값을 무시할) 설정할 수 있습니다 캡션 내부 PageEx의 블록.

변수를 받아들입니다. 변수를 사용하는 경우에는 관련 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.40 UninstallButtonText

본문

변경 기본적으로 제거에서 "제거"를 말하는 것은 단추의 텍스트입니다. 어떤 매개 변수를 지정하지 않으면 기본 텍스트가 사용됩니다. 참고 WriteUninstaller을 (UninstallEXEName을 대체합니다.)

변수를 받아들입니다. 변수를 사용하는 경우 제거 단추가 나타날 때까지, 그들은 초기화되어야한다.

4.8.1.41 UninstallCaption

캡션

제거 프로그램의 titlebars이 표시 될지 설정합니다. 기본적으로, 그것은 이름이 이름 명령으로 지정된 '이름 제거'이다. 당신은 그러나 'MyApp 제거'또는 무엇이든 그것을 무시할 수 있습니다. 당신이 빈 문자열 ( "을") 지정하면 (빈 문자열을 달성하기 위해 "기본는 그러나 지정할 수 있음) 사용됩니다."

변수를 받아들입니다. 변수를 사용하는 경우, 그들로 초기화해야합니다 un.onInit .

4.8.1.42 UninstallIcon

[경로 \] icon.ico

제거 프로그램의 아이콘을 설정합니다.

4.8.1.43 UninstallSubCaption

PAGE_NUMBER subcaption

( ": 확인", 1 = "제거 파일", 2 = "완료"0 =) 제거 프로그램 페이지에 대한 기본 subcaptions을 설정합니다. 당신이 빈 문자열 ( "을") 지정하면 (빈 문자열을 달성하기 위해 "기본는 그러나 지정할 수 있음) 사용됩니다."

당신은 또한 사용 subcaption (또는 기본값을 무시할) 설정할 수 있습니다 캡션 내부 PageEx의 블록.

변수를 받아들입니다. 변수를 사용하는 경우에는 관련 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.44 UninstallText

텍스트 [이중]

제거 확인 페이지에서 텍스트를 지정합니다.

텍스트 컨트롤 위에 텍스트

이중 : 제거 위치 옆에있는 텍스트

변수를 받아들입니다. 변수를 사용하는 경우 제거 확인 페이지가 만들어지기 전에, 그들은 초기화되어야한다.

4.8.1.45 WindowIcon

 오프 |

설치 프로그램의 아이콘 여부 세트가 표시되고 있습니다.

4.8.1.46 XPStyle

| 대한 해제

XP를 참고 여부 세트 설치에 추가됩니다. XP를 매니 페스트는 Windows XP에서 실행중인 경우 설치 프로그램 컨트롤이 새로 XP 스타일을 사용할 수 있습니다. 이것도 제거에 영향을 미칩니다.

4.8.2 컴파일러 플래그

다음 명령은 컴파일러가 코드를 생성하고 데이터를 압축하는 방법에 영향을 미칩니다. 별도로 명시되지 않는 한,이 명령은 어디서든 스크립트에 유효하며, 각 하나가 배치되는 위치 아래에서 모든 행 (다른 명령에 의해 오버로드까지) 영향. 그들은 사용하는 동안 점프 수없는 흐름 제어 insutrctions을 .

예를 들어, 다음 스크립트에서 blah.dat 덮어 씁하지 않습니다.

$ {면} 0달러 == 0
  에 SetOverwrite
{아니면} $
  오프 SetOverwrite
$ {EndIf}
blah.dat는 # 덮어쓰기 파일이 날아 항상 여기입니다!

대신, 다음 사용해야합니다.

$ {면} 0달러 == 0
  에 SetOverwrite
  파일 blah.dat
{아니면} $
  오프 SetOverwrite
  파일 blah.dat
$ {EndIf}

4.8.2.1 AllowSkipFiles

 오프 |

이 명령은 사용자가 파일이나하지를 건너뛸 수 있어야 여부를 지정합니다. 사용자가있다면 파일을 건너뛸 수있는 옵션이 있습니다 SetOverwrite이 (기본값)으로 설정하고 설치 파일을 추출하려고 할 때 쓰기 위해 파일을 여는 데 실패입니다. 경우 해제는 사용자가 파일을 건너뛸 수있는 무시 단추를 사용하는 표시되지 않으며 사용자는 중단 설치 (단추를 취소)에 옵션을 서면 (버튼을 다시 시도)에 대한 파일을 열어 다시 시도합니다. 경우 에는 사용되는 사용자 (- 참조 오류 플래그가 설정됩니다 파일을 건너 뛰도록 선택합니다 SetOverwrite를 .)

4.8.2.2 FileBufSize

buffer_size_in_mb

이 명령은 컴파일러의 내부 파일 버퍼의 크기를 설정합니다. 이 명령은 당신이 한번에 메모리에로드 얼마나 주어진 파일의 제한하여 컴파일러의 메모리 사용량을 제어할 수 있습니다. 컴파일러가 입력과 출력을 모두 필요로하기 때문에, 지정한 두 번 메모리 크기는 파일의 버퍼를위한 주어진 시간에 사용할 수 있습니다.이 명령은 MB 중 또 다른 몇 가지 걸릴 수도 압축 버퍼를 제한하지 않는다, 역시 그것은 컴파일러의 다른 내부 버퍼를 제한 않지만, 어쨌든 그되어야 정상적으로 상단하지 1메가바이트 매우 작은 숫자를 지정하면 성능이 떨어질 수 있습니다. 매우 큰 숫자를 지정하면 시스템 리소스를 소진하고 컴파일 프로세스를 취소하려면 컴파일러를 강제 수 있습니다. 기본값은 32메가바이트입니다.

4.8.2.3 SetCompress

오토 | 힘 | 오프

이 명령은 데이터를 압축해야할지 여부를 결정하기 위해 설치 프로그램에서 사용하는 압축 플래그를 설정합니다. 일반적으로 SetCompress 플래그는 후에 명령에 영향을 미칠 것이며, 파일의 마지막 SetCompress 명령은 또한 여부 설치 정보 섹션을 결정하고 설치 프로그램의 데이터가 압축됩니다 제거합니다.compressflag는 '자동'인 경우 압축 크기는 압축되지 않은 크기보다 작다면 파일이 압축됩니다. compressflag가 '강제'로 설정되어있다면, 압축된 버전이 항상 사용됩니다. compressflag가있다면 '끄기'다음 압축 (빠를 수있는)이 사용되지 않습니다.

이 옵션 솔리드 압축을 사용하는 아무런 영향을 미치지 않습니다.

4.8.2.4 SetCompressor

[/ 고체] [/ FINAL] zlib | 레스 햇의 bzip2 | lzma

이 명령은 파일 / 설치 프로그램에서 데이터를 압축할 때 사용된 압축 알고리즘을 설정합니다. 이것은 섹션과 함수 외부에서 사용할 수 있으며 모든 데이터는 압축되기 전에. 다른 압축 방식은 동일한 설치 프로그램의 여러 파일을 사용할 수 없습니다. 이것은 컴파일 오류를 피하기 위해 스크립트의 맨 위에 그것을 사용하는 것이 좋습니다.

세 가지 압축 방법이 지원됩니다 : ZLIB, 레스 햇의 bzip2와 LZMA합니다.

ZLIB (기본값)은 폐의 알고리즘을 사용하여, 그것은 빠르고 간단한 방법입니다. 기본 압축 수준으로 메모리의 약 300킬로바이트을 사용합니다.

레스 햇의 bzip2는 보통 ZLIB보다 나은 압축 비율을 제공하지만, 약간 느린이며, 더 많은 메모리를 사용합니다. 기본 압축 수준으로 메모리 4메가바이트에 대해 사용합니다.

LZMA는 아주 좋은 압축 비율을 제공 새로운 압축 방법입니다. 감압 속도가 (2 GHz의 CPU에 10~20메가바이트 / s)로 높아 압축 속도가 낮은 것입니다. 감압에 사용됩니다 메모리 크기가 사전 크기 플러스 몇 KBS이며, 기본값은 8 MB입니다.

면 / 최종가 사용되고 SetCompressor에 대한 후속 호출은 무시됩니다.

면 / 솔리드가 사용되고 설치 모든 데이터를 하나의 블록으로 압축됩니다. 높은 압축 비율이 발생합니다.

4.8.2.5 SetCompressorDictSize

dict_size_mb

LZMA 압축 (기본값은 8 MB입니다)에서 사용하는 메가 바이트 (MB)의 사전 크기를 설정합니다.

4.8.2.6은 SetDatablockOptimize

 오프 |

이 명령은 datablock 최적화를 할 것인지 여부를 컴파일러를 알려줍니다. Datablock 최적화는 컴파일러가 데이터 블록에 추가되는 모든 데이터는 데이터 블록에 이미이며,면 추가 반대로, 그것은 단순히 (크기 조금 절약할 수) 참조되는지 확인합니다. 그것은 고도에서이 옵션을 떠날 것을 권장합니다.

4.8.2.7 SetDateSave

 오프 |

이 명령은 그것을 설치를 복원할 수 있도록 파일의 마지막 기록 날짜와 시간을 저장할지 여부를 결정하기 위해 파일 명령에 의해 사용되는 파일 날짜 / 시간 절약 플래그를 설정합니다. 유효한 플래그는 '대한'과 '해제'입니다. '에서'기본값입니다.

4.8.2.8 SetOverwrite

 | 해제 | 시도 | ifnewer | ifdiff | lastused

이 명령에서 사용하는 덮어쓸 플래그 설정 파일 파일이 존재 기존 파일을 덮어쓸해야할지 여부를 결정하기 위해 명령을. overwriteflag가 '에서'이면, 파일은 이것이 기본값입니다 덮어 씁니다. overwriteflag가 '끄기'이면 이미 존재하는 파일을 덮어 없습니다. overwriteflag는 '시도'이면 파일 (파일에 기록되지 못할 경우, 그것은 사용자 개입없이 생략되어 의미) 가능하면 덮어 씁니다. overwriteflag는 'ifnewer'있다면, 파일은 기존 파일은 새 파일보다 오래된 경우에만 덮어 씁니다. overwriteflag는 'ifdiff'인 경우 기존 파일이 새 파일보다 오래된 이상이면 다음과 같은 파일만을 덮어 씁니다. 때 'ifnewer'또는 'ifdiff'모드에서 대상 파일의 날짜와 관계없이 SetDateSave로 설정되어는지, 설정되어 있습니다.

오프 SetOverwrite
파일 program.cfg는 # 설정 우리가 덮어 싶지 않아 신고
에 SetOverwrite

4.8.2.9 TargetMinimalOS

XY

이 명령은 설치 프로그램을 실행하기 위해 필요한 대상 Windows 시스템의 최소 운영 체제 버전을 설정합니다. 이것은 운영 체제 호환성에 대한 설치 검사를하지 않겠지만 그것은 윈도우 API를 설치 프로그램에서 사용하실 수있는 표시됩니다. 설치 프로그램은 기존의 시스템에서 실행할 수 없습니다.

가 5.0 이상의 최소한의 OS를 나타내는 경우에 특히, MakeNSIS가 생성 유니 코드 설치 (Windows 2000 및 더 최근으로 완벽하게 호환 OSes 유니 코드입니다.)

TargetMinimalOS 4.1; 대상 윈도우 9x 또는 더 최근의
TargetMinimalOS 4.2; 대상 Windows NT4 또는 더 최근의
TargetMinimalOS 5.0; 대상 Windows 2000 또는 더 최근 / 유니 코드 설치하다
TargetMinimalOS 5.1; 대상 Windows XP 또는 최근은 / 유니 코드 설치하다
TargetMinimalOS 6.0; 대상 Windows Vista 또는 더 최신은 / 유니 코드 설치하다
TargetMinimalOS 6.1; 대상 윈도우 세븐 이상 최신 / 유니 코드 설치하다

각종 검사 윈도우의 버전 번호 .

4.8.3 버전 정보

4.8.3.1 VIAddVersionKey

 [/ LANG = lang_id] keyname 값

필드는 파일 등록 정보의 버전 탭에 추가합니다. 이 중 시스템 또는 사용자 정의 필드가 제공하는 분야가 될 수 있습니다. 다음 필드는 시스템에 의해 제공됩니다

  • 제품명
  • 댓글
  • 회사명
  • LegalCopyright
  • FileDescription
  • 의 FileVersion
  • ProductVersion
  • InternalName
  • LegalTrademarks
  • OriginalFilename
  • PrivateBuild
  • SpecialBuild

사용자 정의 필드가 번역되지 않은 남아있는 반면, 이러한 필드의 이름은 대상 시스템에서 번역하고 있습니다.

VIAddVersionKey / LANG = $ {LANG_ENGLISH} "제품 이​​름" "시험 신청"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} "코멘트", "테스트 코멘트"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} "회사명", "가짜 회사"
VIAddVersionKey / LANG = $ {LANG_ENGLISH가} "LegalTrademarks"는 "테스트 신청은"가짜 회사의 상표입니다
VIAddVersionKey / LANG = $ {LANG_ENGLISH} "LegalCopyright" "© 가짜 회사"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} "FileDescription" "시험 신청"
VIAddVersionKey / LANG = $ {LANG_ENGLISH} "의 FileVersion", "1.2.3"

4.8.3.2 VIProductVersion

[version_string_X.XXX]

파일의 속성에서 버전 탭의 상​​단에 제품 버전이 추가합니다.

VIProductVersion "1.2.3.4"

4.9 지침

4.9.1 기본 지침

NSIS는 스크립팅에 사용하는 방법은 PHP와 어셈블리 사이의 십자가의 일종입니다. 가 실제로 높은 수준의 언어 구조가 없지만, 지침 자체는 (대부분) 높은 수준이며, 당신은 편리한 문자열 기능 (즉, 당신이 합치 문자열 등을 걱정할 필요가 없습니다)가. 당신은 기본적으로 25 레지스터 (20 범용, 5 특수 목적), 그리고 스택 있습니다.

4.9.1.1은 삭제

[/ REBOOTOK] 파일

대상 시스템에서 파일 (어느 파일 또는 와일드 카드가 될 수 있지만, 전체 경로로 지정해야 함) 삭제합니다. 파일을 다시 부팅할 때 삭제됩니다 경우 다시 부팅 플래그가 설정됩니다 - / REBOOTOK를 지정하고 파일을 삭제할 수 없다면 파일 시스템 재부 팅이되면 삭제됩니다. 파일이 발견되며 삭제할 수없는 경우 오류 플래그가 설정됩니다. 오류 플래그가 존재하지 않는 파일을 삭제하려에서 설정되지 않습니다.

삭제 $ INSTDIR \ somefile.dat

4.9.1.2 EXEC

명령

지정된 프로그램을 실행하고 즉시 계속합니다. 지정된 파일이 대상 시스템이 아니라 컴파일 시스템에 존재해야합니다. $ OUTDIR는 작업 디렉토리에 사용됩니다. 프로세스가 실행되지 않을 수있다면 오류 플래그가 설정됩니다. 명령은 공백을 가지고있다면, 당신은 매개 변수에서 구분하기 위해 따옴표를 사용해야합니다.예 : EXEC '는'$ INSTDIR를 \ command.exe '매개 변수'. 당신이 따옴표를 사용하지 않는 경우는 것입 되지 매개 변수와 함께 또는없이 윈도우 9x에서 작동합니다.

EXEC ' "$ INSTDIR \ someprogram.exe"
EXEC ' "$ INSTDIR \ someprogram.exe"일부 매개 변수'

4.9.1.3 ExecShell

조치 명령은 [매개 변수] [SW_SHOWDEFAULT | SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_HIDE]

ShellExecute를 사용하여 지정된 프로그램을 실행합니다. 그 동작이 등, "인쇄", 보통 "열기"하지만 기본 동작을 사용하는 빈 문자열이 될 수 있습니다. 매개 변수 및 쇼 타입은 선택 사항입니다. $ OUTDIR는 작업 디렉토리에 사용됩니다. 프로세스가 실행되지 않을 수있다면 오류 플래그가 설정됩니다.

ExecShell "열기" "http://nsis.sf.net/"
ExecShell "열기" "$ INSTDIR \ README.TXT"
ExecShell "인쇄" "$ INSTDIR \ README.TXT"

4.9.1.4 ExecWait

명령 [user_var (종료 코드)]

지정된 프로그램을 실행하고 실행된 프로세스가 종료될 때까지 기다립니다. 자세한 내용은 EXEC를 참조하십시오. 아무런 출력 변수가 지정되지 않으면 오류가있다면 실행 프로그램이 nonzero 오류 코드를 반환하거나, 경우 ExecWait는 오류 플래그를 설정합니다. 출력 변수가 지정된 경우 ExecWait는 종료 코드로 변수를 설정합니다 (그리고 오류가 발생하는 경우에만 오류 플래그를 설정, 오류가 사용자 변수의 내용이 정의되지 않은가 발생하는 경우). 명령은 공백을 가지고있다면, 당신은 매개 변수에서 구분하기 위해 따옴표를 사용해야합니다. 예 : ExecWait '는'$ INSTDIR를 \ command.exe '매개 변수'. 당신이 따옴표를 사용하지 않는 경우는 것입 되지 매개 변수와 함께 또는없이 윈도우 9x에서 작동합니다.

ExecWait ' "$ INSTDIR \ someprogram.exe"
ExecWait ' "$ INSTDIR \ someprogram.exe"'0달러
DetailPrint는 "일부 프로그램은 $ 0 반환"

4.9.1.5 파일

[/ 치명적] [/] ([/ R] [/ X 파일 | 와일드 카드 [...]] (파일 | 와일드 카드) [...] | / oname = file.dat infile.dat)

파일 (들) 전류 출력 경로 ($ OUTDIR)으로 추출하는 추가합니다.

  • 출력 파일 이름이 $ OUTDIR \ filename_portion_of_file 않습니다.
  • oname은 = X 출력 이름을 변경하는 스위치 / 사용하십시오. X는 변수를 포함할 수 있으며 정규화된 경로 또는 그것이 정한 $ OUTDIR에 추가됩니다 어떤 경우에는 상대 경로가 될 수 SetOutPath . 이 스위치를 사용할 경우 하나의 파일을 지정할 수 있습니다. 출력 이름에 공백이 포함되어 있으면, 아래 예제와 같이, / oname 포함한 전체 매개 변수를 인용.
  • 와일드 카드를 지원합니다.
  • / r 스위치를 사용하는 경우, 일치하는 파일과 디렉토리는 재귀적으로 하위 디렉토리에 대해 검색됩니다. 하나의 경로 세그먼트가 지정되는 경우 (예 : 파일 / R 무언가 ), 현재 디렉토리는 재귀적으로 검색됩니다. 하나 이상의 세그먼트를 지정하면 (예 : 파일 / R 무언가 \ *. * ) 마지막 경로 세그먼트는 반복적으로 검색할 수있는 디렉토리에 대한 일치 조건과 나머지로 사용됩니다. 디렉토리 이름이 일치하는 경우 그 내용을 모두 재귀적으로 추가됩니다. 디렉토리 구조는 보존됩니다.
  • 파일 또는 디렉토리를 제외할 전환 / X를 사용하십시오.
  • / a 스위치를 사용하는 경우, 파일의 속성 (들)은 보존됩니다 덧붙였다.
  • 덮어쓰기 모드를 '시도'하고 파일을 덮어 씁 수 없었거나 덮어쓰기 모드 '에서'로 설정된 경우, 해당 파일을 덮어 없을 수 있고 사용자가 무시 선정 설정되어 있으면 파일 명령은 오류 플래그를 설정합니다.
  • / 치명적 스위치를 사용하는 어떠한 파일이 발견되지 않으면 경고 대신 오류로 인해 발행됩니다.
파일 something.exe
파일 / something.exe
파일 *. EXE
파일 / R *. DAT
파일 / R 데이터
파일 / oname = temp.dat somefile.ext
파일 / oname = $ TEMP \ temp.dat somefile.ext
somefile.ext 파일 "spaces.dat와 / oname = $ TEMP \ 이름"
파일 / 치명적 "존재하지 않을 수 있습니다 파일"
파일 / R / X CVS myproject \ *. *
파일 / R / X *. 고해상도 / X *. OBJ / X *. PCH 소스 \ *. *

참고 : 사용할 때 / R의 스위치를 모두 일치하는 디렉토리와 파일이 검색됩니다. 주어진 경로가 완벽하게 하나의 디렉토리와 일치하는 경우에도이 항상 함께 또는 와일드 카드를 사용하지 않고 이루어집니다. 그 말의 뜻은, 다음과 같은 디렉토리 구조 :

<DIR> 뭔가
  file.dat
  another.dat
<DIR> 말일세
  무언가
  <DIR> dir2
    file2.dat
<DIR> 다른
  <DIR> 뭔가
    README.TXT

다음과 같은 파일 사용 :

파일 / R 무언가

라는 이름의 디렉토리와 일치하는 것입니다 무언가 루트 디렉토리를, 파일 이름이 뭔가 라는 디렉토리에있는 디렉토리 와 이름이 디렉토리 무언가 라는 이름의 디렉토리에서 다른 . 라는 전용 디렉토리와 일치하려면 어떤 루트 디렉토리를 다음을 사용 :

파일 / R 무언가 \ *. *

추가할 때 \ *. * , 그것이 일치하는 상태로 사용되며 무언가가 검색할 디렉터리로 사용됩니다. 경우에만 뭔가가 지정되어, 현재 디렉토리는 재귀적으로 이름이 ​​매 및 디렉토리를 검색한다 무언가 와 다른 \ 뭔가가 일치됩니다.

4.9.1.6 이름 바꾸기

[/ REBOOTOK] source_file dest_file

dest_file에 source_file 이름을 바꿉니다. 당신은 다른 곳에서는로 시스템에 어디서든 파일을 이동하고 동일한 드라이브에 다른곳에 디​​렉토리를 이동할 수 있습니다 그것을 사용할 수 있습니다. 대상 파일이 존재하지 던가 아니면 (만약 / REBOOTOK를 사용하지 않는) 조치가 실패합니다. / REBOOTOK이 지정되며, 파일 (예를 들어, 대상이 존재하는 경우) 이동할 수 없습니다면, 파일은 시스템 재부 팅시를 이동합니다. 파일을 다시 부팅할 때 이동되는 경우 다시 부팅 플래그가 설정됩니다. 파일 이름을 바꿀 수없는 경우 (및 / REBOOTOK을 사용하지 않는) 또는 소스 파일이 없으면 오류 플래그가 설정됩니다.

어떤 절대 경로를 지정하지 않으면 현재 폴더가 사용됩니다. 현재 폴더는 지난를 사용하여 폴더 집합입니다 SetOutPath의 지시를. 당신이 사용하지 않은 경우 SetOutPath 현재 폴더는 $ EXEDIR .

이름 바꾸기 $ INSTDIR \ file.ext $ INSTDIR \ file.dat

4.9.1.7 ReserveFile

[/ 치명적] [/ R] [/ X 파일 | 와일드 카드 [...]] 파일 [파일 ...]

매장량 나중에 사용하기 위해 데이터 블록에 파일을 만듭니다. 파일들은 스크립트에 나타나는 순서로 압축된 데이터 블록에 추가됩니다. 함수는하지만, 반드시 그들이 대본에 나타나는 순서대로 호출되지 않습니다. 일찍라는 함수에서 파일을 추가하지만 스크립트의 끝에 함수를 세우면 따라서, 모든 파일은 이전에 필요한 파일 접근하기 압축 있어야합니다 덧붙였다. 파일이 많은 경우.이 과정은 시간이 오래 걸릴 수 있습니다 onInit가. 하나의 기능입니다. 그밖에 나타나기 전에 그것은, 처음에 호출됩니다. 당신 스크립트의 맨 마지막에 넣을 경우, 일부 파일을 추출하고 이전에 추가한 파일이 많았 으면, 설치 프로그램로드하는 데 시간이 오래 걸릴 수 있습니다. 이 명령은 당신이 데이터 블록의 상단에있는 파일을 포함하여 대신 NSIS는 하단으로 쭉 추구 놓아 로딩 과정을 빠르게하므로 유용한 오는 곳입니다 압축된 데이터 블록.

참조 파일 매개 변수에 대한 자세한 내용은.

4.9.1.8 RMDIR

[/ R] [/ REBOOTOK] directory_name

지정 디렉토리 (아무 와일드 카드와 정규화된 경로)를 제거합니다. 완전히 비어있는 경우 / R이 없다면 디렉토리는 삭제됩니다. / R이 지정되어 있으면 디렉토리 재귀적으로 삭제되며, 지정된 디렉토리의 모든 디렉토리와 파일이 삭제됩니다 있도록. / REBOOTOK이 지정되어 있으면 프로세스 중에 제거되지 않았을 수있는 파일이나 디렉토리는 다시 부팅할 때 삭제됩니다 - 파일이나 디렉토리가 다시 부팅할 때 삭제됩니다 경우 다시 부팅 플래그가 설정됩니다. 파일이나 디렉토리가 제거할 수없는 경우 오류 플래그가 설정됩니다.

RMDIR $ INSTDIR
RMDIR $ INSTDIR \ 데이터
RMDIR / R / REBOOTOK $ INSTDIR
RMDIR / REBOOTOK $ INSTDIR \ DLL을

현재 작업 디렉토리가 삭제되지 않을 수 있습니다. 현재 작업 디렉토리로 설정됩니다 SetOutPath . 예를 들어, 다음 예제는 디렉토리를 삭제하지 않습니다.

SetOutPath $ TEMP \ 디렉토리
RMDIR $ TEMP \ 디렉토리

다음 예제 디렉터리를 삭제에 성공합니다.

SetOutPath $ TEMP \ 디렉토리
SetOutPath $ TEMP를
RMDIR $ TEMP \ 디렉토리

경고 : 사용 RMDIR / R $ INSTDIR을 제거하는 것은 안전하지 않습니다. 그렇지는 않을 것이지만, 사용자는 Program Files 폴더에 설치하도록 선택할 수도 있습니다 그래서이 명령은 설치 제거 프로그램과는 상관없는 다른 프로그램을 포함한 전체 Program Files 폴더를 쓸어 것입니다. 사용자는 다른 파일이지만 프로그램의 파일을 저장할 수 있고 그들이 프로그램을 삭제하길 바랄 것이다. 솔루션은 가능한 쉽게 설치 프로그램에 의해 설치된 파일만 제거를 위해.

4.9.1.9 SetOutPath

outpath

출력 경로 ($ OUTDIR)을 설정하고 존재하지 않는 경우, (재귀적으로 필요한 경우)를 만듭니다. 전체 경로명이어야합니다, 보통 INSTDIR 단지 $입니다 (여러분이 함께 하나의 게으른 경우에 당신은 $ INSTDIR를 지정할 수 있습니다 "-").

SetOutPath $ INSTDIR
파일 program.exe

4.9.2 레지스트리, INI, 파일 지침

regedit.exe를의 (기본값)로 표시되는 기본 키를 지정하려면 키 이름으로 - 아래의 레지스트리 지침 모두에서는 빈 문자열 ( ""둘 사이에 아무 것도 가진 두 따옴표)를 사용하십시오.

전체 경로는 INI 처리 지침 중 하나에 대해 지정되어 있지 않으면 Windows 디렉터리가 사용됩니다.

4.9.2.1 DeleteINISec

ini_filename의 섹션 _

삭제 전체 섹션 [섹션 _] ini_filename에서. 섹션 ini 파일에서 제거되지 않을 수있다면, 오류 플래그가 설정됩니다. 섹션을 찾을 수 없습니다있다면 그것은 오류 플래그를 설정하지 않습니다.

WriteINIStr $ TEMP \ something.ini section1 무언가 123
WriteINIStr $ TEMP \ something.ini section1 somethingelse 1234
WriteINIStr $ TEMP \ something.ini section2 nsis 진실
DeleteINISec $ TEMP \ something.ini section1

4.9.2.2 DeleteINIStr

ini_filename의 섹션 _의 str_name

삭제 [섹션 _] 섹션에서 문자열 str_name ini_filename에서. 문자열이 ini 파일에서 제거되지 않을 수있다면, 오류 플래그가 설정됩니다. 문자열을 찾을 수 없습니다있다면 그것은 오류 플래그를 설정하지 않습니다.

WriteINIStr $ TEMP \ something.ini section1 무언가 123
WriteINIStr $ TEMP \ something.ini section1 somethingelse 1234
DeleteINIStr $ TEMP \ something.ini section1 somethingelse

4.9.2.3 DeleteRegKey

[/ ifempty] root_key 하위 키

삭제 레지스트리 키. / ifempty이 지정되어 있으면 그것도 하위 (그렇지 않으면 전체 레지스트리 트리가 제거됩니다)이없는 경우 레지스트리 키를은 삭제됩니다. root_key의 유효한 값은 아래에 나열됩니다 WriteRegStr . 키를 레지스트리에서 제거되지 않을 수있다면 오류 플래그 (또는 그것이 처음부터 존재하지 않은 경우)로 설정됩니다.

DeleteRegKey HKLM "소프트웨어 \ 내 회사는 \ 내 소프트웨어"
DeleteRegKey / ifempty HKLM "하위 키가있을 소프트웨어 \ 키 '

4.9.2.4 DeleteRegValue

root_key 하위 키 key_name

삭제 레지스트리 값을. root_key의 유효한 값은 WriteRegStr 아래에 나열됩니다. 값이 (또는 그것이 처음부터 존재하지 않은 경우) 레지스트리에서 제거되지 않을 수있다면 오류 플래그가 설정됩니다.

DeleteRegValue HKLM "소프트웨어 \ 내 회사 \ 내 소프트웨어" '어떤 값'

4.9.2.5 EnumRegKey

user_var (출력) root_key 하위 키 인덱스

root_key \ 하위 키에서 'index'th 레지스트리 키의 이름을 가진 사용자 변수 $ x를 설정합니다. root_key의 유효한 값은 WriteRegStr 아래에 나열됩니다. 더 이상 열쇠가있는 경우 빈 문자열을 반환하고, 빈 문자열을 반환하고 오류가있는 경우 오류 플래그를 설정합니다.

StrCpy 0달러 0
루프 :
  EnumRegKey 1달러 HKLM 소프트웨어 0달러
  $ 1 ""완료를 StrCmp
  IntOp 0달러 0달러 + 1
  MessageBox MB_YESNO | MB_ICONQUESTION? "$ 1 $ \ N \ nMore $" IDYES 루프
완료 :

4.9.2.6 EnumRegValue

user_var (출력) root_key 하위 키 인덱스

root_key \ 하위 키에서 'index'th 레지스트리 값의 이름을 가진 사용자 변수 $ x를 설정합니다. root_key의 유효한 값은 WriteRegStr 아래에 나열됩니다. 빈 문자열을 반환하고 더 이상 가치가있는 경우 또는 오류가있는 경우 오류 플래그를 설정합니다.

StrCpy 0달러 0
루프 :
  ClearErrors
  1달러 HKLM 소프트웨어 \ 마이크로 소프트 \ 윈도우 \ CurrentVersion $ 0 EnumRegValue
  IfErrors 완료
  IntOp 0달러 0달러 + 1
  ReadRegStr 2달러 HKLM 소프트웨어 \ 마이크로 소프트 \ 윈도우 \ CurrentVersion 1달러
  MessageBox MB_YESNO | MB_ICONQUESTION "$ 1 = $ 2 $ \ N $ \ nMore?" IDYES 루프
완료 :

4.9.2.7 ExpandEnvStrings

user_var (출력) 문자열

환경 변수 확장 문자열을 변수에 사용자로 $ X . 환경 변수가 존재하지 않으면, 그것은 교체되지 않습니다. 당신은 "% VAR %"를 사용하고 var는 존재하지 않는 경우 예를 들어, 결과는 "%의 VAR"입니다. 오류가있다면 변수는 비울로 설정되어 있고, 오류 플래그가 설정됩니다.

ExpandEnvStrings $ 0 'WINDIR = % WINDIR % $ \ nTEMP = % temp %를 "

4.9.2.8 FlushINI

ini_filename

플러시 INI 파일의 버퍼를. 윈도우 9x는 메모리에있는 INI 파일의 모든 변경 사항을 유지합니다. 이 명령은 즉시 디스크에 기록되도록 변경됩니다. 수동으로 INI를 수정하는 경우를 움직이거나 당신이 그것을 변경 직후 그것을 복사를 삭제, 그것을 사용 WriteINIStr , DeleteINISec 또는 DeleteINStr .

WriteINIStr $ TEMP \ something.ini 테스트 테스트 테스트
FlushINI $ TEMP \ something.ini
삭제 $ TEMP \ something.ini

4.9.2.9 ReadEnvStr

user_var (출력) 이름

환경 문자열 "이름"에서 읽고 $ X 변수는 사용자에 값을 설정합니다. 문자열을 읽기 오류가있는 경우, 사용자 변수 비우로 설정되어 있고, 오류 플래그가 설정됩니다.

0달러 WINDIR을 ReadEnvStr
ReadEnvStr 1달러 TEMP

4.9.2.10 ReadINIStr

user_var (출력) ini_filename의 섹션 _의 entry_name

ini_filename 및 점포 가치의 사용자 변수 $ X로 [섹션 _]에서 entry_name에서 읽습니다. 오류 플래그가 설정되고 항목이 발견되지 않으면 $ x는 빈 ​​문자열로 할당됩니다.

ReadINIStr 0달러 $ INSTDIR \ winamp.ini 윈앰프 outname

4.9.2.11 ReadRegDWORD

user_var (출력) root_key sub_key 이름

사용자 변수 $ X로 레지스트리에서 32 비트 DWORD를 읽습니다. root_key의 유효한 값은 WriteRegStr 아래에 나열됩니다. DWORD가 없다면 오류 플래그가 설정되며, $ x는 ( ""어떤이 0이다) 빈 문자열로 설정됩니다. 값이 존재하지만, DWORD 없다면, 그것은 문자열로 읽어되며 오류 플래그가 설정됩니다.

ReadRegDWORD 0달러 HKLM SOFTWARE \ NSIS VersionBuild

4.9.2.12 ReadRegStr

user_var (출력) root_key sub_key 이름

$ X 변수는 사용자로 레지스트리에서 읽습니다. root_key의 유효한 값은 WriteRegStr 아래에 나열됩니다. 오류 플래그가 설정되며 문자열이 없을 경우에는 $ x는 빈 ​​문자열 ( "")로 설정됩니다. 값이 존재하지만, 유형 REG_DWORD의 경우, 그것은 읽고 변환된 문자열과 오류 플래그가 설정됩니다 것입니다.

ReadRegStr 0달러 HKLM 소프트웨어 \ NSIS ""
DetailPrint는 "0달러 NSIS가에 설치된"

4.9.2.13 WriteINIStr

ini_filename의 섹션 _의 entry_name 값

ini_filename의 [섹션 _]으로 entry_name = 값을 씁니다. 문자열이 ini 파일에 기록되지 않을 수있다면 오류 플래그가 설정됩니다.

WriteINIStr $ TEMP \ something.ini section1 무언가 123
WriteINIStr $ TEMP \ something.ini section1 somethingelse 1234
WriteINIStr $ TEMP \ something.ini section2 nsis 진실

4.9.2.14 WriteRegBin

root_key 하위 키 key_name valuedata

이 명령은 레지스트리에 이진 데이터 블록을 씁니다. root_key의 유효한 값은 WriteRegStr 아래에 나열됩니다. Valuedata (예 DEADBEEF01223211151) 16 진수입니다. 이진 데이터가 레지스트리에 기록되지 않을 수있다면 오류 플래그가 설정됩니다. 레지스트리 키가 없으면 그것은 만들어집니다.

WriteRegBin HKLM "SOFTWARE \ 내 회사 \ 내 소프트웨어" "바이너리 값"DEADBEEF01223211151

4.9.2.15 WriteRegDWORD

root_key 하위 키 key_name 값

이 명령은 레지스트리에 DWORD를 (32 비트 정수) (사용자 변수를 지정할 수 있습니다) 씁니다. root_key의 유효한 값은 WriteRegStr 아래에 나열됩니다. DWORD가 레지스트리에 기록되지 않을 수있다면 오류 플래그가 설정됩니다. 레지스트리 키가 없으면 그것은 만들어집니다.

WriteRegDWORD HKLM "SOFTWARE \ 내 회사 \ 내 소프트웨어" "DWORD 값"0xDEADBEEF

4.9.2.16 WriteRegStr

root_key 하위 키 key_name 값

레지스트리에 문자열을 작성합니다. 참조 WriteRegExpandStr을 자세한 내용은.

WriteRegStr HKLM "SOFTWARE \ 내 회사 \ 내 소프트웨어" "문자열 값", "죽은 쇠고기"

4.9.2.17 WriteRegExpandStr

root_key 하위 키 key_name 값

레지스트리에 문자열을 작성합니다. root_key이 중 하나 여야합니다

  • HKCR 또는 HKEY_CLASSES_ROOT
  • HKLM 또는 HKEY_LOCAL_MACHINE
  • HKCU 또는 HKEY_CURRENT_USER
  • HKU 또는 HKEY_USERS
  • HKCC 또는 HKEY_CURRENT_CONFIG
  • HKDD 또는 HKEY_DYN_DATA
  • HKPD 또는 HKEY_PERFORMANCE_DATA
  • SHCTX 또는 SHELL_CONTEXT

경우 root_key가 있다 SHCTX 또는 SHELL_CONTEXT , 그것으로 대체됩니다 HKLM 경우 SetShellVarContext이 로 설정되어 모두 와 함께 HKCU 경우 SetShellVarContext이 로 설정되어 현재 .

문자열이 레지스트리에 기록되지 않을 수있다면 오류 플래그가 설정됩니다. 문자열의 유형 WriteRegStr위한 REG_SZ 또는 WriteRegExpandStr위한 REG_EXPAND_STR 될 것입니다. 레지스트리 키가 없으면 그것은 만들어집니다.

WriteRegExpandStr HKLM "SOFTWARE \ 내 회사 \ 내 소프트웨어" "문자열 값을 확장" "% WINDIR % \ Notepad.exe가"

4.9.3 범용 지침

4.9.3.1 CallInstDLL

dllfile function_name

라는 함수를 호출하는 function_name NSIS 확장 DLL 내에서 플러그인 인치 참조 예제 플러그인 하나를 만드는 방법에 대한합니다. 확장 DLL이이 스택 및 변수에 액세스할 수 있습니다. 참고 : 자동 추출 및 플러그인 DLL을 사용 플러그인 대신 CallInstDLL의 명령을 호출합니다.에게

"매개 변수"를 눌러
"다른 매개 변수"를 눌러
CallInstDLL $ INSTDIR \ somedll.dll somefunction

쉽게 들어 플러그인 처리, 새로운 사용하는 플러그인 호출 구문을 .

4.9.3.2 CopyFiles

[/ 침묵] [/ FILESONLY] filespec_on_destsys destination_path [size_of_files_in_kb]

복사 원본에서 설치 시스템에서 목적지까지의 파일. 당신이 설치 미디어에서 복사하거나 시스템에서 한 위치에서 다른 위치로 복사하고 싶다면 $ EXEDIR로 유용합니다. 작업 (이것을 사용 / 자동 해제) 많은 시간을 소요하는 경우 복사 작업의 윈도우 상태 창이 표시될 수 있습니다. 마지막 매개 변수 (킬로 바​​이트) 복사됩니다 파일의 크기를 지정하는 데 사용할 수 있도록 설치 프로그램이 디스크 공간 요구 사항 대략적인 할수있어.이 사용자가 복사본을 (/ 침묵이 생략되었을 때에만 가능) 취소하는 경우 오류가 발생하거나, 오류 플래그가 설정됩니다. / FILESONLY이 지정된 경우에만 파일이 복사됩니다.

정규화된 경로 이름은 항상이 명령과 함께 사용해야합니다. 상대 경로를 사용하면 예기치 않은 결과를 얻을 것입니다.

CreateDirectory $ INSTDIR \ 백업
CopyFiles $ INSTDIR \ *. DAT $ INSTDIR \ 백업

4.9.3.3 CreateDirectory

path_to_create

(재귀적으로 필요한 경우) 지정된 디렉토리를 만듭니다. 디렉토리를 만들 수 없습니다 경우에 오류 플래그가 설정됩니다.

당신은 언제나 절대 경로를 지정해야합니다.

CreateDirectory $ INSTDIR \ 몇몇 \ 디렉터리

4.9.3.4 CreateShortCut

link.lnk target.file [매개 변수 [icon.file [icon_index_number [start_options [keyboard_shortcut [설명]]]]]]

단축키 'link.lnk'을 만들어 선택적 매개 변수 '매개 변수'와 'target.file'에 대한 링크. 바로 가기에 사용할 아이콘 'icon.file, icon_index_number'입니다; 기본 아이콘 설정은 icon.file 및 icon_index_number 모두에 대해 빈 문자열을 사용하십시오. : start_options이 다음 중 하나이어야합니다 SW_SHOWNORMAL ,SW_SHOWMAXIMIZED , SW_SHOWMINIMIZED , 또는 빈 문자열입니다. 플래그 조합 (사용 |)를 될 수있는 | keyboard_shortcut는 'C 플래그'의 형태로되어야 : ALT , CONTROL , EXT , 또는 SHIFT . C가 사용하는 문자 (AZ, AZ, 0-9, F1-F24 등)입니다. 공백이 문자열에 허용되지 않습니다. "| 제어 | F8 ALT"좋은 예입니다. $ OUTDIR는 작업 디렉토리에 사용됩니다. 당신이 사용하여 변경할 수 있습니다 SetOutPath에 바로 가기 만들기 전에. 설명이 바로 가기에 대한 설명이 될, 또는 그것이 XP에서 불리는 언급한다. 바로 가기 (경로 (링크 또는 대상) 존재하지 않거나 다른 오류 중 하나를 IE) 만들 수없는 경우 오류 플래그가 설정됩니다.

CreateDirectory "$ SMPROGRAMS은 \ 내 회사"
CreateShortCut "$ SMPROGRAMS \ 내 회사는 \ 내 Program.lnk" "$ INSTDIR \ 내 Program.exe"\
  "일부 명령줄 매개 변수가" "$ INSTDIR \ 내 Program.exe"2 SW_SHOWNORMAL \
  ALT | 제어 | SHIFT | F5를 "설명"

4.9.3.5 GetDLLVersion

파일 이름 user_var (높은 DWORD 출력) user_var (낮은 DWORD 출력)

버전 정보는 "파일 이름"에 DLL (또는 버전 정보를 포함하는 다른 실행 파일)에서 가져옵니다. 성공에 대한 버전 정보의 높고 낮은 dwords있는 사용자 출력 변수를 설정, 실패에 출력이 비어 있고 오류 플래그가 설정됩니다. 다음 예제는 DLL 버전을 읽고 0달러로의 인간의 읽을 수있는 버전을 복사합니다 :

GetDllVersion "$ INSTDIR \ MyDLL.dll"$ R0 $ R1
IntOp $ R2 $ R0 / 0x00010000
IntOp $ $ R0 R3 & 0x0000FFFF
IntOp $ R4 $ R1 / 0x00010000
IntOp $ R5 $ R1 & 0x0000FFFF
StrCpy $ 0 '$ R2. $ R3. $ R4. $ R5 "

GetDLLVersionLocal 4.9.3.6

localfilename user_var (높은 DWORD 출력) user_var (낮은 DWORD 출력)

이것은 GetDLLVersion 비슷만이 그것은 설치 프로그램을 (이것은 실제로 두 StrCpy 명령어로 컴파일) 구축 시스템에 역할을합니다. 빌드 시스템에서 DLL의 DLL 버전 정보가있는 두 개의 출력 변수를 설정합니다.

4.9.3.7 GetFileTime

파일 이름 user_var (높은 DWORD 출력) user_var (낮은 DWORD 출력)

"파일 이름"의 마지막 쓰기 시간이옵니다. 성공에 대한 타임 스탬프의 높고 낮은 dwords있는 사용자 출력 변수를 설정, 실패에 출력이 비어 있고 오류 플래그가 설정됩니다.

GetFileTimeLocal 4.9.3.8

localfilename user_var (높은 DWORD 출력) user_var (낮은 DWORD 출력)

이것은 GetFileTime 비슷만이 그것은 설치 프로그램을 (이것은 실제로 두 StrCpy 명령어로 컴파일) 구축 시스템에 역할을합니다. 빌드 시스템에있는 파일의 파일 타임 스탬프와 두 개의 출력 변수를 설정합니다.

4.9.3.9 GetFullPathName

[/ SHORT] user_var (출력) path_or_file

사용자 변수 $ X, 지정된 파일의 전체 경로에 할당합니다. 매개 변수의 경로 부분이 발견되지 않으면, 오류 플래그가 설정되며, $ x가 비어있을 것입니다. / SHORT이 지정되어 있으면 경로가 짧은 파일 이름 형식으로 변환됩니다. / SHORT가 지정되지 않은 경우에는 경로가 긴 파일 이름 형태로 변환되지 않습니다. 긴 파일 이름을 얻으려면, 플러그인 시스템을 이용한 GetLongPathName 전화하십시오. 그 GetLongPathName는 윈도우 98, 윈도우 2000 이상에서만 사용할 수 있습니다.

StrCpy $ INSTDIR $ PROGRAMFILES \ NSIS
SetOutPath $ INSTDIR
GetFullPathName 0달러 ..
\ 프로그램 파일 : $ 0 DetailPrint는 C #을 출력합니다
GetFullPathName / SHORT 0달러 $ INSTDIR
\ Progra ~ 1 \ NSIS : $ 0 DetailPrint는 C #을 출력합니다
StrCpy 0달러 : C : \ Progra ~ 1 \ NSIS
시스템 :: 콜 'kernel32 :: GetLongPathName (T R0, T. R1, 나는 $ {NSIS_MAX_STRLEN}) 나. R2'
2달러 오류 2를 StrCmp
StrCpy 0달러 1달러
# 인쇄됩니다 $ 0 DetailPrint C : \ 프로그램 파일 지원 \ NSIS,

4.9.3.10 GetTempFileName

user_var (출력) base_dir

사용자 변수 $ X, 임시 파일의 이름을 지정합니다. 파일이 만들어진 것이다, 그래서 당신은 다음 원하는 건 그것을 덮어쓸 수 있습니다. 임시 파일의 이름은 고유해야 보장됩니다. 임시 파일은 윈도우 임시 디렉토리보다 다른 디렉터리에 만들 어질하고자하는 경우, base_dir를 지정합니다. 그것으로 한 파일을 삭제합니다.

$ 0 GetTempFileName
파일 / oname = 0달러 something.dat
# something.dat 뭔가를
$ 0 삭제

SearchPath 4.9.3.11

user_var (출력) 파일 이름

사용자 변수 $ X, 두 번째 매개 변수에 의해 명명된 파일의 전체 경로에 할당합니다. 오류 플래그가 설정되며 파일을 찾을 수없는 경우 $ x가 비어있을 것입니다. 파일 시스템 경로를 검색할 수 () SearchPath를 사용합니다.

4.9.3.12 SetFileAttributes

파일 이름 attribute1 | attribute2 | ...

'파일 이름'의 파일 특성을 설정합니다. 유효한 속성과 조합하여 사용할 수 있습니다 |하고 있습니다 :

  • 일반 또는 FILE_ATTRIBUTE_NORMAL (당신이 이것을 생략하려면 0을 사용할 수 있습니다)
  • 보관 또는 FILE_ATTRIBUTE_ARCHIVE
  • HIDDEN 또는 FILE_ATTRIBUTE_HIDDEN
  • 오프라인 또는 FILE_ATTRIBUTE_OFFLINE
  • 읽기 전용 또는 FILE_ATTRIBUTE_READONLY
  • 시스템 또는 FILE_ATTRIBUTE_SYSTEM
  • 임시 또는 FILE_ATTRIBUTE_TEMPORARY

파일의 속성 (파일이 존재하지 않는 즉, 또는 오른쪽에 권한이없는)을 설정할 수없는 경우 오류 플래그가 설정됩니다. 당신은 단지 속성을 설정할 수 있습니다. 그것은 그들을 unset 수 없습니다. 당신은 일반 속성 사용을 제거하려면. 이 방법은 모든 속성이 삭제됩니다. 이 명령은 와일드 카드를 지원하지 않습니다.

4.9.3.13 RegDLL

dllfile [entrypoint_name]

지정된 DLL을로드하고 (또는 entrypoint_name 지정한 경우) DllRegisterServer가 호출합니다. 오류가 발생하면 오류 플래그가 설정됩니다 (즉, 그것은 DLL을로드 OLE 초기화, 진입 점을 찾을 또는 함수가 ERROR_SUCCESS (= 0) 이외의 아무것도 반환하지 수 있습니다.)

사용 SetOutPath을 경로 또는 Windows 디렉터리에 지금 다른 DLL에 의존 DLL에 대해 현재 디렉토리를 설정합니다. 예를 들어, foo.dll 달러 INSTDIR 사용에 위치한 bar.dll에 따라 다릅니다 :

 SetOutPath $ INSTDIR
 RegDLL $ INSTDIR \ foo.dll

4.9.3.14 UnRegDLL

dllfile

로드 지정한 DLL과 호출의 DllUnregisterServer. 오류가 발생하면 오류 플래그가 설정됩니다 (즉, 그것은 DLL을로드 OLE 초기화, 진입 점을 찾을 또는 함수가 ERROR_SUCCESS (= 0) 이외의 아무것도 반환하지 수 있습니다.)

4.9.4 흐름 제어 지침

4.9.4.1 중단

user_message

설치를 취소, 스크립트의 실행을 중지하고 상태 화면에 user_message를 표시합니다. 참고 :이 사실을 사용할 수있는 콜백 함수 특별한 일을 할 수 있습니다. 페이지에서 콜백이 또한 특별한 목적을 위해 중지를 사용합니다.

중지
중지는 "설치할 수 없습니다"

4.9.4.2 호출

function_name | : label_name | user_var (입력)

라는 함수를 호출하는 function_name을 ,이라는 레이블 label_name 하거나 주소를 지정하는 변수. 주소가 반환하는 GetCurrentAddress , GetFunctionAddress 또는 GetLabelAddress . 그것이 생기면 호출이 반환 반환 명령을. 섹션과 기능이 자동으로 종료되어 반환 명령. 제거 기능 설치 기능 및 섹션, 그리고 그 반대에서 호출할 수 없습니다.

기능 FUNC
  전화 : 레이블
  DetailPrint는 "# 1 : 이것은 1 회 나타납니다."
라벨 :
  DetailPrint "# 2 :이 메시지는 # 1 이전과 이후에 나타날 것입니다."
  전화 :. global_label
FunctionEnd

섹션
  FUNC를 불러
  반환

. global_label :
  DetailPrint "# 3 : 글로벌 레이블가 호출되었습니다"
SectionEnd

4.9.4.3 ClearErrors

오류 플래그를 지웁니다.

ClearErrors
IfErrors 0 2
  MessageBox MB_OK "이 메시지 상자가 표시되지 않을 것이다"

4.9.4.4 GetCurrentAddress

user_var (출력)

현재 명령어 (GetCurrentAddress)의 주소를 가져와서 출력 사용자 변수에 저장합니다. 이 사용자 변수는 다음이나 고토를 호출하기 위해 전달이 가능합니다.

기능 FUNC
  DetailPrint "기능"
  IntOp 0달러 0달러 + 2
  $ 0 전화
  DetailPrint "함수 끝"
FunctionEnd

섹션
  DetailPrint "섹션"
  DetailPrint "섹션"
  GetCurrentAddress 0달러
  고토 callFunc

  DetailPrint "섹션으로 돌아가"
  반환

callFunc :
  FUNC를 불러
  "섹션의 끝"을 DetailPrint
SectionEnd

4.9.4.5 GetFunctionAddress

user_var (출력) function_name

함수의 주소를 얻고 출력의 사용자 변수에 저장합니다. 이 사용자 변수는 다음이나 고토를 호출하기 위해 전달이 가능합니다. GetFunctionAddress의 출력은 네가 고토 주소가 있으면 해당 함수가 (당신이 반환에 Goto'd 기능, 당신은 즉시 반환하는 경우)에 반환되지 않습니다 있습니다.

기능 FUNC
  DetailPrint "기능"
FunctionEnd

섹션
  GetFunctionAddress 0달러 FUNC
  $ 0 전화
SectionEnd

4.9.4.6 GetLabelAddress

user_var (출력) 라벨

레이블의 주소를 가져와서 출력 사용자 변수에 저장합니다. 이 사용자 변수는 다음이나 고토를 호출하기 위해 전달이 가능합니다. 당신만을 함수에서 접근이 레이블을 사용하여이 전화를 할 수도 있습니다,하지만 당신은 (잠재적 위험)는 어디에서나 그것을 호출할 수 있습니다. 당신 GetLabelAddress의 출력을 부르면, 그것이, (명시적으로 또는 암시적으로 함수의 끝에)이 돌아올 때까지 코드가 실행되며 다음이 호출 후 진술로 반환됩니다.

라벨 :
DetailPrint '레이블'
GetLabelAddress 0달러 라벨
IntOp 0달러 0달러 + 4
고토 0달러
DetailPrint는 "완료"

4.9.4.7 고토

label_to_jump_to | + 오프셋 | - 오프셋 | user_var (대상)

레이블이 지정되어 있으면 레이블 'label_to_jump_to를 :'고토.

+ 오프셋 또는 오프셋이 지정되어 있으면 점프 오프셋 지시에 의해 상대적인 것입니다. 고토 하나가 다음 명령어로 이동, 고토 -1은 이전 명령 등으로 간다

사용자 변수가 지정된 경우 절대 주소 (일반적 GetLabelAddress 같은 함수에서이 값을 얻을 것이 좋습니다)로 점프. 그 위에 점프하는 것은 아무런 영향을 미치지 않습니다 않도록 컴파일러 플래그 명령과 SectionIn 지침 없습니다.

고토 레이블
고토 2
고토 -2
고토 0달러

4.9.4.8 IfAbort

label_to_goto_if_abort [label_to_goto_if_no_abort]

중지가 호출되는 경우는 사실이 '반환'것입니다. 사용자가 사용자가 수동으로 중단하는 경우 만들 (또는 덮어쓰기)하는 데 실패 또는 파일 중단을 선택하는 경우 발생할 수 있습니다. 이 기능은 instfiles 제품의 휴가 함수에서 호출할 수 페이지 .

페이지 instfiles "" ""instfilesL​​eave

기능 instfilesL​​eave
  IfAbort 0 2
    MessageBox MB_OK "사용자 중단"
FunctionEnd

4.9.4.9 IfErrors

jumpto_iferror [jumpto_ifnoerror]

검사 및 오류 플래그를 지웁니다, 그리고 그것이 설정되어있는 경우, 그것이 고토 jumpto_iferror 것이다, 그렇지 않으면 그것은 고토 jumpto_ifnoerror됩니다. 복구 가능한 오류 (예 : 사용중인 파일을 삭제하는 등)가 발생하면 오류 플래그는 다른 지침에 의해 설정됩니다.

ClearErrors
파일 file.dat
IfErrors 0 2
  ErrorHandler를 불러

4.9.4.10 IfFileExists

file_to_check_for은 [jump_otherwise]을 jump_if_present

파일의 존재 (들) 파일이 별도 Gotos jump_otherwise, 존재하는 경우 file_to_check_for (와일드 카드 또는 디렉토리가 될 수있는), 그리고 Gotos은 jump_if_present 확인합니다. 당신이 파일이 디렉토리 사용 IfFileExists 디렉토리입니다 \ *. * 있는지 확인하려면

IfFileExists $ WINDIR \ Notepad.exe가 0이
  MessageBox MB_OK "메모장이 설치됩니다"

4.9.4.11 IfRebootFlag

jump_if_set [jump_if_not_set]

다시 부팅 플래그를 확인하고, 다시 부팅 플래그가 설정되어 있으면 점프를가 jump_if_set하는 데, 그렇지 않으면 jump_if_not_set로 점프. 다시 부팅 플래그는 삭제 및 이름 바꾸기를 설정할 수 있습니다, 또는 수동으로 SetRebootFlag .

IfRebootFlag 0 noreboot
  MessageBox MB_YESNO는 "재부 팅은 설치를 완료하는 데 필요합니다. 이제 재부 팅 하시겠습니까?" IDNO noreboot
    재부 팅합니다
noreboot :

4.9.4.12 IfSilent

jump_if_silent [jump_if_not]

침묵 깃발을 확인하고, 점프는 설치 프로그램이 자동인지, 그렇지 않으면 jump_if_not하는 점프 jump_if_silent합니다. 침묵 플래그는 설정할 수 있습니다 SilentInstall , SilentUninstall , SetSilent 및 명령줄에서 사용자가 전달 / S에 의해.

IfSilent이
  ExecWait ' "$ INSTDIR \ nonsilentprogram.exe"

4.9.4.13 IntCmp

VAL1 val2 jump_if_equal [jump_if_val1_less] [jump_if_val1_more]

두 정수 VAL1과 val2를 비교합니다. VAL1과 val2는 평등, Gotos jump_if_equal, 그렇지 않으면 경우 VAL1 <val2, Gotos jump_if_val1_less, 그렇지 않으면 경우 VAL1> val2, Gotos jump_if_val1_more 경우.

IntCmp 0달러 5 is5 lessthan5 morethan5
is5 :
  DetailPrint "$ 0달러 == 5"
  고토 다
lessthan5 :
  DetailPrint "$ $ 0 <5"
  고토 다
morethan5 :
  DetailPrint "$ $ 0> 5"
  고토 다
완료 :

4.9.4.14 IntCmpU

VAL1 val2 jump_if_equal [jump_if_val1_less] [jump_if_val1_more]

이 부호없는 정수 VAL1과 val2를 비교합니다. VAL1과 val2는 평등, Gotos jump_if_equal, 그렇지 않으면 경우 VAL1 <val2, Gotos jump_if_val1_less, 그렇지 않으면 경우 VAL1> val2, Gotos jump_if_val1_more 경우. 부호없는 정수처럼 비교가 수행합니다.

4.9.4.15 MessageBox

mb_option_list messagebox_text [/ SD 리턴] [return_check jumpto] [return_check_2 jumpto_2]

텍스트 "messagebox_text"를 포함하는 MessageBox를 표시합니다. 의 (예 : MB_YESNO | | MB_ICONSTOP) mb_option_list는 다음 중 하나 이상에 의한 분리되어야합니다.

  • MB_OK - OK 버튼과 디스플레이
  • MB_OKCANCEL - 확인 및 취소 버튼으로 표시
  • MB_ABORTRETRYIGNORE - 중지와 디스플레이, 다시 시도 버튼을 무시
  • MB_RETRYCANCEL - 버튼을 다시 시도 및 취소로 표시
  • MB_YESNO - 예로 표시없이 버튼
  • MB_YESNOCANCEL - 예와 디스플레이, 안돼, 취소 단추
  • MB_ICONEXCLAMATION - 느낌표 아이콘이 표시
  • MB_ICONINFORMATION - 정보 아이콘 표시
  • MB_ICONQUESTION - 질문 마르크 아이콘 표시
  • MB_ICONSTOP - 정지 아이콘 표시
  • MB_USERICON - 설치 프로그램의 아이콘 표시
  • MB_TOPMOST - messagebox가 최상위 만들기
  • MB_SETFOREGROUND - 세트 전경
  • MB_RIGHT - 오른쪽 텍스트 정렬
  • MB_RTLREADING - RTL 읽기 순서
  • MB_DEFBUTTON1 - 버튼 1이 기본값입니다
  • MB_DEFBUTTON2 - 버튼 2는 기본이다
  • MB_DEFBUTTON3 - 버튼 3 기본값입니다
  • MB_DEFBUTTON4 - 버튼 4 기본값

Return_check 0 (또는 비어, 또는 중단된) 또는 다음 중 하나가 될 수 있습니다 :

  • IDABORT - 중지 버튼
  • IDCANCEL - 취소 버튼
  • IDIGNORE - 버튼 무시
  • IDNO - 아뇨 버튼
  • IDOK - OK 버튼
  • IDRETRY - 버튼을 다시 시도
  • IDYES - 예 버튼

MessageBox의 반환 값이 return_check 경우, 설치 프로그램 고토 jumpto됩니다.

return_check 중 하나가 설치 프로그램이 자동 때 사용됩니다 옵션을 지정하기 위해 위의 값과 함께 / SD 매개 변수를 사용합니다. 참조 섹션 4.12을 자세한 내용은.

MessageBox MB_OK "간단한 메시지 상자"
MessageBox MB_YESNO는 "그게 사실입니까?" IDYES 진정한 IDNO 거짓
사실 :
  DetailPrint은 "그건 사실이에요!"
  고토 다음
거짓
  DetailPrint는 "그것은 거짓이다"
다음 :
MessageBox MB_YESNO는 "그게 사실이에요? (자동 설치의 예에 대한 기본값)"/ SD IDYES IDNO false2
  DetailPrint는 "그것 (또는 침묵) 사실이야!"
  고토 next2
false2 :
  DetailPrint는 "그것은 거짓이다"
next2 :

4.9.4.16 돌아가기

함수 또는 섹션에서 돌아갑니다.

기능 FUNC
  0 2 "를 지금은 반환 '$ 0 StrCmp
    반환
  # 물건을 할
FunctionEnd

섹션
  FUNC를 불러
  ; "돌아가기"여기 반환
SectionEnd

4.9.4.17이 종료

가능한 빨리 종료하려면 설치 프로그램을 일으 킵니다. 종료가 호출되면, 설치 프로그램 (어떤 콜백 함수를 실행할 수있는 기회를 얻을하지 않습니다) 종료됩니다.

4.9.4.18 SetErrors

오류 플래그를 설정합니다.

SetErrors
IfErrors 0 2
  MessageBox MB_OK "이 메시지 상자는 항상 표시됩니다"

4.9.4.19 StrCmp

str1 str2 jump_if_equal [jump_if_not_equal]

str2로 (insensitively 경우) str1을 비교합니다. str1과 str2가 같은 경우, Gotos의 jump_if_equal는 달리 jump_if_not_equal을 Gotos.

$ 0 '문자열 "0 세를 StrCmp
  DetailPrint '$ 0달러 == "문자열"'
  고토 2
  DetailPrint '$ $ 0! = "문자열"'

4.9.4.20 StrCmpS

str1 str2 jump_if_equal [jump_if_not_equal]

동일 StrCmp 지만, 소문자를 구분합니다.

4.9.5 파일 지침

4.9.5.1 FileClose

처리

FileOpen으로 열린 파일 핸들을 닫습니다.

4.9.5.2 FileOpen

user_var (출력 처리) 파일 이름 openmode

"파일 이름"이라는 파일을 엽니다하고, 손잡이와 핸들 출력 변수를 설정합니다. openmode은 "R"의 하나 (읽기) "W"(쓰기, 파일의 모든 내용이 파괴된다) 또는 ""(추가, 모두 읽기에 대한 개관 작성 내용이 보존 의미)이어야합니다. 열려있는 모든 모드에서, 파일 포인터는 파일의 시작 부분에 배치됩니다. 파일을 열 수없는 경우 핸들 출력 비우로 설정되어 있고, 오류 플래그가 설정됩니다.

어떤 절대 경로를 지정하지 않으면 현재 폴더가 사용됩니다. 현재 폴더는 지난를 사용하여 폴더 집합입니다 SetOutPath의 지시를. 당신이 사용하지 않은 경우 SetOutPath 현재 폴더는 $ EXEDIR .

INSTDIR 0달러 $ \ file.dat r을 FileOpen
$ 0 FileClose

4.9.5.3 FileRead

user_var합니다 (출력) 처리 [maxlen]

파일에서 문자열 (ANSI 문자)는 FileOpen으로 개설 가를 알 수 있죠. (지정된 경우)에 null 바이트를 읽을 때까지, 또는 maxlen이 충족되기 전까지 하나 바꿈 (또는 캐리지 리턴 줄 바꿈 쌍) 발생, 또는 때까지 문자열을 읽습니다. 기본적으로 문자열은 1024 자 (큰 NSIS_MAX_STRLEN으로 구축 특별한 컴파일하거나 다운로드받을 수 있습니다)으로 제한됩니다. 파일 끝에 읽고 더 이상의 데이터를 사용할 경우 출력 문자열은 비어있을 것이고, 오류 플래그가 설정됩니다.

(당신이 만드는 경우 유니 코드 설치 , 함수는 ANSI 문자열을 읽고 적절한 변환을 만드는)

ClearErrors
INSTDIR 0달러 $ \ file.dat r을 FileOpen
IfErrors 완료
FileRead 0달러 1달러
$ 1 DetailPrint
$ 0 FileClose
완료 :

4.9.5.4 FileReadUTF16LE

user_var합니다 (출력) 처리 [maxlen]

구축할 때이 기능에만 사용할 유니 코드 설치 .

FileOpen으로 열린 파일에서 문자열 (UTF-16LE 문자)를 읽습니다. 중 개행 (​​또는 캐리지 리턴 줄 바꿈 쌍) 발생할 때까지, 또는 null이 넓은 문자를 읽을 또는 maxlen 때까지 (지정된 경우) 충족 때까지 문자열을 읽습니다. 기본적으로 문자열은 1024 자 (큰 NSIS_MAX_STRLEN으로 구축 특별한 컴파일하거나 다운로드받을 수 있습니다)으로 제한됩니다. 파일 끝에 읽고 더 이상의 데이터를 사용할 경우 출력 문자열은 비어있을 것이고, 오류 플래그가 설정됩니다.

ClearErrors
INSTDIR 0달러 $ \ file.dat r을 FileOpen
IfErrors 완료
0달러 $ 1 FileReadUTF16LE
$ 1 DetailPrint
$ 0 FileClose
완료 :

4.9.5.5 FileReadByte

user_var합니다 (출력) 처리

FileOpen으로 열린 파일에서 바이트를 읽습니다. 바이트는 정수 (0-255)와 같은 출력에 저장됩니다. 파일 끝에 읽고 더 이상의 데이터를 사용할 경우 출력은 비어있을 것이며, 오류 플래그가 설정됩니다.

ClearErrors
INSTDIR 0달러 $ \ file.dat r을 FileOpen
IfErrors 완료
0달러 $ 1 FileReadByte
0달러 $ 2 FileReadByte
"$ 1 $ 2"DetailPrint
$ 0 FileClose
완료 :

4.9.5.6 FileReadWord

user_var합니다 (출력) 처리

구축할 때이 기능에만 사용할 유니 코드 설치 .

파일에서 단어 (2 바이트)는 FileOpen으로 개설 가를 알 수 있죠. 단어는 정수 (0-65535)와 같은 출력에 저장됩니다. 파일 끝에 읽고 더 이상의 데이터를 사용할 경우 출력은 비어있을 것이며, 오류 플래그가 설정됩니다.

ClearErrors
INSTDIR 0달러 $ \ file.dat r을 FileOpen
IfErrors 완료
FileReadWord 0달러 1달러
FileReadWord 0달러 2달러
"$ 1 $ 2"DetailPrint
$ 0 FileClose
완료 :

4.9.5.7 FileSeek

처리 오프셋 [모드] [user_var (새 위치)]

FileOpen으로 열린 파일을 찾고 있습니다. 모드가 생략 또는 SET로 지정된 경우 파일은 파일의 시작 부분에 상대적인 "상쇄"하기 위해 배치됩니다. 모드가 현재로 지정한 경우, 파일이 현재 파일 위치에 상대적인 "상쇄"하기 위해 배치됩니다. 모드가 최종으로 지정되면이 파일은 해당 파일의 끝 부분에 상대적으로, "오프셋"로 배치됩니다. 최종 매개 변수를 "새로운 위치"가 지정된 경우 새 파일 위치가 그 변수에 저장됩니다.

ClearErrors
INSTDIR 0달러 $ \ file.dat r을 FileOpen
IfErrors 완료
0달러 -5 끝 FileSeek
FileRead 0달러 1달러
$ 1 DetailPrint
$ 0 FileClose
완료 :

4.9.5.8 FileWrite

문자열을 처리

FileOpen에서 열 파일에 ANSI 문자열을 씁니다. 오류가 서면으로 발생하는 경우 오류 플래그가 설정됩니다.

(당신이 만드는 경우 유니 코드 설치 , 함수는 적절한 변환을하고 ANSI 문자열을 씁니다)

ClearErrors
FileOpen 0달러 $ INSTDIR \ file.dat w
IfErrors 완료
"일부 텍스트를"$ 0 FileWrite
$ 0 FileClose
완료 :

4.9.5.9 FileWriteUTF16LE

문자열을 처리

구축할 때이 기능에만 사용할 유니 코드 설치 .

FileOpen에서 열 파일에 유니 코드 (UTF-16LE) 문자열을 씁니다. 오류가 서면으로 발생하는 경우 오류 플래그가 설정됩니다.

ClearErrors
FileOpen 0달러 $ INSTDIR \ file.dat w
IfErrors 완료
"일부 텍스트를"$ 0 FileWriteUTF16LE
$ 0 FileClose
완료 :

4.9.5.10 FileWriteByte

문자열을 처리

FileOpen으로 열린 파일에 대한 '문자열'의 정수 해석을 씁니다. 물론 직접 정수 값을 입력할 수 있습니다. 파일에 입력 - 다음 코드는 '캐리지 리턴 / 줄 피드 "를 씁니다.

FileWriteByte file_handle "13"
FileWriteByte file_handle "10"

쓰는 동안 오류가 발생하면 오류 플래그가 설정됩니다. 정수의 낮은 바이트가 사용되고 있습니다 즉, 쓰기 256 0 등을 작성하는 것과 같습니다

4.9.5.11 FileWriteWord

문자열을 처리

구축할 때이 기능에만 사용할 유니 코드 설치 .

FileOpen에서 열 파일 : 워드 (0-65535 2 바이트 범위)와 같은 '문자열'의 정수 해석을 씁니다. 물론 직접 정수 값을 입력할 수 있습니다. 파일에 입력 - 다음 코드는 '캐리지 리턴 / 줄 피드 "를 씁니다.

FileWriteWord file_handle "13"
FileWriteWord file_handle "10"

쓰는 동안 오류가 발생하면 오류 플래그가 설정됩니다. 정수의 하위 워드를 사용하는 것을 참고, 즉 라이팅 65,536 0을 쓰는 등 동일

4.9.5.12 FindClose

처리

FindFirst와 열린 검색을 닫습니다.

4.9.5.13 FindFirst

user_var (출력 처리) user_var (파일 이름 출력) filespec

filename_output (사용자 변수)에있는 첫 번째 파일을 배치 'filespec'에 대한 검색을 수행합니다. 또한 handle_output (또한 사용자 변수)로 검색 핸들을 저장합니다. 어떤 파일이 발견되지 않은 경우, 두 출력은 비우로 설정되며, 오류 플래그가 설정됩니다. 베스트 FindNext 및 FindClose와 함께 사용됩니다. 파일 이름 출력 경로없이 않습니다.

FindFirst 0달러 $ 1 $ INSTDIR \ *. TXT
루프 :
  $ 1 ""완료를 StrCmp
  $ 1 DetailPrint
  0달러 $ 1 FindNext
  고토 루프
완료 :
$ 0 FindClose

4.9.5.14 FindNext

user_var (filename_output)를 처리

검색 FindFirst로 시작하고 있습니다. 처리는 FindFirst에 의해 반환된 handle_output_variable 있어야합니다. 검색이 완료되면 (더 이상 파일이있다), filename_output은 비어로 설정되어 있고, 오류 플래그가 설정됩니다. 파일 이름 출력 경로없이 않습니다.

4.9.6 설치 제거 지침

4.9.6.1 WriteUninstaller

[경로 \] exename.exe

지정한 파일 이름 (및 선택적으로 경로)로 제거 프로그램을 작성합니다. 만 설치 섹션 또는 함수에서 쓰인 유효하고하면 스크립트의 제거 섹션이 있어야합니다. 참조은 또한 구성을 제거합니다. 당신은이 한 번 이상은 제거 하나 이상의 복사본을 작성하는 호출할 수 있습니다.

WriteUninstaller $ INSTDIR \ uninstaller.exe

4.9.7 기타 지침

4.9.7.1 GetErrorLevel

user_var (에러 레벨 출력)

으로 설정 마지막 오류 수준을 반환합니다 SetErrorLevel 그것을 사용하지 않을 거라면 또는 -1.

$ 0 GetErrorLevel
IntOp 0달러 0달러 + 1
$ 0 SetErrorLevel

4.9.7.2 GetInstDirError

user_var (오류 출력)

디렉토리 페이지의 휴가 함수에 사용하십시오. '경우 플래그가 설정 읽습 떠나 DirVerify 사용하는 '이. 가능한 값은 :

0 : 없음 오류

1 : 잘못된 설치 디렉토리

2 : 설치 드라이브에 충분한 공간이되지 않음

! 포함 LogicLib.nsh
PageEx 디렉토리
  휴가를 DirVerify
  PageCallbacks "" ""dirLeave
PageExEnd

기능 dirLeave
  $ 0 GetInstDirError
  $ {} 스위치 0달러
    $ {사례} 0
      MessageBox MB_OK "유효한 설치 디렉토리"
      $ {휴식}
    $ {사례} 1
      MessageBox MB_OK "잘못된 설치 디렉토리!"
      중지
      $ {휴식}
    $ {사례} 2
      MessageBox MB_OK "는하지 충분한 여유 공간이!"
      중지
      $ {휴식}
  $ {EndSwitch}
FunctionEnd

4.9.7.3 InitPluginsDir

플러그인 디렉토리 (초기화 $ PLUGINSDIR ) 이미 초기 없합니다.

InitPluginsDir
파일 / oname = $ PLUGINSDIR \ image.bmp image.bmp

4.9.7.4 NOP

건 아무 래도 상관 없다.

4.9.7.5 SetErrorLevel

error_level

에 대한 설치 또는 제거 프로그램의 오류 레벨 설정 error_level을 . 참조 오류 수준을 자세한 내용은.

0 2를 IfRebootFlag
  SetErrorLevel 4

4.9.7.6 SetRegView

32 | 64 | lastused

에 의해 영향을 레지스트리 뷰 설정 레지스트리 명령을 . 이 Windows x64에 두 견해가 없습니다. 32 비트 애플 리케이션을위한 하나와 x64 애플 리케이션을위한 하나. 기본적으로 WOW64 하에서 x64 시스템에서 실행되는 32 비트 응용 프로그램은 32 비트보기에 액세스할 수 있습니다. 사용 SetRegView 64하면 설치 프로그램이 레지스트리의 x64보기의 키를 액세스할 수 있습니다.

Affects DeleteRegKeyDeleteRegValueEnumRegKeyEnumRegValueReadRegDWORDReadRegStrWriteRegBinWriteRegDWORDWriteRegStr and WriteRegExpandStr.

영향을 미치지 않습니다 InstallDirRegKey을 . 대신, 레지스트리를 사용하여 읽을 수 있습니다 ReadRegStr을 에 . onInit .

SetRegView 32
ReadRegStr 0달러 HKLM 소프트웨어 \ 마이크로 소프트 \ 윈도우 \ CurrentVersion ProgramFilesDir
$ 0 DetailPrint # 인화 C : \ 프로그램 파일 (x86)를
SetRegView 64
ReadRegStr 0달러 HKLM 소프트웨어 \ 마이크로 소프트 \ 윈도우 \ CurrentVersion ProgramFilesDir
\ 프로그램 파일 : 0달러 # 인화 C를 DetailPrint
기능. onInit
  SetRegView 64
  ReadRegStr $ INSTDIR HKLM 소프트웨어 \ NSIS ""
  SetRegView 32
FunctionEnd

4.9.7.7 SetShellVarContext

현재 | 전체

$ SMPROGRAMS 및 기타 셸 폴더의 컨텍스트를 설정합니다. (기본값) '현재'로 설정하면 현재 사용자의 쉘​​ 폴더가 사용됩니다. '전체'로 설정하면, '모든 사용자'쉘 폴더가 사용됩니다. 사용자 폴더 모두가 모든 OSes에서 지원되지 않을 수 있습니다. 모든 사용자 폴더가 발견되지 않으면 현재 사용자 폴더가 사용됩니다."일반 사용자가"모든 사용자 영역에 쓸 수있는 어떠한 권리도 있다고 고려하시기 바랍니다. 단지 관리자는 모든 사용자 영역에 대한 전체 액세스 권한이 있습니다. 당신은 플러그인 UserInfo를 사용하여 이것을 확인할 수 있습니다. 예를 들어 Contrib \ UserInfo \ UserInfo.nsi을 참조하십시오.

설치 프로그램 코드에 사용한다면,이만을 설치에 영향을 미칠 것이며, 유의 및 제거 프로그램 코드에 사용한다면, 이것은 설치 제거에 영향을 미칩니다. 모두에 영향을 미칠 위해서는 모두 사용해야합니다.

SetShellVarContext 현재
StrCpy 0달러 $ 데스크톱
SetShellVarContext 모두
StrCpy $ 1 $ 데스크톱
MessageBox MB_OK 0달러 $ \ N 1달러

4.9.7.8 수면

sleeptime_in_ms

sleeptime_in_ms 밀리초에 대한 설치 프로그램의 실행을 일시 중지합니다. sleeptime_in_ms가 변수가 될 수있다, 예를 들어 "$ 0"또는 번호 "666"를 즉.

DetailPrint "잠자는 ..."
3000 수면
DetailPrint "다시 일할 수 있도록"

4.9.8 문자열 조작 지침

4.9.8.1 StrCpy

user_var (대상)는 str [maxlen] [start_offset]

하위 버전과 사용자 변수 $ x를 설정합니다. str을 다른 변수를 포함할 수 있습니다, 또는 사용자 변수 집합이되는 것은 (문자열 이런식으로 합치는 등 가능). maxlen이 지정되어 있으면 문자열 maxlen 문자 최대 (maxlen가 부정적인 경우 문자열 끝에서 ABS (maxlen) 문자를 잘리게됩니다) 될 것입니다. start_offset이 지정되어 있으면, 소스 (start_offset가 부정적인 경우, 그것은 문자열의 끝에서 ABS (start_offset)를 시작합니다) 그것에 의해 상쇄된다.

StrCpy $ 0 '문자열 "# ="문자열 "
StrCpy $ 0 '문자열 "3 # ="S "
StrCpy $ 0 '문자열 "-1 # ="strin "
StrCpy $ 0 '문자열 "" "2 # ="문자열 "
StrCpy $ 0 '문자열 "" "-3 # ="ING "
StrCpy $ 0 '문자열 "3 -4 # ="린 "

4.9.8.2 나 strlen

user_var (길이 출력) 하위

하위 버전의 길이와 사용자 변수 $ x를 설정합니다.

나 strlen $ 0 '123456 "# = 6

4.9.9 스택 지원

4.9.9.1 Exch

[user_var | stack_index]

어떤 매개 변수를 지정하지, 교환 스택의 맨 위에 두 가지 요소. 매개 변수를 지정하고 사용자 변수, 매개 변수 스택의 최상위 요소는 교류이다.되면 매개 변수를 지정하고 양의 정수이다되면 Exch는 매개 변수 스택의 최상위 (top)로부터 오프셋에서 지정하는 항목과 스택의 상단에 항목을 교체합니다. 교환을 수행하는 스택에 충분한 아이템이없는 경우 치명적인 오류 (여러분이 코드를 디버깅하는 데 도움 :) 위해 발생합니다.

1 푸시
2 푸시
Exch
0달러 # = 1을 열어요
1 푸시
2 푸시
3 번 눌러
Exch이
0달러 # = 1을 열어요
StrCpy 0달러 일
2 푸시
0달러 # = 2 Exch
1달러 # = 1을 열어요

4.9.9.2 팝

user_var (아웃)

사용자 변수 $ X로 스택의 문자열 대지 팝. 스택이 비어 있으면, 오류 플래그가 설정됩니다.

1 푸시
0달러 # = 1을 열어요

4.9.9.3 푸시

문자열

스택에 문자열을 못살게 굴지. 문자열은 다음 스택 서요 수 있습니다.

"문자열"을 눌러

4.9.10 정수 지원

4.9.10.1 IntFmt

user_var (출력) 형식 numberstring

형식 "numberstring"의 숫자 형식 "포맷"을 사용하고, 사용자 변수 $ x로 출력을 설정합니다. 예를 들어 형식 문자열 "%의 08X" "% U"를 포함

$ 0 '0x로 % 08X "195,948,557을 IntFmt
$ 0 '% C "0x41을 IntFmt

4.9.10.2 IntOp

user_var (출력) OP 값 1 [value2]

값 1과 (OP에 따라 다름) value2 지정된 사용자 변수 (로 결합 user_var ). OP는 다음 중 하나로 정의됩니다 :

  • + 추가 값 및 value2
  • - 값 1에서 value2 차감
  • * MULTIPLIEs 값 및 value2
  • / value2에 의한 값 1은 분할
  • %의 value2에 의한 값 MODULUSs
  • | 이진 ORs 값 및 value2
  • & 바이너리 값 및 value2 ANDs
  • ^ 이진 XORs 값 및 value2
  • >>는 권리 value2에 의한 값 1 교대
  • << value2에 의한 값 왼쪽 교대
  • ~ 비트가 값 막아 주 (즉, 7 4,294,967,288이됩니다)
  • ! 논리적으로 (IE 7이 0이됩니다) 값 막아
  • | | 논리적 ORs 값과 value2
  • &&는 논리적 값과 value2 ANDs
IntOp 0달러 1 + 1
IntOp 0달러 0달러 + 1
IntOp 0달러 0달러 << 2
IntOp 0달러 0달러 ~
IntOp 0달러 0달러 & 0xF

4.9.11 재부팅 지침

4.9.11.1 재부팅

재부 팅 컴퓨터. 이 사람 조심 해요. 그것이 실패하면 . onRebootFailed가 호출됩니다. 어떤 경우에이 명령어는 것처럼 반환 결코 종료합니다 .

MessageBox MB_YESNO | MB_ICONQUESTION "당신은 시스템을 재부 팅 하시겠습니까?" IDNO이
  재부 팅합니다

4.9.11.2 SetRebootFlag

진실 | 거짓

true 또는 false 중 하나를 다시 부팅 플래그를 설정합니다. 플래그의 값을 사용하여 읽을 수 있습니다 IfRebootFlag을 .

진정한 SetRebootFlag
0 2를 IfRebootFlag
  MessageBox MB_OK "이 메시지 상자는 항상 표시됩니다"

4.9.12 로깅 설치 지시

4.9.12.1 로그 집합

| 대한 해제

$ INSTDIR \ install.log 일이 일어날로 로그인 설치할 수 있는지 여부를 설정합니다. 이 함수를 호출하거나 작동하지 않습니다하기 전에 $ INSTDIR는 값이 있어야합니다. 주의 NSIS_CONFIG_LOG 빌드 설정 (설정해야 SCons는 호출 NSIS_CONFIG_LOG = 예 이것을 지원하는 컴파일 타임 (이것은 기본적으로되지 않습니다)에서).참조 NSIS 구축 NSIS를 recompiling에 대한 자세한 내용은.

4.9.12.2 LogText

본문

로그 파일에 설치 로깅이 활성화되어 있으면 삽입 텍스트 "텍스트".

IfFileExists $ WINDIR \ Notepad.exe가 0이
  LogText "$ $ WINDIR \ Notepad.exe가 존재합니다"

4.9.13 섹션 관리

4.9.13.1 SectionSetFlags

section_index section_flags

섹션의 플래그를 설정합니다. 플래그는 32 비트 정수입니다. 첫 번째 비트 (최저)이 섹션이 현재 선택되었는지 여부를 나타내는 두 번째 비트 섹션 섹션 그룹​​ (당신이 정말로 무엇을하는지 알지 못한다면 이것을 수정하지 않음)인지 여부를 나타내는 세 번째 비트 섹션인지 여부를 나타냅니다 섹션 그룹​​ 엔드 (다시 변경하지 않는다), 네 번째 비트는 섹션 굵게 또는하지에 표시되는지 여부를 나타내는 다섯 번째 비트 섹션은 읽기 전용인지 여부를 나타내는 여섯 번째 비트 섹션 그룹​​이 자동으로인지 여부를 나타냅니다 확대 일곱 번째 비트가 부분적으로 선택된 섹션 그룹​​에 대한 설정, 여드레째되는 비트는 내부적으로 부분적으로 선택된 섹션 그룹​​ toggling에 사용되며, 아홉 번째 비트는 섹션 이름 변경을 반영하기 위해 사용됩니다. 범위 섹션의 아웃이 지정되지 않으면 오류 플래그가 설정됩니다.

각각의 플래그는`SF_`접두사가 붙은 이름을 가지고 있습니다 :

! 정의는 1 SF_SELECTED
! 정의 SF_SECGRP이
! 정의 SF_SECGRPEND 4
! 정의 SF_BOLD 8
! 정의 SF_RO 16
! 정의 SF_EXPAND 32
! 정의는 64 SF_PSELECTED

사용의 예를 들어 참조하시기 바랍니다 원 section.nsi 예제.

보다 유용한 매크로 및 정의, \ Sections.nsh 포함을 참조하십시오.

섹션 테스트 test_section_id
SectionEnd

기능. onInit
  # 설정 섹션에서 '시험'으로 선정하고 읽기 전용
  IntOp 0달러 $ {SF_SELECTED} | $ {SF_RO}
  SectionSetFlags $ {test_section_id} 0달러
FunctionEnd

4.9.13.2 SectionGetFlags

section_index user_var (출력)

섹션의 플래그를 가져옵니다. 국기에 대한 설명은 위의 참조하십시오. 범위 섹션의 아웃이 지정되지 않으면 오류 플래그가 설정됩니다.

섹션 테스트 test_section_id
SectionEnd

기능. onSelChange
  # 섹션에서 '검사'선택을 유지
  SectionGetFlags $ {test_section_id} 0달러
  IntOp 0달러 0달러 | $ {SF_SELECTED}
  SectionSetFlags $ {test_section_id} 0달러
FunctionEnd

4.9.13.3 SectionSetText

section_index section_text

섹션 section_index에 대한 설명을 설정합니다. 텍스트 "로 설정하면"다음 섹션이 숨겨집니다. 범위 섹션의 아웃이 지정되지 않으면 오류 플래그가 설정됩니다.

섹션 ""test_section_id
SectionEnd

기능. onInit
  # WINDIR $로 섹션의 이름을 변경
  SectionSetText $ {test_section_id} $ WINDIR
FunctionEnd

4.9.13.4 SectionGetText

section_index user_var (출력)

출력에 섹션 section_index의 텍스트 설명을 저장합니다. 섹션이 숨겨져있는 경우 빈 문자열을 저장합니다. 범위 섹션의 아웃이 지정되지 않으면 오류 플래그가 설정됩니다.

섹션 테스트 test_section_id
SectionEnd

기능. onInit
  # 섹션의 이름으로 WINDIR $를 추가
  SectionGetText $ {test_section_id} 0달러
  StrCpy 0달러 "$ 0 - $ WINDIR"
  SectionSetText $ {test_section_id} 0달러
FunctionEnd

4.9.13.5 SectionSetInstTypes

section_index의 inst_types

설치 유형에게 절을 지수가 0으로 시작되는 주 인치 활성화된 상태로 section_index 디폴트로 지정된 부분을 설정합니다. inst_types의 모든 비트 섹션에서 해당 설치 유형 또는하지에 있는지 알려주는 플래그입니다. 당신이 3 설치 유형을 가지고 있으며 원하는 경우 예를 들어, 첫 번째 섹션은 설치 유형에 나서 1과 3, 명령이 같이 표시됩니다에 포함되어야합니다 :

SectionSetInstTypes 0 5

때문에 5 이진 값은 "00000101"입니다. 지정한 섹션 인덱스가 범위를 벗어난 경우에 오류 플래그가 설정됩니다.

섹션 테스트 test_section_id
SectionEnd

기능. onInit
  설치 유형 3과 4와 # 연관 섹션 '테스트'
  SectionSetInstTypes $ {test_section_id} 12
FunctionEnd

4.9.13.6 SectionGetInstTypes

section_index user_var (출력)

섹션의 설치 유형 플래그 배열을 검색합니다. 출력 처리하는 방법에 대한 설명은 SectionSetInstTypes에 대한 설명을 위 참조하십시오. 지정한 섹션 인덱스가 범위를 벗어난 경우에 오류 플래그가 설정됩니다.

섹션 테스트 test_section_id
SectionEnd

기능. onInit
  기존 단체의 꼭대기에서 설치 유형 5 # 연관 섹션 '테스트'
  SectionGetInstTypes $ {test_section_id} 0달러
  IntOp 0달러 0달러 | 16
  SectionSetInstTypes $ {test_section_id} 0달러
FunctionEnd

4.9.13.7 SectionSetSize

section_index new_size

section_index에서 지정한 섹션의 크기를 설정합니다. 인덱스가 제로로 시작합니다. 크기에 대한 가치는 킬로 바이트에 입력되며 자연수를 지원해야합니다.

섹션 테스트 test_section_id
SectionEnd

기능. onInit
  # 섹션에서 '시험'의 필요 크기를 100 바이트로 설정
  SectionSetSize $ {test_section_id} 100
FunctionEnd

4.9.13.8 SectionGetSize

section_index user_var

section_index에서 지정한 섹션의 크기를 가져와서 지정된 사용자 변수에 값을 저장합니다. 인덱스가 제로로 시작합니다.

섹션 테스트 test_section_id
SectionEnd

기능. onInit
  # 100 바이트에 의해 섹션에서 '시험'의 필요 크기를 증가
  SectionGetSize $ {test_section_id} 0달러
  IntOp 0달러 0달러 + 100
  SectionSetSize $ {test_section_id} 0달러
FunctionEnd

4.9.13.9 SetCurInstType

inst_type_idx

현재 InstType을 설정합니다. inst_type_idx는 0과 31 사이 여야합니다. 오류 플래그가됩니다 되지 범위 InstType의 아웃이 사용된 경우 설정합니다.

4.9.13.10 GetCurInstType

user_var

현재 InstType을 얻어서 user_var에 저장합니다. 최초 설치 유형을 선택하면 0 user_var에 넣어지게된다. 두 번째 설치 유형을 선택하면 1 user_var 넣어 등 것입니다. $ {NSIS_MAX_INST_TYPES}의 값 (기본값 32) 사용자 정의 설치 유형이 선택되었다는 것을 의미합니다.

4.9.13.11 InstTypeSetText

inst_type_idx 텍스트

지정된 InstType의 텍스트를 설정합니다. 텍스트 InstType 제거하는 것보다 비어있는 경우. 이전에 사용되지 않는 inst_type_idx 번호를 사용하여 새로운 InstTypes을 만들 수 있습니다. 이 새로운 InstType에 섹션을 추가 / 제거하려면 참조 SectionSetInstTypes을 . 달리 SectionIn 인덱스가 제로 기반으로,이 첫 번째 설치 타입의 인덱스는 0입니다 의미한다.

를 InstType
InstType B

기능. onInit
  # WINDIR $로 처음 설치 타입의 이름을 설정
  InstTypeSetText 0 $ WINDIR
  # 설정 번째 설치 타입의 이름 TEMP $까지
  InstTypeSetText 1 $ TEMP
FunctionEnd

4.9.13.12 InstTypeGetText

inst_type_idx user_var

지정된 InstType의 텍스트를 가져옵니다.

를 InstType
InstType B

기능. onInit
  InstTypeGetText 0 0달러
  0달러 # 출력 'A'를 DetailPrint
  InstTypeGetText 1 0달러
  0달러 # 'B'인쇄물을 DetailPrint
FunctionEnd

4.9.14 사용자 인터페이스 지침

4.9.14.1 BringToFront

설치 창이 표시 냐면하고 창 목록의 상단에 제공합니다. 응용 프로그램이 설치 앞에서 자신을 보여주는 것이 실행된 경우, BringToFront 다시 초점에서 설치 프로그램을있게 될 것입니다.

최근 윈도우 버전은 포그 라운드 윈도우의 설정을 제한할 수 있습니다. 사용자가 설치하는 동안 다른 응용 프로그램에서 작업하는 경우, 사용자는 다른 방법을 사용하여 통보합니다.

4.9.14.2 CreateFont

user_var (출력 처리) face_name [높이] [몸무게] [/ 기울임꼴] [/ 밑줄] [/ 스트라이크]

글꼴을 만들고 user_var로의 핸들을 저장합니다. 에 대한 자세한 내용은 다른 매개 변수는 한 번 가지고 는 Win32 API 함수 CreateFont ()에 대한 MSDN의 페이지 .

당신은 ^ 글꼴 및 글꼴 크기를 사용하여 ^ NSIS에서 사용하는 현재의 폰트 얻을 수 LangString 들.

! 포함 WinMessages.nsh
GetDlgItem HWNDPARENT 0달러 1달러
CreateFont $ 1 "타임즈 새로운 로마", "7" "700"/ 밑줄
SendMessage 0달러 $ {WM_SETFONT} 11 달러

4.9.14.3 DetailPrint

user_message

설치 프로그램의 세부 정보보기에 "user_message"문자열을 추가합니다.

DetailPrint "이 메시지는 설치 창에 표시됩니다"

4.9.14.4 EnableWindow

hwnd (1 | 0)

사용하거나 지정된 창 또는 컨트롤에 마우스와 키보드 입력을 비활성화합니다. 가능한 상태는 0 (장애) 또는 1 (활성)입니다.

GetDlgItem HWNDPARENT 0달러 1달러
0 0 EnableWindow $
1000 수면
0 1 EnableWindow $

4.9.14.5 FindWindow

user_var (hwnd 출력) windowclass [windowtitle] [windowparent] [childafter]

윈도우에 대한 검색합니다. 에서 Win32 FindWindowEx ()처럼 동작합니다. windowclass에 의한 검색 (및 / 또는 windowtitle 지정한 경우). windowparent 또는 childafter이 지정된 경우 검색이 같은 제한됩니다. windowclass 또는 windowtitle이 ""로 지정되면, 그들은 검색에 사용되지 않습니다. 윈도우가 발견되지 않으면 반환되는 사용자 변수는 0입니다. 이전 스타일의 FindWindow 동작을 수행하려면 SendMessage와 함께 FindWindow를 사용합니다.

FindWindow $ 0 '# 32770 "는" "$ HWNDPARENT
FindWindow $ 0 '내 창 클래스 "는"내 창 제목 "

4.9.14.6 GetDlgItem

user_var (출력) 대화 상자가 item_id

지정된 대화 상자 대화 상자에서 item_id 식별 컨트롤의 핸들을 검색합니다. 당신 내면의 대화 상자 컨트롤의 핸들을 얻고 싶다면, 처음 사용할 때 FindWindow user_var (출력) "# 32770" ""$ HWNDPARENT는 내부 대화 상자의 핸들을 얻으​​려고 말야.

GetDlgItem는 $ 0 $ HWNDPARENT 1 # / 다음 버튼을 설치

4.9.14.7 HideWindow

설치 프로그램을 숨깁니다.

4.9.14.8 IsWindow

HWND jump_if_window [jump_if_not_window]

HWND는 윈도우, Gotos jump_if_window, 그렇지 않으면 Gotos jump_if_not_window (지정한 경우) 인 경우.

GetDlgItem HWNDPARENT 0달러 1달러
IsWindow 0달러 0 세
  MessageBox MB_OK "은 윈도우를 찾았습니다!"
  고토 2
  MessageBox MB_OK "아니오 창"

4.9.14.9 LockWindow

오프 |에서

LockWindow에이 변경 내용에 따라 자체 redrawing에서 메인 윈도우를 방지합니다. 언제 LockWindow 오프가 사용되고, 이후 다시 그려야 아니라 모든 컨트롤 에 LockWindow가 다시 그려야합니다. 이것은 이제는 동시에 컨트롤 그룹, 대신 한 번에 하나씩 제어 flickers 때문에 깜빡 페이지 좋네요 보이 네요. 개별 제어 깜박임은 오래된 컴퓨터에 대한 자세한 눈에입니다.

4.9.14.10 SendMessage

HWND 메시지 wparam lparam [user_var (리턴 값)] [/ TIMEOUT = time_in_ms]

HWND에 메세지를 보냅니다. 사용자 변수 $ X가 마지막 매개 변수로 지정하면 (혹은 마지막 끝나기 전에 한 번 당신은 / TIMEOUT을 사용하는 경우), SendMessage의 반환 값은 그것에 저장됩니다. '메시지'를 지정할 때 그냥 메시지의 정수 값을 사용해야합니다. 필요한 곳​​에 wParam이나 lParam으로 : 당신이 문자열이 "문자열 STR"를 사용 보내려면.

  • WM_CLOSE 16
  • WM_COMMAND 273
  • WM_USER 1024

Include WinMessages.nsh to have all of Windows messages defined in your script.

To send a string param, put STR: before the parameter, for example: "STR:Some string".

Use /TIMEOUT=time_in_ms to specify the duration, in milliseconds, of the time-out period.

!include WinMessages.nsh
FindWindow $0 "Winamp v1.x"
SendMessage $0 ${WM_CLOSE} 0 0

4.9.14.11 SetAutoClose

true|false

Overrides the default auto window-closing flag (specified for the installer using AutoCloseWindow, and false for the uninstaller). Specify 'true' to have the install window immediately disappear after the install has completed, or 'false' to make it require a manual close.

4.9.14.12 SetBrandingImage

[/IMGID=item_id_in_dialog] [/RESIZETOFIT] path_to_bitmap_file.bmp

Sets the current bitmap file displayed as the branding image. If no IMGID is specified, the first image control found will be used, or the image control created by AddBrandingImage. Note that this bitmap must be present on the user's machine. Use File first to put it there. If /RESIZETOFIT is specified the image will be automatically resized (very poorly) to the image control size. If you used AddBrandingImage you can get this size, by compiling your script and watching for AddBrandingImage output, it will tell you the size. SetBrandingImage will not work when called from .onInit!

4.9.14.13 SetDetailsView

show|hide

Shows or hides the details, depending on which parameter you pass. Overrides the default details view, which is set via ShowInstDetails.

4.9.14.14 SetDetailsPrint

none|listonly|textonly|both|lastused

Sets mode at which commands print their status. None has commands be quiet, listonly has status text only added to the listbox, textonly has status text only printed to the status bar, and both enables both (the default). For extracting many small files, textonly is recommended (especially on win9x with smooth scrolling enabled).

SetDetailsPrint none
File "secret file.dat"
SetDetailsPrint both

4.9.14.15 SetCtlColors

hwnd [/BRANDING] [text_color] [transparent|bg_color]

Sets a background color and the text color for a static control, edit control, button or a dialog. text_color and bg_color don't accept variables. Use GetDlgItem to get the handle (HWND) of the control. To make the control transparent specify "transparent" as the background color value. You can also specify /BRANDING with or without text color and background color to make the control completely gray (or any other color you choose). This is used by the branding text control in the MUI.

FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 1006
SetCtlColors $0 0xFF0000 0x00FF00

Warning: setting the background color of check boxes to "transparent" may not function properly when using XPStlye on. The background may be completely black, instead of transparent, when using certain Windows themes.

4.9.14.16 SetSilent

silent | normal

Sets the installer to silent mode or normal mode. See SilentInstall for more information about silent installations. Can only be used in .onInit.

4.9.14.17 ShowWindow

hwnd show_state

Sets the visibility of a window. Possible show_states are the same as Windows ShowWindow function. SW_* constants are defined in Include\WinMessages.nsh.

!include WinMessages.nsh
GetDlgItem $0 $HWNDPARENT 1
ShowWindow $0 ${SW_HIDE}
Sleep 1000
ShowWindow $0 ${SW_SHOW}

4.9.15 Multiple Languages Instructions

4.9.15.1 LoadLanguageFile

language_file.nlf

Loads a language file for the construction of a language table. All of the language files that come with NSIS are in Contrib\Language Files

After you have inserted the language file ${LANG_langfile} will be defined as the language id (for example, ${LANG_ENGLISH} will be defined as 1033). Use it with LangStringLicenseLangString, LangDLL and VIAddVersionKey.

4.9.15.2 LangString

name language_id string

Defines a multilingual string. This means its value may be different (or not, it's up to you) for every language. It allows you to easily make your installer multilingual without the need to add massive switches to the script.

Each language string has a name that identifies it and a value for each language used by the installer. They can be used in any runtime string in the script. To use a language string all you need to add to the string is $(LangString_name_here) where you want the LangString to be inserted.

Notes:

  • Unlike defines that use curly braces - {}, language strings use parenthesis - ().
  • If you change the language in the .onInit function, note that language strings in .onInit will still use the detected language based on the user's default Windows language, because the language is initialized after .onInit.
  • Always set language strings for every language in your script.
  • If you set the language ID to 0 the last used language by LangString or LoadLanguageFile will be used.

Example of usage:

 LangString message ${LANG_ENGLISH} "English message"
 LangString message ${LANG_FRENCH} "French message"
 LangString message ${LANG_KOREAN} "Korean message"

 MessageBox MB_OK "A translated message: $(message)"

4.9.15.3 LicenseLangString

name language_id license_path

Does the same as LangString only it loads the string from a text/RTF file and defines a special LangString that can be used only by LicenseData.

LicenseLangString license ${LANG_ENGLISH} license-english.txt
LicenseLangString license ${LANG_FRENCH} license-french.txt
LicenseLangString license ${LANG_GERMAN} license-german.txt
LicenseData $(license)

4.10 Multiple Languages

As of version 2 NSIS fully supports multiple languages. The interface of one installer can support multiple languages.

Use LoadLanguageFile for every language to load the default interface texts and language properties.

The default interface texts can easily be changed using instructions like ComponentText etc.

You can also use the contents of the standard language strings in your own strings (for example, $(^Name) contains the installer's name set using the Name instruction). The names of all standard language strings are listed as comments just above the strings in the language files. The language files are located in Contrib\Language Files.

To create your own language strings, use LangString.

For an example of an installer with multiple languages, see languages.nsi.

4.10.1 Language Selection

When the installer starts up it goes through these steps to select the interface language:

  1. Get user's default Windows UI language
  2. Find a perfect match for the language
  3. If there is no perfect match, find a primary language match
  4. If there is no match, use the first language defined in the script (make sure your first language is a common one like English)
  5. If the language variable $LANGUAGE has changed during .onInit, NSIS goes through steps 2 to 4 again.

4.10.2 LangDLL Plug-in

The LangDLL plug-in allows you to give the user an option to choose the language of the installer. Just push the language id (${LANG_langfile}) and its name for every language in your installer, then the number of languages pushed, the caption, and the text that tells the user to select the language, call the plug-in function named LangDialog, pop the returned value into $LANGUAGE and you're good to go. If the user clicks on the cancel button the return value will be "cancel".

For an example of usage see languages.nsi.

4.10.3 RTL Languages

RTL languages are languages that are written from right to left (e.g. Arabic and Hebrew). NSIS fully supports RTL languages. In the language file there is a place to specify if the language is RTL or not. To find out at runtime if the current language is RTL or not, check the value of the $(^RTL) language string. It will be 1 if the language is RTL and 0 otherwise. This can be useful when using plug-ins that create dialogs, they usually have RTL settings too.

4.11 Plug-in DLLs

The abilities of the NSIS scripting language can be extended by utilising functionality provided in a DLL file. Probably the best known example of this is the InstallOptions.dll bundled with every NSIS release.

When the NSIS compiler starts it scans the plug-ins directory for DLLs and makes a list of the plug-ins found and their exported functions. During compilation if a sequence such as fred::flintstone is encountered where the compiler expected to find a language keyword the compiler will look through this list. If a list entry specifies that fred.dll exports function flintstone NSIS will pack the fred.dll file into the created installer binary.

During execution of a plug-in command NSIS will unpack the necessary DLL to a temporary folder ($PLUGINSDIR), push all of the arguments specified (right-to-left order), and then execute the DLL function.

4.11.1 Using Plug-in Commands

A plug-in call looks like this:

InstallOptions::dialog "ini_file_location.ini"

All parameters are pushed onto the stack (in this case, the plug-in function only needs one parameter). Some plug-in commands may not need any parameters on the stack, others might require more of them. To use a plug-in command you will need to read the documentation for the plug-in so that you know what parameters its functions require.

4.11.2 Calling plug-ins manually

If you want to call a plug-in that is stored on user's hard drive or somewhere else, use CallInstDLL. Almost all plug-ins provide installer functionality, so using plug-in commands is way easier. Using CallInstDLL can be useful when you have created plug-ins that should be linked to a certain version of your application and are being copied to the installation folder.

4.12 Silent Installers/Uninstallers

Silent installers are installers which require no user intervention and have no user interface. The user doesn't see any dialog and isn't asked any questions. This is useful for network administrators who wish to install or uninstall something without user intervention so they can perform the operation quickly over any number of computers. It is also useful for other developers who wish to embed another installer in their own and collect all of the required information on their installer instead of showing two installers.

NSIS installers and uninstallers can be both silent and not silent. When an installer or an uninstaller is silent, not all callback functions are called. .onGUIInit.onGUIEnd, their uninstaller equivalents and any callback related to a specific page or page type will not be called.

There are several methods to make an installer or an uninstaller silent:

  1. SilentInstall and SilentUninstall
  2. SetSilent
  3. Passing /S on the command line (case sensitive)

To check if the installer/uninstaller is silent use IfSilent.

To make sure your installer will be silent when it needs to, you should check with IfSilent before each command that might require user intervention or create a window. The MessageBox command, which is the most common culprit in silent installers, has the /SD switch to set a default answer for silent installers. If you want your installer/uninstaller to be able to be completely silent you should use this switch. All internal NSIS message boxes have defaults for silent installers. The silent.nsi example demonstrates all aspects of this topic.

Since the directory page can not be shown on silent installers, the user has an option to specify the installation directory on the command line (this also works on non-silent installers/uninstallers). To do that, the user uses the /D switch as in the following example:

foo.exe /S /D=C:\Program Files\Foo

If your installer/uninstaller requires some more information that can not be gathered when silent, you can allow the user to specify that information on the command line and process it in .onInit. You can use GetOptions.

!include FileFunc.nsh
!insertmacro GetParameters
!insertmacro GetOptions

Function .onInit
  ${GetParameters} $R0
  ClearErrors
  ${GetOptions} $R0 /USERNAME= $0
FunctionEnd

The above example will copy the value the user passes on after /USERNAME= into $0. This allows the user to specify the required information on the command line instead of using the interactive user interface. The user can use:

foo.exe /S /USERNAME=Bar /D=C:\Program Files\Foo

or:

foo.exe /S /USERNAME=string with spaces /D=C:\Program Files\Foo

or:

foo.exe /S /USERNAME="string with spaces" /D=C:\Program Files\Foo

If your installer/uninstaller requires a lot of information and you want it to be able to be silent, you should allow the user to pass on a path to an answers file. This would be much more comfortable than writing all of the information on the command line.

Previous | Contents | Next


SourceForge Logo

'소스코드' 카테고리의 다른 글

안드로이드 책  (0) 2012.08.01
Windows Installer 3.1 Redistributable (v2)  (0) 2012.07.24
윈도우용 git 프로그램 설치하기  (0) 2012.07.19
구글 맵 키 생성  (0) 2012.07.18
xvid.org  (0) 2012.07.13