확장팩 팁과 노하우 게시판

전체보기

모바일 상단 메뉴

본문 페이지

[애드온] [nsi] 설치 애드온 모음집 만들기

장군라작스2
댓글: 1 개
조회: 4062
추천: 6
2012-09-14 16:14:35

설치 애드온 모음집 만들기

 

라이센스가 없는 설치 애드온 모음집 만들기

 

 

목록 설명

 

각 사이트에 포함된 부분들에 대한 설명입니다.

 

목록

 

아래의 내용은 목록 설명에 대한 예제 이며, 실핼 파일 예제가 있어 애드온을 만들때 활용을 할 수 있습니다.

ico 파일과 bmp에 대한 부분은 개인에 맞게 조정 변경하면 됩니다.

 

 

monk.nsi ; 스크립트가 있는 데이터 ;(초급 사용자는 HM NIS Edit, Venis IX 로 Open 사용 권장)

AccountInf.ini ; 캐릭터 ini

wow.ico ; 설치 애드온이 만들어 지고 나서 생기는 설치 아이콘 (개인이 선택 가능, 48 X 48,128x128, 256x256)

wow_uninst ; 제거 아이콘 (개인이 선택 가능, 권장 크기 48 X 48, 128x128, 256x256)

RIGHT Head.bmp : 설치 애드온의 오른쪽 상단 일부 화면 (권장 크기 : 167 X 40)

wow_welcome.bmp ; 설치 애드온의 설치 화면의 일부 화면 (권장 크기 : 200 X 300, 164 X 314)

License.txt ; 설치 애드온의 설치 화면에서 나오는 라이센스 항목 (본인에 맞게 설정 가능)

테스터 UI 5.0.4_a.exe ; 실행 파일 예제

 

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

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

 

 

 

라이센스가 없는 설치 화면

 

설치 화면에 대한 예제이며, 애드온을 만들었을때 진행을 설명하는 화면 입니다.

 

 

글상자 

원본 크기로 보시려면 그림을 클릭하세요.

 

원본 크기로 보시려면 그림을 클릭하세요.

 

원본 크기로 보시려면 그림을 클릭하세요.

 

   

설치 애드온 만들기에 필요한 프로그램

 

설치 애드온 만들기에 필요한 프로그램이며 nsis는 파일의 실행과 HM NIS Edit는 프로그램의 에디트를 돕습니다.

직접 해당 관련 사이트에서 다운로드 하여 사용하는것도 좋습니다.


 

nsi 파일의 Comfile (컴파일)

 

nsi 파일에 대한 컴파일을 할 수 있는 설명 입니다.

 

Venis IX -> Tools -> Comfile

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

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

 

  

애드온 폴더

 

개인이 가지고 있는 애드온 폴더를 복사 하는 설명입니다.

 

UI/UI <--는 전체 파일을 넣을때 사용하는 폴더 예제입니다.

UI/Pack <--은 개별 파일을 넣을때 사용하는 폴더 예제입니다.

 

 
## 파일 복사 ; 전체 파일에 대한 복사를 설명하는 설명입니다.
  File /a /r "D:/UI/UI/" ; 파일 복사 경로
## 드라이브 실제 복사 경로
D:UI/UI/Interface/Addons/ ; AddOns 폴더에 전체 애드온 파일 넣기
## 파일 복사 ; 개별 파일에 대한 복사를 설정하는 설명입니다.
  File /a /r "D:/UI/Pack/DBM/" ; 파일 복사 경로
## 드라이브 실제 복사 경로
D:UI/Pack/DBM/Interface/Addons/ ; AddOns 폴더에 DBM 애드온 파일 넣기

 

 

스크립트 설명

 

nsi로 만들어진 데이터에 대한 부분을 나열한 부분이며 어떻게 만들어지는지 보여지는 설명입니다.

 

2번째 줄 !define PRODUCT_NAME "TestUI" UI의 이름인 녹색 부분을 개인에 맞게 변경 하면 됩니다.

3번째 줄 !define PRODUCT_VERSION "5.1.0" ; 배포하는 버전을 개인에 맞게 변경하면 됩니다.
4번째 줄 !define PRODUCT_PUBLISHER "테스터" ; 배포하는 사람의 이름을 개인에 맞게 변경하면 됩니다.

 

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

 

 

스크립트 예제

 

## 배포할 프로그램의 정보
  !define PRODUCT_NAME "테스터 UI"
  !define PRODUCT_VERSION "5.0.4_a"
  !define PRODUCT_PUBLISHER "테스터"
  !define PRODUCT_DIR_ROOT_REGKEY "HKLM"
  !define PRODUCT_DIR_REGKEY "Software${PRODUCT_NAME}"
  !define PRODUCT_UNINST_ROOT_KEY "HKLM"
  !define PRODUCT_UNINST_KEY "SoftwareMicrosoftWindowsCurrentVersionUninstall${PRODUCT_NAME}"

## 범용 설정
  !define MUI_ICON "wow.ico"
  !define MUI_UNICON "wow_uninst.ico"
  !define MUI_HEADERIMAGE
  !define MUI_HEADERIMAGE_BITMAP "Right Head.BMP" ; (권장크기 : 160 X 30)
  !define MUI_HEADERIMAGE_UNBITMAP "Right Head.BMP"
  !define MUI_HEADERIMAGE_RIGHT
  !define MUI_WELCOMEFINISHPAGE_BITMAP "wow_welcome.BMP" ;(권장크기 200 X 300)
  !define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
  !define MUI_UNWELCOMEFINISHPAGE_BITMAP "wow_welcome.BMP"
  !define MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH
  !define MUI_LICENSEPAGE_BGCOLOR /gray

## 설치 프로그램의 정보 설정
  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 "WinMessages.nsh"
  !insertmacro StrFilter
  !insertmacro WordFind
  !include "FileFunc.nsh"
  !insertmacro DirState
  !insertmacro un.DirState
  ReserveFile "AccountInf.ini"
  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS

## 전역 변수 선언
  Var VER
  Var INI_ACCOUNT
  Var INI_SERVER
  Var INI_CHARACTER
  Var RE_ACCOUNT_TOTAL
  Var RE_ACCOUNT_NUM
 
## 설치 프로그램이 나타나기 전에 수행할 함수
  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

## 콤포넌트페이지 설정
  !define MUI_COMPONENTSPAGE_TEXT_TOP "자신의 클래스/사양에 맞게 불필요한 애드온은 설치하지 않도록 꼼꼼히 따져보시기 바랍니다."
  !define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE "세부항목"

## 디렉토리페이지 설정
  !define MUI_DIRECTORYPAGE_TEXT_TOP "TesterUI 5.0.4_a 애드온 패키지를 다음 폴더에 설치할 예정입니다.다른 폴더에 설치를 원하시면 '찾아보기'버튼을 눌러서 다른 폴더를 선택해주세요. 와우가 설치된 최상위 폴더만 선택하면 됩니다.하위 항목인 /interface/addns 까지 선택하실경우 제대로 설치되지 않습니다." ;페이지 상단에 출력할 문자열.
  !insertmacro MUI_PAGE_WELCOME

  Page custom AccountInfPage AccountInf
 
  Function AccountInfPage
    !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "$(TEXT_IO_SUBTITLE)"
    !insertmacro MUI_INSTALLOPTIONS_EXTRACT "AccountInf.ini"
    !insertmacro MUI_INSTALLOPTIONS_DISPLAY "AccountInf.ini"
  FunctionEnd
  Function AccountInf
 
## 입력된 사용자 정보 읽어와서 변수에 저장
    !insertmacro MUI_INSTALLOPTIONS_READ $INI_ACCOUNT "AccountInf.ini" "Field 3" "State"
    !insertmacro MUI_INSTALLOPTIONS_READ $INI_SERVER "AccountInf.ini" "Field 5" "State"
    !insertmacro MUI_INSTALLOPTIONS_READ $INI_CHARACTER "AccountInf.ini" "Field 7" "State"

## 변수에 저장된 계정명 대문자로 변환
    ${StrFilter} "$INI_ACCOUNT" "+" "" "" $INI_ACCOUNT

## 레지스트리 경로에 필요한 변수 저장
    StrCpy $1 "${PRODUCT_DIR_REGKEY}$INI_ACCOUNT$INI_SERVER$INI_CHARACTER"
    StrCpy $2 "${PRODUCT_DIR_REGKEY}$INI_ACCOUNT$INI_SERVER"
    StrCpy $3 "${PRODUCT_DIR_REGKEY}$INI_ACCOUNT"

## 레지스트리에서 입력한 케릭터와 동일한 케릭터가 있을 경우 재설치 여부
    ReadRegStr "$0" "${PRODUCT_DIR_ROOT_REGKEY}" "$1" "설치여부"
    StrCmp $0 "" toReg
    StrCmp $0 "no" 0 seekRe
    MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "해당 케릭터는 이미 설치 예정입니다.$n$n예정을 취소하시겠습니까?" IDYES +2
    abort
    DeleteRegKey "${PRODUCT_DIR_ROOT_REGKEY}" "$1"
    EnumRegKey "$9" "${PRODUCT_DIR_ROOT_REGKEY}" "$2" 0
    StrCmp "$9" "" 0 clear
    DeleteRegKey "${PRODUCT_DIR_ROOT_REGKEY}" "$2"
    EnumRegKey "$9" "${PRODUCT_DIR_ROOT_REGKEY}" "$3" 0
    StrCmp "$9" "" 0 clear
    DeleteRegKey "${PRODUCT_DIR_ROOT_REGKEY}" "$3"
    EnumRegKey "$9" "${PRODUCT_DIR_ROOT_REGKEY}" "${PRODUCT_DIR_REGKEY}" 0
    StrCmp "$9" "" 0 clear
    DeleteRegKey "${PRODUCT_DIR_ROOT_REGKEY}" "${PRODUCT_DIR_REGKEY}"
    Goto clear
  seekRe:
    StrCmp $0 "re" +2
    MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "해당 케릭터는 이미 설치 되었습니다.$n$n같은 케릭터를 재설치 하시게습니까?" IDNO +3
    WriteRegExpandStr "${PRODUCT_DIR_ROOT_REGKEY}" "$1" "설치여부" "re"
    Goto reReg
    abort

## 입력된 사용자 정보를 레지스트리로 만들기
 
  toReg:
    WriteRegExpandStr "${PRODUCT_DIR_ROOT_REGKEY}" "$1" "설치여부" "no"
   
  reReg:
    WriteRegExpandStr "${PRODUCT_DIR_ROOT_REGKEY}" "$1" "직업" "$INI_CHARACTER"
   
## "설치할 케릭이 더 있는습니까"를 확인하고 있을 경우 기존 케릭 정보 삭제하고 페이지에 머무르기
    MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "설치할 케릭이 더 있습니까?" IDNO end
   
  clear:
    !insertmacro MUI_INSTALLOPTIONS_READ $INI_CHARACTER "AccountInf.ini" "Field 7" "HWND"
    SendMessage $INI_CHARACTER ${WM_SETTEXT} 0 "STR:"
    abort
  end:
  FunctionEnd

## 페이지 삽입

  !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"

## 사용자 정보 입력 페이지의 제목

  LangString TEXT_IO_TITLE ${LANG_KOREAN} "사용자 정보 입력"
  LangString TEXT_IO_SUBTITLE ${LANG_KOREAN} "올바른 설치를 위해 사용자 정보를 입력받습니다."

## 섹션 삽입 함수

  Function WTFyn
  Pop "$RE_ACCOUNT_TOTAL"
  StrCpy $1 0
 
account:
  EnumRegKey "$3" "${PRODUCT_DIR_ROOT_REGKEY}" "${PRODUCT_DIR_REGKEY}" $1
  StrCmp "$3" "" end
  IntOp $1 $1 + 1
  StrCpy "$INI_ACCOUNT" "$3"
  StrCpy $4 0

server:
  StrCpy "$5" "${PRODUCT_DIR_REGKEY}$INI_ACCOUNT"
  EnumRegKey "$6" "${PRODUCT_DIR_ROOT_REGKEY}" "$5" $4
  StrCmp "$6" "" account
  IntOp $4 $4 + 1
  StrCpy "$INI_SERVER" "$6"
  StrCpy $7 0

character:
  StrCpy "$8" "$5$INI_SERVER"
  EnumRegKey "$9" "${PRODUCT_DIR_ROOT_REGKEY}" "$8" $7
  StrCmp "$9" "" server
  IntOp $7 $7 + 1
  StrCpy "$INI_CHARACTER" "$9"
  StrCpy "$2" "$8$INI_CHARACTER"
  ReadRegStr "$0" "${PRODUCT_DIR_ROOT_REGKEY}" "$2" "설치여부"
  StrCmp "$0" "yes" 0 +2
  StrCpy "$RE_ACCOUNT_TOTAL" "$RE_ACCOUNT_TOTAL$n$INI_ACCOUNT"
  Goto character
end:
  Push "$RE_ACCOUNT_TOTAL"
  FunctionEnd

  Function WTFLoop ;레지스트리에 생성된 사용자 정보에 따라 WTF폴더내 내용의 생성과 복사

  Pop "$RE_ACCOUNT_TOTAL"
  StrCpy $1 0
 
account:
  EnumRegKey "$3" "${PRODUCT_DIR_ROOT_REGKEY}" "${PRODUCT_DIR_REGKEY}" $1
  StrCmp "$3" "" end
  IntOp $1 $1 + 1
  StrCpy "$INI_ACCOUNT" "$3"
  StrCpy $4 0

server:
  StrCpy "$5" "${PRODUCT_DIR_REGKEY}$INI_ACCOUNT"
  EnumRegKey "$6" "${PRODUCT_DIR_ROOT_REGKEY}" "$5" $4
  StrCmp "$6" "" account
  IntOp $4 $4 + 1
  StrCpy "$INI_SERVER" "$6"
  StrCpy $7 0

character:
  ClearErrors
  StrCpy "$8" "$5$INI_SERVER"
  EnumRegKey "$9" "${PRODUCT_DIR_ROOT_REGKEY}" "$8" $7
  StrCmp "$9" "" server
  IntOp $7 $7 + 1
  StrCpy "$INI_CHARACTER" "$9"
  StrCpy "$2" "$8$INI_CHARACTER"
  ReadRegStr "$0" "${PRODUCT_DIR_ROOT_REGKEY}" "$2" "설치여부"
  StrCmp "$0" "yes" character install

install:
  StrCmp "$0" "re" installAccount
  ${WordFind} "$RE_ACCOUNT_TOTAL" "$INI_ACCOUNT" "#" $RE_ACCOUNT_NUM
  StrCmp $RE_ACCOUNT_NUM "no" installAccount

installAccount:
  CreateDirectory "$INSTDIRWTFAccount$INI_ACCOUNT"
  CreateDirectory "$INSTDIRWTFAccount$INI_ACCOUNTSavedVariables"
  CopyFiles /FILESONLY "$INSTDIRWTFAccount계정명*.*" "$INSTDIRWTFAccount$INI_ACCOUNT"
  CopyFiles /FILESONLY "$INSTDIRWTFAccount계정명SavedVariables*.*" "$INSTDIRWTFAccount$INI_ACCOUNTSavedVariables"
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNTSavedVariablesBlinkCallMe.lua" "$INSTDIRWTFAccount$INI_ACCOUNTSavedVariablesBlinkCallMe.lua"
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNTSavedVariablesClick2Cast.lua" "$INSTDIRWTFAccount$INI_ACCOUNTSavedVariablesClick2Cast.lua"
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNTSavedVariablesTalented.lua" "$INSTDIRWTFAccount$INI_ACCOUNTSavedVariablesTalented.lua"


  ## 단축키,매크로 설정 복사
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNTbindings-cache.wtf" "$INSTDIRWTFAccount$INI_ACCOUNTbindings-cache.wtf"
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNTmacros-cache.txt" "$INSTDIRWTFAccount$INI_ACCOUNTmacros-cache.txt"
  goto installserver
 
installServer:
  CreateDirectory "$INSTDIRWTFAccount$INI_ACCOUNT$INI_SERVER"
  CopyFiles "$INSTDIRWTFAccount계정명서버명케릭명" "$INSTDIRWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTER"

  ## 개인매크로,단축키 설정 복사
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERmacros-cache.txt" "$INSTDIRWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERmacros-cache.txt"
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERbindings-cache.wtf" "$INSTDIRWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERbindings-cache.wtf"
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERchat-cache.txt" "$INSTDIRWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERchat-cache.txt"

  CreateDirectory "$INSTDIRWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERSavedVariables"
#  CopyFiles /FILESONLY "$INSTDIROldWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERSavedVariablesBlinkChatHead.lua" "$INSTDIRWTFAccount$INI_ACCOUNT$INI_SERVER$INI_CHARACTERSavedVariablesBlinkChatHead.lua"

  WriteRegExpandStr "${PRODUCT_DIR_ROOT_REGKEY}" "$2" "설치여부" "yes"
  goto character

end:
  Push "$RE_ACCOUNT_TOTAL"
  FunctionEnd

## 기본 섹션

  Section "!기본 설치 항목" Basic_SEC

  SectionIn RO
  SetOverwrite on
  SetOutPath "$INSTDIR"
  SetOverwrite on
  Call WTFyn
  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:UIUI"

## 여러 케릭의 WTF폴더 설치 함수
  Call WTFLoop
 
## 복사 원본 폴더 삭제
  RMDir /r $INSTDIRWTFAccount계정명
  RMDir /r $INSTDIRvar
 
SectionEnd

SectionGroup "공격대 도우미" Raid_SEC

  Section /o "DBM" add01_SEC
    SetOutPath "$INSTDIR"
    File /a /r "D:UIRaidpackDBM"
  SectionEnd

  Section /o "Grid" add02_SEC
    SetOutPath "$INSTDIR"
    File /a /r "D:UIRaidpackGrid"
  SectionEnd

SectionGroupEnd

SectionGroup "미터기" MI_SEC

  Section /o "Omen" MI01_SEC
    SetOutPath "$INSTDIR"
    File /a /r "D:UIRaidpackOmen"
  SectionEnd

  Section /o "Recount" MI02_SEC
    SetOutPath "$INSTDIR"
    File /a /r "D:UIRaidpackRecount"
  SectionEnd

SectionGroupEnd

Section /o "GTFO" add03_SEC
    SetOutPath "$INSTDIR"
    File /a /r "D:UIRaidpackGTFO"
SectionEnd

 
# 섹션에 대한 설명
  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${Basic_SEC} "텍스쳐, 액션바, 유닛프레임 등을 포함"
  !insertmacro MUI_DESCRIPTION_TEXT ${Raid_SEC} "레이드에 필요한 애드온"
  !insertmacro MUI_DESCRIPTION_TEXT ${add01_SEC} "공격대 보스 경고 알림이"
  !insertmacro MUI_DESCRIPTION_TEXT ${add02_SEC} "Grid 레이드 유닛 프레임"
  !insertmacro MUI_DESCRIPTION_TEXT ${add03_SEC} "바닥 경고"
  !insertmacro MUI_DESCRIPTION_TEXT ${MI_SEC} "어그로 및 데미지 미터기 "
  !insertmacro MUI_DESCRIPTION_TEXT ${MI01_SEC} "어그로 경고 알림이"
  !insertmacro MUI_DESCRIPTION_TEXT ${MI02_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" "$INSTDIRLauncher.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