타 블로그에서 퍼온 글이다.


배포 프로그램 이름 지정

!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


출처 : http://skql.tistory.com/505

+ Recent posts