reference :
http://kin.naver.com/knowhow/entry.php?d1id=3&dir_id=3&eid=jqpkwn4ECfIr/4mMJo06yrqC1Uwf0DUv&qb=bnNpcyB1bmluc3RhbGw=
NSIS 스크립트 예제>
=========================================================================================
;NSIS Modern User Interface
;Eocs (굴단::Nuke팀::헌터)
;Written by Eocs (=Arian2u,4u=SJWannabe=DeadlyAngel)
;★★★--------------------------------
;Include Modern UI
!include "MUI.nsh" ; ◀ Modern UI 의 헤더파일입니다.
; (Modern UI 는 최근의 윈도에서 사용되는 마법사와 같은 형태의
인터페이스를 갖추고 있습니다.)
;★★★--------------------------------
;General
;Name and file
Name "Nuke UI Ver 0.7 베타" ; ◀ 셋업 실행시 상단에 나타날 프로그램 명칭입니다.
OutFile "Nuke_Setup.exe" ; ◀ 셋업파일명을 지정해줍니다.
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\Nuke UI Beta" "" ; ◀ 레지스트리에 등록합니다.
;★★★--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;★★★--------------------------------
;Pages
!insertmacro MUI_PAGE_LICENSE $(myLicenseData) ; ◀ 아래의 A) LicenseData와 맞물려
한글 txt 파일을 읽어들입니다.
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;★★★--------------------------------
;Languages
!define EUL_RUL "를" ;한글 (을)(를) 처리 ; ◀ 한글 (을)(를)처리를 수정해줍니다.
!insertmacro MUI_LANGUAGE "Korean" ; ◀ 기본 언어를 한글로 설정합니다.
;Reserve Files
!insertmacro MUI_RESERVEFILE_LANGDLL
LicenseLangString myLicenseData ${LANG_KOREAN} "${NSISDIR}\Docs\Modern UI\License_NukeUI_KR.txt"
LicenseData $(myLicenseData) ; ◀ A) LicenseLangString과 함께 사용하여 라이센스
정보를 한글 파일로 사용할 수 있도록 합니다.
;★★★--------------------------------
;함수 내에서만 실행되는 것들 처리
Function .onInit ;onInit
;WOW가 설치된 경로 가져오기
ReadRegStr $INSTDIR HKEY_LOCAL_MACHINE "SOFTWARE\Blizzard Entertainment\World of Warcraft" "InstallPath" ; ◀ 레지스트리의 값을 읽어서 $INSTDIR에 저장합니다.
;중복실행 방지
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "NukeUI_Beta_0.7") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "NukeUI 0.7 설치를 위한 인스톨러가 이미 실행중입니다. - Eocs (굴단::Nuke팀::헌터) -" ; ◀ Mutex를 만들어 중복실행을 방지합니다.
Abort
FunctionEnd
;★★★--------------------------------
;Default installation folder
InstallDir $INSTDIR ; ◀ 기본 설정 경로를 지정합니다.
;★★★--------------------------------
;Installer Sections - 필수 애드온 (UnitFrame 관련, Raid 관련, Sct, SpellAllert 등...)
Section "!필수(공통) 기능" GR_COMMON ; ◀ !가 들어간 Section의 문자열은 굵게 나타납니다.
SectionIn RO ; ◀ 필수 선택으로 Read Only
; Write the installation path into the registry
WriteRegStr HKLM SOFTWARE\NukeUI "Install_Dir" "$INSTDIR" ; ◀ 인스톨 경로를 레지스트리에
등록합니다.
; Write the uninstall keys for Windows
; ◀ 아래의 4줄은 Uninstall 정보를 레지스트리에 등록합니다.
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NukeUI" "DisplayName" "Nuke UI Ver 0.7 베타"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NukeUI" "UninstallString" '"$INSTDIR\Uninstall_NukeUI.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NukeUI" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NukeUI" "NoRepair" 1
WriteUninstaller "$INSTDIR\Uninstall_NukeUI.exe"
;Start Menu Shortcuts ; ◀ 프로그램 그룹에 등록하고, 언인스톨의 바로가기 아이콘을 만듭니다.
CreateDirectory "$SMPROGRAMS\Nuke UI Ver 0.7 베타"
CreateShortCut "$SMPROGRAMS\Nuke UI Ver 0.7 베타\Nuke UI 언인스톨(제거).lnk" "$INSTDIR\Uninstall_NukeUI.exe" "" "$INSTDIR\Uninstall_NukeUI.exe" 0
;Remove And Create Directory
RMDir /r "$INSTDIR\Interface" ; Interface(AddOns) 폴더 삭제 ; ◀ /r 옵션은 하위폴더를 포함
RMDir /r "$INSTDIR\WTF" ; WTF(Account) 폴더 삭제
CreateDirectory "$INSTDIR\Interface" ; Interface(AddOns) 폴더 생
CreateDirectory "$INSTDIR\WTF" ; WTF(Account) 폴더 생성
;필수(공통) 애드온 설치
SetOutPath "$INSTDIR\Interface\AddOns\!ImprovedErrorFrame"
File /r "..\..\..\..\AddOns(NukeUI 0.7배포)\!ImprovedErrorFrame\" ; ◀ /r 옵션으로 모두 포함
SetOutPath "$INSTDIR\Interface\AddOns\!StopTheSpam"
;이하 생략 합니다.
;.
;.
;.
;WTF\Account 폴더에 설정 파일 설치
SetOutPath "$INSTDIR\WTF\Account\계정이름입력"
File /r "..\..\..\..\Account(NukeUI 0.7배포)\계정이름입력\"
SectionEnd
;★★★--------------------------------
;Installer Sections - 타이탄 패널과 플러그인
SectionGroup /e "타이탄 패널" GR_TITAN ; ◀ /e 옵션은 Expand입니다. 옵션을 확장시킵니다.
Section "타이탄 기본" SecTitan
SectionIn RO
SetOutPath "$INSTDIR\Interface\AddOns\Titan"
File /r "..\..\..\..\AddOns(NukeUI 0.7배포)\Titan\"
SetOutPath "$INSTDIR\Interface\AddOns\TitanAmmo"
File /r "..\..\..\..\AddOns(NukeUI 0.7배포)\TitanAmmo\"
SetOutPath "$INSTDIR\Interface\AddOns\TitanBag"
File /r "..\..\..\..\AddOns(NukeUI 0.7배포)\TitanBag\"
SetOutPath "$INSTDIR\Interface\AddOns\TitanClock"
File /r "..\..\..\..\AddOns(NukeUI 0.7배포)\TitanClock\"
;이하 생략합니다.
;.
;.
;.
SectionEnd
SectionGroup "타이탄 추가" GR_T_PLUGIN
Section "경험치표시" SecTitanXPStatus
SectionIn RO
SetOutPath "$INSTDIR\Interface\AddOns\TitanXPStatus"
File /r "..\..\..\..\AddOns(NukeUI 0.7배포)\TitanXPStatus\"
SectionEnd
Section /o "어그로경고" SecTitanAggro
SetOutPath "$INSTDIR\Interface\AddOns\TitanAggro"
File /r "..\..\..\..\AddOns(NukeUI 0.7배포)\TitanAggro\"
SectionEnd
;이하 생략합니다.
;.
;.
;.
SectionGroupEnd
SectionGroupEnd ; ◀ SectionGroup내에 여러 Section과 하위 SectionGroup이 있습니다.
;★★★--------------------------------
; 이하 SectionGroup과 Section들 생략합니다.
;.
;.
;.
;★★★--------------------------------
;Descriptions
;Language strings ; ◀ 각 섹션그룹과 섹션의 설명(툴팁) 문자열을 지정합니다.
LangString DESC_GR_COMMON ${LANG_KOREAN} "Nuke UI Ver 0.7 베타의 공통 라이브러리 입니다.(필수)"
LangString DESC_GR_TITAN ${LANG_KOREAN} "타이탄 패널입니다. WOW 화면 상하단에 유용한 기능들을 제공합니다. (필수+선택)"
LangString DESC_GR_T_PLUGIN ${LANG_KOREAN} "타이탄 패널용 플러그인 입니다. 컴퓨터 사양을 고려하여 목적에 따라 설치하시기바랍니다. (선택)"
LangString DESC_SecTitanXPStatus ${LANG_KOREAN} "Titan Panel을 경험치바 형식으로 보이게하고 경험치 정보를 표시합니다. (필수)"
LangString DESC_SecTitanAggro ${LANG_KOREAN} "어그로 대상을 탐지하고 알려주는 기능을 제공합니다. (선택)"
;이하 생략합니다.
;.
;.
;.
;Assign language strings to sections ; ◀ 지정한 설명(툴팁) 문자열을 나타내도록 합니다.
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${GR_COMMON} $(DESC_GR_COMMON)
!insertmacro MUI_DESCRIPTION_TEXT ${GR_T_PLUGIN} $(DESC_GR_T_PLUGIN)
!insertmacro MUI_DESCRIPTION_TEXT ${SecTitan} $(DESC_SecTitan)
!insertmacro MUI_DESCRIPTION_TEXT ${SecTitanXPStatus} $(DESC_SecTitanXPStatus)
;이하 생략합니다.
;.
;.
;.
;★★★--------------------------------
;Uninstaller Section
Section "Uninstall"
; Remove registry keys ; ◀ 레지스트리에서 정보를 삭제합니다.
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NukeUI"
DeleteRegKey HKLM SOFTWARE\NukeUI
; Remove files and uninstaller
Delete $INSTDIR\Uninstall_NukeUI.exe ; ◀ 언인스톨용 exe 삭제
; Remove shortcuts
Delete "$SMPROGRAMS\Nuke UI Ver 0.7 베타\*.*"
; Remove directories used for shortcuts
RMDir "$SMPROGRAMS\Nuke UI Ver 0.7 베타" ; ◀ 시작 프로그램에 등록된 것들 삭제
; Remove WOW Inferace And WTF Folder
RMDir /r "$INSTDIR\Interface" ; Interface(AddOns) 폴더 삭제 ; ◀ /r 옵션으로 모두 삭제
RMDir /r "$INSTDIR\WTF" ; WTF(Account) 폴더 삭제 ; ◀ /r 옵션으로 모두 삭제
SectionEnd
=========================================================================================
※ 중요하다고 생각되는 부분만 설명 추가로 주석을 달았습니다.
위 내용만으로 충분히 샘플 스크립트 역할을 하리라고 보는데요 ^^;
NSIS 설치 후, 제공하는 NSIS Examples Directory 폴더의 내용들과
http://nsis.sourceforge.net/ 의 자료들을 통해서 많은 부분 알 수 있었습니다.
http://jgh0721.egloos.com/ 헬마님의 자료도 많은 도움이 되었습니다.
이 자리를 빌어 감사드립니다. ^^;
HELP, CHM과 위의 내용들로 기본 부분은 충분히 이해할 수 있으리라 생각합니다.
※ 이상 미흡하지만, WOW 애드온 배포본 제작할 때 NSIS로 스크립트를 작성하면서
기초적인 NSIS 스크립트에 대한 이해를 돕기위해 작성한 글이었습니다.
출처 : [직접 서술] 블로그 집필 - Eocs (데들리엔젤::헌터)
'CMD BAT 인스톨' 카테고리의 다른 글
cmd 명령어 (0) | 2018.11.04 |
---|---|
[Win32] 레지스트리 읽기 / 쓰기 (0) | 2018.02.23 |
NSIS 예문 파일 (0) | 2018.02.07 |
NSIS 번외 - 레지스트리 (0) | 2018.02.07 |
인스톨프로그램 (2) | 2018.02.06 |
최근댓글