확장팩 팁과 노하우 게시판

전체보기

모바일 상단 메뉴

본문 페이지

[애드온] [nsi] 설치 애드온 만들기 - 기초 중급편 II -

장군라작스2
조회: 2686
추천: 9
2012-09-12 10:41:09

[nsi] 설치 애드온 만들기 - 기초 중급편-

 

-- 그룹 애드온의 설치/삭제 애드온을 만들고자 할때

-- 그룹 애드온 삭제의 다른 예제

--  Interface의 모든 애드온을 삭제 하고자 할때

 

-- 목록 --

 

test.nsi ; 스크립트가 있는 데이터

;(초급 사용자는 HM NIS Edit, Venis IX 로 Open 사용 권장)

wow.ico ; 설치 애드온이 만들어 지고 나서 생기는 설치 아이콘 (개인이 선택 가능, 48 X 48, 128x128, 256x256  )
wow_uninst.ico : 설치 애드온의 삭제 아이콘 (개인이 선택가능)
wow_welcome.bmp ; 설치 애드온의 설치 화면의 일부 화면 (권장 크기 : 200 X 300, 164 X 314)
License.txt ; 설치 애드온의 설치 화면에서 나오는 라이센스 항목 (본인에 맞게 설정 가능)

testPack 5.0.4_a.exe ; 실행 파일 예제

 

설치 애드온을 만들기 위해서는 항상 바이러스 체크를 함으로써 타 유저가 안전하게 사용할 수 있도록 해야합니다.

 

설치 애드온을 받았을때는 사용전에 바이러스 테스트를 한 후에 게임을 실행 하는것이 좋습니다.

 

설치 애드온 만들기

 


다운로드 :

 

nsis ; 중급 이상 사용자는 해당 사이트에서 다운로드

 

http://nsis.sourceforge.net/

http://nsis.sourceforge.net/Download

 

HM NIS Edit ; 중급 이상 사용자는 해당 사이트에서 다운로드

http://hmne.sourceforge.net/index.php#Download


HM NIS Edit ; 초급 이상 사용자는 해당사이트에서 다운로드 ( 한글화 버전 받기 )

http://jgh0721.tistory.com/attachment/dk39.exe

 

애드온을 개별 삭제 하고자 할때 -------------------------------------------------------------

 

RMDir /r "$INSTDIRInterfaceAddOnsGTFO"

 

애드온을 전체 삭제 하고자 할때 --------------------------------------------------------------

 

RMDir /r "$INSTDIRInterface"

 

- 컴파일 방법 -


Venis IX -> Tools -> Comfile

HM NIS Edit -> NSIS(N) -> 스크립트 컴파일(C) -> Ctrl + 9
HM NIS Edit -> NSIS(N) -> 컴파일 및 실행(O) -> Shift + 9

해당파일.nsi -> 마우스 오른쪽 버튼 클릭 -> Compile NSIS Script -> 클릭

 

-- 스크립트 --

 

 

## script by MONK

## 배포할 프로그램의 정보
!define PRODUCT_NAME "testPack"
!define PRODUCT_VERSION "5.0.4_a" ;프로그램의 버전
!define PRODUCT_PUBLISHER "MONK" ;프로그램을 배포하는 사람
!define PRODUCT_DIR_ROOT_REGKEY "HKLM" ;프로그램의 설치 정보를 넣을 레지스트리의 최상위 경로
!define PRODUCT_DIR_REGKEY "Software${PRODUCT_NAME}" ;프로그램의 설치 정보를 넣을 레지스트리의 하위 경로
## 설치 프로그램의 아이콘과 배경 삽입
!define MUI_ICON "wow.ico" ;설치 프로그램의 아이콘
!define MUI_WELCOMEFINISHPAGE_BITMAP "wow_welcome.bmp" ;환영 페이지의 배경
!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH ;환영 페이지의 배경을 늘리지 않음
## 설치 프로그램의 정보 설정
OutFile "${PRODUCT_NAME} ${PRODUCT_VERSION}.exe" ;설치 프로그램의 이름
InstallDirRegKey HKLM "SOFTWAREBlizzard EntertainmentWorld of Warcraft" "InstallPath" ;프로그램을 설치할 경로를 와우의 레지스트리에서 가져오기
InstallDir $INSTDIR ;프로그램을 설치할 경로 설정
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" ;설치 프로그램의 상위에 주로 나올 제목
BrandingText /TRIMRIGHT "${PRODUCT_NAME}" ;설치 프로그램의 하부에 가로줄과 함께 나올 텍스트
ShowInstDetails show
ShowUnInstDetails show


# MUI 1.67 compatible : 매크로 삽입 ------------------------------------------------------------
!include "MUI.nsh"
!include "WordFunc.nsh"
!include "FileFunc.nsh"


# 페이지 삽입 ------------------------------------------------------------
;!define MUI_ABORTWARNING ;설치/제거 도중 취소하면 경고

!insertmacro MUI_PAGE_WELCOME ;환영 페이지
!insertmacro MUI_PAGE_LICENSE "License.txt" ;라이센스 페이지

!insertmacro MUI_PAGE_COMPONENTS ;설치 항목 선택 페이지
!insertmacro MUI_PAGE_DIRECTORY ;설치할 경로 선택 페이지
!insertmacro MUI_PAGE_INSTFILES ;설치 페이지
;!define MUI_FINISHPAGE_NOAUTOCLOSE ;인스톨후 마지막페이지로 바로 넘어가지 않음
!define MUI_FINISHPAGE_RUN "$INSTDIRLauncher.exe" ;마지막페이지에서 실행할 프로그램
!define MUI_FINISHPAGE_RUN_TEXT "월드오브워크래프트 실행하기" ;마지막페이지에서 실행할 프로그램의 설명
!insertmacro MUI_PAGE_FINISH ;마지막 페이지


# 언어 파일 설정 ------------------------------------------------------------
; 본 항목은 반드시 페이지 삽입 보다 뒤에 와야 합니다.
;!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Korean"

 

SectionGroup /e "공격대 도우미" Raid_SEC

Section "DBM-Pandaria" Add01_SEC
 SetOutPath "$INSTDIR"
 SectionIn RO
 SetOverwrite on

; 파일 복사
  File /a /r "D:TestUIRaidPackDBMInterfaceAddOns"
SectionEnd

Section /o "InvenRaidFrames3" Add02_SEC
 SetOutPath "$INSTDIR"
 
; 파일 복사
  File /a /r "D:TestUIRaidPackInvenRaidFrames3InterfaceAddOns"
 
SectionEnd 


Section /o "Grid" Add03_SEC ; 참고를 위해서 하위 폴더 내용까지 포함 ( 로 설정 가능)
 SetOutPath "$INSTDIR"

 
; 파일 복사
  File /a /r "D:TestUIRaidPackGridInterfaceAddOns"
 
SectionEnd

SectionGroupEnd


SectionGroup /e "미터기" MI_SEC

Section /o "Omen" MI01_SEC
  SetOutPath "$INSTDIR"

; 파일 복사
 File /a /r "D:TestUIRaidPackOmenInterfaceAddOns"
SectionEnd

Section /o "Recount" MI02_SEC
 
 SetOutPath "$INSTDIR"

; 파일 복사
 File /a /r "D:TestUIRaidPackRecountInterfaceAddOns"
SectionEnd

SectionGroupEnd


SectionGroup /e "개인 추가 항목" Individual_SEC

Section /o "GTFO" ID01_SEC
 
 SetOutPath "$INSTDIR"

; 파일 복사
 File /a /r "D:TestUIRaidPackGTFOInterfaceAddOns"
SectionEnd

SectionGroupEnd

; Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${Raid_SEC} "공격대 도우미"
  !insertmacro MUI_DESCRIPTION_TEXT ${Add01_SEC} "DBM 공격대 보스 경고 (필수)선택 지정 "
 !insertmacro MUI_DESCRIPTION_TEXT ${Add02_SEC} "인벤 레이드 유닛 프레임 "
  !insertmacro MUI_DESCRIPTION_TEXT ${Add03_SEC} "Grid 레이드 유닛 프레임 "
 !insertmacro MUI_DESCRIPTION_TEXT ${MI_SEC} "어그로 및 데미지 미터기 "
 !insertmacro MUI_DESCRIPTION_TEXT ${MI01_SEC} "어그로 미터기 "
 !insertmacro MUI_DESCRIPTION_TEXT ${MI02_SEC} "데미지 미터기 "
 !insertmacro MUI_DESCRIPTION_TEXT ${Individual_SEC} "개인 추가항목 선택 "
 !insertmacro MUI_DESCRIPTION_TEXT ${ID01_SEC} "바닥 경고"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

 

# 바로가기와 레지스트리 생성 섹션  ; Interface에 대한 제거 항목 설명 
  Section -AdditionalIcons
  CreateDirectory "$SMPROGRAMS${PRODUCT_NAME}"
  CreateShortCut "$SMPROGRAMS${PRODUCT_NAME}${PRODUCT_NAME} 제거.lnk" "$INSTDIR${PRODUCT_NAME}_uninst.exe"
  CreateShortCut "$SMPROGRAMS${PRODUCT_NAME}World of Warcraft 실행.lnk" "$INSTDIRLauncher.exe"
  CreateShortCut "$DESKTOP${PRODUCT_NAME} 제거.lnk" "$INSTDIR${PRODUCT_NAME}_uninst.exe"
  SectionEnd

  Section -Post
  WriteUninstaller "$INSTDIR${PRODUCT_NAME}_uninst.exe"
  WriteRegStr ${PRODUCT_DIR_ROOT_REGKEY} "${PRODUCT_DIR_REGKEY}" "Install_Dir" "$INSTDIR"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR${PRODUCT_NAME}_uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR${PRODUCT_NAME}_uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
 WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "NoModify" 1
 WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "NoRepair" 1
  SectionEnd

## 제거 함수
  Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(^Name) 을(를) 제거하시겠습니까?" IDYES +2
  Abort
  ${un.DirState} "$INSTDIROld" $R4
 StrCmp $R4 1 ynoldback
  StrCpy $R4 0
  Goto end
ynoldback:
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1 "testpack의 UI를 $(^Name) 설치 전으로 돌리시겠습니까?$n$n" IDYES +2
  StrCpy $R4 0
end:
  Push $R4
  FunctionEnd

  Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 는(은) 완전히 제거되었습니다."
  FunctionEnd

## 제거 섹션
  Section Uninstall
## 파일 삭제
  RMDir /r "$INSTDIRInterface" 
; Interface안에 내용을 모두 삭제
 StrCmp $R4 1 0 nextU

## 원래 설정으로
  Rename "$INSTDIROldInterface" "$INSTDIRInterface"
  RMDir /r "$INSTDIROld"
nextU:

## 바로가기, 레지스트리 삭제
  Delete "$DESKTOP${PRODUCT_NAME} 제거.lnk"
  RMDir /r "$SMPROGRAMS${PRODUCT_NAME}"
  Delete "$INSTDIR${PRODUCT_NAME}_uninst.exe"
  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey ${PRODUCT_DIR_ROOT_REGKEY} "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd

 

 

Lv62 장군라작스2

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징

최근 HOT한 콘텐츠

  • 와우
  • 게임
  • IT
  • 유머
  • 연예
AD