타 블로그에서 퍼온 글이다.
; 배포 프로그램 이름 지정
!define APPNAME "FreemontEncoder"
; 배포 프로그램의 이름 및 버전 표시 (실제 배포 프로그램 실행 시 화면에 표시되는 이름)
!define APPNAMEANDVERSION "FreemontEncoder 2.0"
<?xml:namespace prefix = o />
; Main Install settings
; 프로그램 이름 : 위에미리 정의한 APPNAMEANDVERSION을 지정한다.
Name "${APPNAMEANDVERSION}"
; 기본 설치 경로
InstallDir"$PROGRAMFILES\Freemont\Freemont Encoder"
; 배포 프로그램 정보가 등록될 레지스트리 경로
InstallDirRegKey HKLM"Software\${APPNAME}" ""
; 컴파일 후 배포 프로그램이 출력될 경로 지정
OutFile "C:\FMSSetup.exe"
; Modern interface settings
; UI를 Modern 으로설정한다.
!include "MUI.nsh"
; 경고 페이지 및 설치 종료 후 바로 실행할 파일 지정
!define MUI_ABORTWARNING
!define MUI_FINISHPAGE_RUN"$INSTDIR\Freemont Encoder.exe"
; 설치 및 삭제 아이콘 지정(주의 : 반드시 설치와 삭제 아이콘은 포멧이 일치해야 한다.)
!define MUI_ICON "res\FMS.ico"
!define MUI_UNICON"res\UnInstall.ico"
; 매크로 페이지 삽입
; 환영 메시지 페이지
!insertmacro MUI_PAGE_WELCOME
; 설치 경로 선택 페이지
!insertmacro MUI_PAGE_DIRECTORY
; 설치 상태 페이지 : 설치퍼센트 표시되는 페이지
!insertmacro MUI_PAGE_INSTFILES
; 완료 페이지
!insertmacro MUI_PAGE_FINISH
; 삭제 확인 페이지
!insertmacro MUI_UNPAGE_CONFIRM
; 삭제 상태 페이지 : 삭제퍼센트 표시되는 페이지
!insertmacro MUI_UNPAGE_INSTFILES
; Set languages (first is default language)
; 설치 시 표시 가능한 언어를 설정한다.
; 처음에 설정한 언어가 기본 언어가 된다.
!insertmacro MUI_LANGUAGE"Korean"
!insertmacro MUI_LANGUAGE"English"
!insertmacro MUI_RESERVEFILE_LANGDLL
; 설치 섹션
Section "Freemont Encoder"Section1
;설치 경로에 동일한 파일 존재 시 덮어씌우라는 의미
SetOverwriteon
;파일이 설치될 경로를 위에서 지정한 INSTDIR 로 한다.
SetOutPath"$INSTDIR\"
;INSTDIR 에 설치할 로컬 파일 경로를 지정한다.
File"C\FMS\release\Freemont Encoder.exe"
File"C\FMS\release\config.ini"
;파일이 설치될 경로를 windows\system32로 한다.
;일부 dll 이나 필수 파일 등등…
SetOutPath"$SYSDIR"
;windows\system32 에 설치할 로컬 파일 경로를 지정한다.
File"C\FMS\release\FLogo.ax"
;dll 이나 ocx, ax 와 같이 레지스트리에 등록이 필요한 경우 (cmd : regsvr32.exe)
RegDLL"$SYSDIR\FLogo.ax"
;바로 가기를 등록한다.
;바탕화면에 바로 가기 등록
CreateShortCut"$DESKTOP\Freemont Encoder.lnk" "$INSTDIR\FreemontEncoder.exe"
;시작 – 프로그램에 바로 가기 등록
CreateDirectory"$SMPROGRAMS\Freemont"
CreateShortCut"$SMPROGRAMS\Freemont\Freemont Encoder\Freemont Encoder.lnk""$INSTDIR\Freemont Encoder.exe"
CreateShortCut"$SMPROGRAMS\Freemont\Freemont Encoder\Uninstall.lnk""$INSTDIR\uninstall.exe"
SectionEnd
; 종료 섹션
Section -FinishSection
;종료 섹션은 특별한 일이 없는 이상 아래와 같이 설치하는 프로그램에 대한 정보를 레지스트리에 저장한다.
WriteRegStrHKLM "Software\${APPNAME}" "" "$INSTDIR"
WriteRegStrHKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}""DisplayName" "${APPNAME}"
WriteRegStrHKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}""UninstallString" "$INSTDIR\uninstall.exe"
WriteUninstaller"$INSTDIR\uninstall.exe"
SectionEnd
; Modern install component descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacroMUI_DESCRIPTION_TEXT ${Section1} ""
!insertmacro MUI_FUNCTION_DESCRIPTION_END
; 삭제 섹션
Section Uninstall
;설치 정보 레지스트리를 삭제한다
DeleteRegKeyHKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
DeleteRegKeyHKLM "SOFTWARE\${APPNAME}"
;파일 삭제
;삭제 파일 삭제
Delete"$INSTDIR\uninstall.exe"
;바로 가기 삭제
Delete"$DESKTOP\Freemont Encoder.lnk"
Delete"$SMPROGRAMS\Freemont\Freemont Encoder.lnk"
Delete"$SMPROGRAMS\Freemont\Uninstall.lnk"
;설치 파일 삭제
Delete"$INSTDIR\Freemont Encoder.exe"
Delete"$INSTDIR\config.ini"
;windows\system32 에 설치된 파일에 대한 레지스트리 삭제 (cmd : regsvr32/u)
UnRegDLL"$SYSDIR\FLogo.ax"
;레지스트리에서 삭제된 파일 삭제
Delete"$SYSDIR\FLogo.ax"
;바로 가기 및 설치 디렉토리 삭제
RMDir"$SMPROGRAMS\Freemont\Freemont Encoder"
RMDir"$INSTDIR\"
SectionEnd
; 배포 프로그램 초기화 함수
Function .onInit
;설치 언어 선택 페이지를 표시한다.
!insertmacroMUI_LANGDLL_DISPLAY
FunctionEnd
'프로그래밍 > NSIS' 카테고리의 다른 글
NSIS 제어판에서 삭제하면 폴더가 사라지지 않음 (0) | 2017.04.20 |
---|---|
NSIS 깃허브에 올려진 예제 파일 저장해놓기 (0) | 2017.04.18 |
NSIS 플러그인 적용하기 (0) | 2017.04.03 |
NSIS User Manual (0) | 2017.04.03 |