확장팩 팁과 노하우 게시판

전체보기

모바일 상단 메뉴

본문 페이지

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

장군라작스2
댓글: 3 개
조회: 7461
추천: 16
2013-02-01 18:33:13

 

 

많은 유저분들이 편안하게 개인의 애드온 모음집을 배포 및 사용하게 만들고자 올립니다.

 

작업은 고스트 및 comback 7.0이 있는 개인 컴퓨터에서 하였습니다.

유저의 컴퓨터는 소중하기에 바이러스 검사는 기본으로 하였습니다.

 

-- WTF 항목만 미 사용하고자 할때

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

-- 기존의 WTF와 Interface 및 Fonts 폴더는 Old 폴더에 백업 됩니다.

--  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 ; 설치 애드온의 설치 화면에서 나오는 라이센스 항목 (본인에 맞게 설정 가능)

TestUI 5.1.0.exe : 설치 파일 예제


설치 화면

 

 

 

 

 

 

해당 애드온이 있는 상태에서 동일 해당 애드온을 재설치시에 아래와 같은 메시지가 출력 됩니다.

 

 

설치 애드온 만들기

 

  

- 컴파일 방법 -

 

Venis IX -> Tools -> Comfile

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

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

 

-- 설명 --

 

  !define PRODUCT_NAME "TestUI" ; 설치 애드온 이름 (개인에 맞게 변경, 예제 Test -> RUI) 
  !define PRODUCT_VERSION "5.1.0" ;프로그램의 버전 (개인에 맞게 변경, 예제 5.0.4a -> 5.1.0)
  !define PRODUCT_PUBLISHER "테스터" ;프로그램을 배포하는 사람 (변경, 예제 Test -> RUI)
## 파일 복사
  File /a /r "D:TestUITestUI" ; 개인에 맞게 애드온을 생성한 폴더 변경

 

-- 참고 애드온 폴더 --

 

애드온 폴더는 아래와 같이 하는것이 좋습니다.

 

예제)

 

## 파일 복사
  File /a /r "D:/TestUI/TestUI/" ; 파일 복사 경로
## 드라이브 실제 복사 경로
D:/TestUI/TestUI/Interface/AddOns/ ; AddOns 폴더에 애드온 전체 파일 넣기

 

 

-- 스크립트 --

 

## 배포할 프로그램의 정보
  !define PRODUCT_NAME "TestUI" ; 설치 애드온 이름 (개인에 맞게 변경, 예제 Test -> RUI) 
  !define PRODUCT_VERSION "5.1.0" ;프로그램의 버전 (개인에 맞게 변경, 예제 5.0.4a -> 5.1.0)
  !define PRODUCT_PUBLISHER "테스터" ;프로그램을 배포하는 사람 (변경, 예제 Test -> RUI)
  !define PRODUCT_DIR_ROOT_REGKEY "HKLM"
  !define PRODUCT_DIR_REGKEY "SoftwareTestUI"
  !define PRODUCT_UNINST_ROOT_KEY "HKLM"
  !define PRODUCT_UNINST_KEY "SoftwareMicrosoftWindowsCurrentVersionUninstallTestUI"

## 설치 프로그램의 아이콘과 배경 삽입
  !define MUI_ICON "wow.ico"
  !define MUI_UNICON "wow_uninst.ico"
  !define MUI_WELCOMEFINISHPAGE_BITMAP "wow_welcome.bmp" ;(권장크기 164x314)
  !define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
  !define MUI_LICENSEPAGE_BGCOLOR /grey

## 설치 프로그램의 정보 설정
  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

## 매크로 삽입

!include "MUI.nsh"
!include "WordFunc.nsh"
!include "Sections.nsh"
!include "FileFunc.nsh"
!insertmacro DirState
!insertmacro un.DirState

## 전역 변수 선언
Var VER

## 설치 프로그램이 나타나기 전에 수행할 함수
  Function .onInit

## 기존 버전이 있는지 확인
  ReadRegStr "$5" "${PRODUCT_UNINST_ROOT_KEY}" "${PRODUCT_UNINST_KEY}" "DisplayVersion"
  StrCmp "$5" "${PRODUCT_VERSION}" initA
  StrCmp "$5" "" "0" initB
  StrCpy "$VER" "0"
  Goto end
initA:
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1 "해당 데이터는 이미 설치 되었습니다.$n$n같은 데이터를 재설치 하시게습니까?" IDYES +2
  Abort
 StrCpy "$VER" "1"
  Goto end
initB:
  MessageBox MB_ICONEXCLAMATION|MB_YESNO|MB_DEFBUTTON1 "설치된 $(^Name) 의 버전이 설치할 것과 다릅니다.$n$n완전히 삭제하고 다시 설치하시겠습니까?$n$n※구 버전은 Old 폴더에 백업합니다." IDYES +2
  Abort
 StrCpy "$VER" "2"
end:
  Push $5
  Push $VER
  FunctionEnd

## 페이지 삽입

!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_RUN "$INSTDIRWorld of Warcraft Launcher.exe" ; 마지막 페이지에서 실행할 프로그램
!define MUI_FINISHPAGE_RUN_TEXT "월드오브워크래프트 실행하기" ; 마지막 페이지에서 실행할 프로그램의 설명
!insertmacro MUI_PAGE_FINISH ; 마지막 페이지
!insertmacro MUI_UNPAGE_INSTFILES ; 제거 페이지

## 언어 설정?

!insertmacro MUI_LANGUAGE "Korean"

## 기본 섹션

  Section "!기본 설치 항목" Basic_SEC

  SectionIn RO
  SetOverwrite on
  SetOutPath "$INSTDIR"
  SetOverwrite on
  StrCmp $VER 0 selA
  StrCmp $VER 1 copy
 
## 기존에 있는 타 UI가 있는지 검사
  selA:
  StrCpy $R1 -1
  ${DirState} "$INSTDIRInterface" $R1
 StrCmp $R1 1 backup
  ${DirState} "$INSTDIRWTF" $R1
 StrCmp $R1 1 backup
  StrCmp $R1 -1 copy
  StrCmp $R1 0 copy

## 기존에 있는 타 UI 백업 (Old 폴더에)
  backup:
  RMDir /r "$INSTDIROld"
  CreateDirectory "$INSTDIROld"
  Rename "$INSTDIRInterface" "$INSTDIROldInterface"
  Rename "$INSTDIRWTF" "$INSTDIROldWTF"
  Goto copy
  copy:

## 파일 복사
  File /a /r "D:TestUITestUI"
 
 
SectionEnd

 
# 섹션에 대한 설명
  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${Basic_SEC} "텍스쳐, 액션바, 유닛프레임 등을 포함합니다."
  !insertmacro MUI_FUNCTION_DESCRIPTION_END

# 바로가기와 레지스트리 생성 섹션
  Section -AdditionalIcons
  CreateDirectory "$SMPROGRAMS${PRODUCT_NAME} ${PRODUCT_VERSION}"
  CreateShortCut "$SMPROGRAMS${PRODUCT_NAME} ${PRODUCT_VERSION}${PRODUCT_NAME} ${PRODUCT_VERSION} 제거.lnk" "$INSTDIR${PRODUCT_NAME} ${PRODUCT_VERSION}_uninst.exe"
  CreateShortCut "$SMPROGRAMS${PRODUCT_NAME} ${PRODUCT_VERSION}World of Warcraft 실행.lnk" "$INSTDIRWorld of Warcraft Launcher.exe"
  CreateShortCut "$DESKTOP${PRODUCT_NAME} ${PRODUCT_VERSION} 제거.lnk" "$INSTDIR${PRODUCT_NAME} ${PRODUCT_VERSION}_uninst.exe"
  SectionEnd

  Section -Post
  WriteUninstaller "$INSTDIR${PRODUCT_NAME} ${PRODUCT_VERSION}_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} ${PRODUCT_VERSION}_uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR${PRODUCT_NAME} ${PRODUCT_VERSION}_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 "와우의 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"
  RMDir /r "$INSTDIRWTF"
  RMDir /r "$INSTDIRFonts"
 StrCmp $R4 1 0 nextU

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

## 바로가기, 레지스트리 삭제
  Delete "$DESKTOP${PRODUCT_NAME} ${PRODUCT_VERSION} 제거.lnk"
  RMDir /r "$SMPROGRAMS${PRODUCT_NAME} ${PRODUCT_VERSION}"
  Delete "$INSTDIR${PRODUCT_NAME} ${PRODUCT_VERSION}_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