반응형
HM NIS Edit으로 설정한 것들
;HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "PRODUCT 명"
!define PRODUCT_VERSION "버전"
!define PRODUCT_PUBLISHER "회사이름, Inc."
!define PRODUCT_DIR_REGKEY "Software\Microsoft"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
SetCompressor lzma ;압축 방법 (EX. lzma: 7z)
- NSIS의 주석은 ;(세미콜론) 이다.
- !define 매크로 상수를 사용하기 위해서는 ${PRODUCT_NAME} 처럼 사용하여야 한다.
MUI.nsh
; MUI(Modern Interface Settings) UI를 Modern으로 설정한다.
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING ;경고 페이지
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\아이콘 명.ico" ;install 파일 아이콘 설정
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\아이콘 명.ico" ;uninstall 파일 아이콘 설정
;주의할 점은 install, uninstall 아이콘 포멧은 일치해야 함
;${NSISDIR}: NSIS폴더 경로 (C:\Program Files (x86)\NSIS)
; 환영 메시지 페이지
!insertmacro MUI_PAGE_WELCOME
; 설치 경로 선택 페이지
!insertmacro MUI_PAGE_DIRECTORY
; 설치 상태 페이지 (설치 퍼센트가 표시됨)
!insertmacro MUI_PAGE_INSTFILES
; 설치 완료 후 실행할 파일 정의하는 문구
!define MUI_FINISHPAGE_RUN "$INSTDIR\실행할 파일명.exe"
; 설치 완료 페이지
!insertmacro MUI_PAGE_FINISH
; 삭제 확인 페이지
! insertmacro MUI_UNPAGE_CONFIRM
; 삭제 상태 페이지
!insertmacro MUI_UNPAGE_INSTFILES
; 언어 파일
!insertmacro MUI_LANGUAGE "Korean"
; 예약 파일
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; 설치 윈도우가 자동으로 닫힐지 지정
AutoCloseWindow true ; <-> AutoCloseWindow false
본문
Name "${PRODUCT_NAME}" ;설치 파일 Name
OutFile "생성될 설치파일명.exe" ;생성될 설치 파일명
InstallDir "C:\TEST" ;설치될 디렉토리 / $INSTDIR 정의
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show ;설치 파일의 세부사항을 볼 수 있는 설정
ShowUnInstDetails show ;uninstall 파일의 세부사항을 볼 수 있는 설정
;show => nevershow로 하면 "보이지 않음"으로 설정
Section "MainSection" SEC01 ;첫 번째 "MainSection" 이라는 뜻
SetShellVarContext all
Call WindowsType ;정의한 함수 호출 [ Call 함수명 ]
SetOutPath "$INSTDIR" ;설치할 경로 지정
File "파일 경로\설치파일명" ;설치할 파일
ExecWait "파일 경로\실행할 파일명" ;파일 실행
DELETE "파일 경로\삭제할 파일명" ;삭제할 파일
SectionEnd
- SetShellVarContext all
$DESKTOP (바탕화면 디렉터리)
$EXEDIR (인스톨러 실행 파일이 위치하는 디렉터리)
$PROGRAMFILES (Program Files 디렉터리)
$TEMP (임시 디렉터리)
$STARTMENU (시작메뉴 폴더)
$SMPROGRAMS (시작메뉴->프로그램 폴더)
$DOCUMENTS (문서 디렉터리)
등 위와 같은 상수의 컨텍스트는 SetShellVarContext 설정에 따라 달라질 수 있다. 기본값은 현재 사용자이므로 만약 코드가 전부 올바르게 작성되어 있는데 정상 작동하지 않는다 생각이 될 경우
SetShellVarContext all 을 작성하면 될 경우가 있다.
- Call 함수명
함수를 호출할 때 사용된다.
함수 정의 예제 )
Function WindowsType ;Function 함수명
ClearErrors
ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion" "ProgramFilesDir"
${If} $0 == ''
Call InstallNetCore_x86
${Else}
Call InstallNetCore_x64
${EndIf}
FunctionEnd
> ReadRegStr $0 레지스트리 경로 및 이름
$0 : 해당 Value 값이 저장됨.
> ${If} : 조건문을 사용할 때 이와 같이 사용됨, 자세한 예는 코드 참고
- Exec / ExecWait : 뒤에 나오는 경로의 파일을 실행한다.
- Exec : 호출 된 문자열을 일부 응용 프로그램, 콘솔 또는 파일 처럼 실행한다.
- ExecWait : Exec과 마찬가지로 해당 경로 파일을 실행하지만, 프로세스가 종료 될 때까지 기다린다는 차이점이 있다.
레지스트리 등록 및 uninstall 파일
Section -Post
SetShellVarContext all
WriteUninstaller "$INSTDIR\TEST_uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "App Paths" "$INSTDIR\TEST\SampleClient.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Location" "$INSTDIR\TEST"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "1.0.0.0"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\TEST_uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\TEST\SampleClient.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
- WriteUninstaller : uninstall 파일명 및 경로 설정
- WriteRegStr : 레지스트리 등록
WriteRegStr HKLM “레지스트리 경로“ “이름“ “데이터(Value)“
반응형
'NSIS' 카테고리의 다른 글
NSIS 2GB 용량 해결 (7z을 이용하여 해결!) (0) | 2022.04.26 |
---|---|
NSIS 64bit 32bit인지 확인 (레지스트리 값 확인 활용) (0) | 2022.04.26 |
NSIS 파일 존재 확인 / 레지스트리 값 존재 확인 (0) | 2022.04.26 |
NSIS 설치 및 HM NIS Edit 스크립트 마법사 사용하기 (0) | 2022.04.26 |
NSIS 개념과 NSIS 스크립트 (0) | 2021.12.30 |