반응형
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Menu
- 함수
- SetMouseDelay
- IfWinExist
- Blocks
- SetEnv
- 배열
- API
- 식
- MouseClick
- EnvMult
- Threads
- StringGetPos
- DetectHiddenWindows
- 식의 설명
- autohotkey
- Var:=식
- IF (식)
- SetKeyDelay
- EnvAdd
- if(식)
- IfInString
- SetControlDelay
- ControlSend
- SetTitleMatchMode
- ControlGetText
- EnvDiv
- EnvSet
- EnvSub
- if
Archives
- Today
- Total
ㄴrㅎnㅂrㄹrㄱi
애드온모음집 배포용 NSIS스크립트 본문
반응형
-
애드온모음집 배포용 NSIS스크립트
-
-
-
-
# WOW Installer Script BooDoo v2.0 (WISB)
-
# script by 부서진두개골
-
# 2006.08.18
-
# 불필요한 코드가 있거나 잘못된 코드가 있어도 이해하시길 바랍니다. 코딩은 처음이라..;;
-
# 설명도 틀렸을지 모른답니다. ㅠㅠ
-
-
# 설치프로그램의 정보 설정 ------------------------------------------------------------
-
; 개인에 맞게 수정할 부분 !!!
-
; 밑으로 쭉 가시다 보면 "바로가기와 레지스트리 생성 섹션" 부분과 "제거 섹션" 부분도 수정하셔야 합니다.
-
; "기본 섹션"에 위치한 "파일 복사" 부분도 수정해야합니다. (기본 섹션)
-
; 현재는 기본 섹션만 있으니 추가 섹션은 "HM NIS Edit"의 스크립트 작성 마법사를 이용해보고 개인에 맞게 수정하시길 바랍니다.
-
; 나머지 궁금하신 점 있으시면 도움말을 참고 하시고 그래도 궁금하시다 하는 부분은 게시판에 글을 남겨 주시길 바랍니다.
-
-
## 배포할 프로그램의 정보
-
!define PRODUCT_NAME "부두UI" ;프로그램의 이름
-
!define PRODUCT_VERSION "2.3 빌드0815" ;프로그램의 버전
-
!define PRODUCT_PUBLISHER "부서진두개골" ;프로그램을 배포하는 사람
-
!define PRODUCT_DIR_ROOT_REGKEY "HKLM" ;프로그램의 설치 정보를 넣을 레지스트리의 최상위 경로
-
!define PRODUCT_DIR_REGKEY "Software\BooDooUI" ;프로그램의 설치 정보를 넣을 레지스트리의 하위 경로
-
!define PRODUCT_UNINST_ROOT_KEY "HKLM" ;프로그램의 제거 정보를 넣을 레지스트리의 최상위 경로
-
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\BooDooUI" ;프로그램의 제거 정보를 넣을 레지스트리의 하위 경로
-
## 설치 프로그램의 아이콘과 배경 삽입
-
!define MUI_ICON "wow.ico" ;설치 프로그램의 아이콘
-
!define MUI_UNICON "wow_uninst.ico" ;제거 프로그램의 아이콘
-
!define MUI_WELCOMEFINISHPAGE_BITMAP "wow_welcome.bmp" ;환영 페이지의 배경
-
!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH ;환영 페이지의 배경을 늘리지 않음
-
## 설치 프로그램의 정보 설정
-
OutFile "BooDooUI_2_3_0815_install.exe" ;설치 프로그램의 이름
-
InstallDirRegKey HKLM "SOFTWARE\Blizzard Entertainment\World 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"
-
!insertmacro StrFilter
-
!insertmacro WordFind
-
!include "FileFunc.nsh"
-
!insertmacro Locate
-
!insertmacro un.Locate
-
!insertmacro DirState
-
!insertmacro un.DirState
-
-
-
# Reserve Files : 사용자페이지의 정보파일 삽입 ------------------------------------------------------------
-
; These files should be inserted before other files in the data block
-
; Keep these lines before any File command
-
; Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
-
ReserveFile "AccountInf.ini"
-
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
-
-
-
# 전역 변수 선언 ------------------------------------------------------------
-
Var VER
-
Var INI_ACCOUNT
-
Var INI_SERVER
-
Var INI_CHARACTER
-
Var INI_CLASS
-
Var RE_ACCOUNT_TOTAL
-
Var RE_ACCOUNT_NUM
-
-
-
# 설치 프로그램이 나타나기 전에 수행할 함수 ------------------------------------------------------------
-
Function .onInit
-
## 처음 스플래쉬 화면
-
; the plugins dir is automatically deleted when the installer exits
-
;InitPluginsDir
-
;File /oname=$PLUGINSDIR\splash.bmp "logo.bmp"
-
;File /oname=$PLUGINSDIR\splash.wav "C:\myprog\sound.wav"
-
;advsplash::show 1000 600 400 0x04025C $PLUGINSDIR\splash
-
;Pop $0 ;$0 has '1' if the user closed the splash screen early,
-
;'0' if everything closed normally, and '-1' if some error occurred.
-
;Delete $PLUGINSDIR\splash.bmp
-
## Extract InstallOptions INI files
-
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "AccountInf.ini" ;사용자 페이지 정보 파일 풀어놓기
-
Pop $VER
-
Pop $5
-
## 기존 버전이 있는지 확인
-
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 "$(^Name) 가(이) 이미 설치되었습니다.$\n$\n다른 케릭터에 대한 설치를 진행하시겠습니까?" IDYES +2
-
Abort
-
StrCpy "$VER" "1"
-
Goto end
-
initB:
-
MessageBox MB_ICONEXCLAMATION|MB_YESNO|MB_DEFBUTTON1 "설치된 $(^Name) 의 버전이 설치할 것과 다릅니다.$\n$\n완전히 삭제하고 다시 설치하시겠습니까?$\n\n※구 버전은 BooDooUI_Old_(버전) 폴더에 백업합니다." IDYES +2
-
Abort
-
StrCpy "$VER" "2"
-
end:
-
Push $5
-
Push $VER
-
FunctionEnd
-
-
-
# 페이지 삽입 ------------------------------------------------------------
-
;!define MUI_ABORTWARNING ;설치/제거 도중 취소하면 경고
-
-
!insertmacro MUI_PAGE_WELCOME ;환영 페이지
-
!insertmacro MUI_PAGE_LICENSE "License.txt" ;라이센스 페이지
-
-
Page custom AccountInfPage AccountInf ;사용자 정보 입력페이지
-
-
Function AccountInfPage ;사용자 정보 입력페이지 보여주기
-
!insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "$(TEXT_IO_SUBTITLE)"
-
!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"
-
!insertmacro MUI_INSTALLOPTIONS_READ $INI_CLASS "AccountInf.ini" "Field 9" "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_CLASS"
-
### "설치할 케릭이 더 있는습니까"를 확인하고 있을 경우 기존 케릭 정보 삭제하고 페이지에 머무르기
-
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "설치할 케릭이 더 있습니까?" IDNO end
-
clear:
-
!insertmacro MUI_INSTALLOPTIONS_READ $INI_CHARACTER "AccountInf.ini" "Field 7" "HWND"
-
!insertmacro MUI_INSTALLOPTIONS_READ $INI_CLASS "AccountInf.ini" "Field 9" "HWND"
-
SendMessage $INI_CHARACTER ${WM_SETTEXT} 0 "STR:"
-
SendMessage $INI_CLASS ${WM_SETTEXT} 0 "STR:"
-
abort
-
-
end:
-
FunctionEnd
-
-
!insertmacro MUI_PAGE_COMPONENTS ;설치 항목 선택 페이지
-
!insertmacro MUI_PAGE_DIRECTORY ;설치할 경로 선택 페이지
-
!insertmacro MUI_PAGE_INSTFILES ;설치 페이지
-
;!define MUI_FINISHPAGE_NOAUTOCLOSE ;인스톨후 마지막페이지로 바로 넘어가지 않음
-
!define MUI_FINISHPAGE_RUN "$INSTDIR\Launcher.exe" ;마지막페이지에서 실행할 프로그램
-
!define MUI_FINISHPAGE_RUN_TEXT "월드오브워크래프트 실행하기" ;마지막페이지에서 실행할 프로그램의 설명
-
!insertmacro MUI_PAGE_FINISH ;마지막 페이지
-
-
!insertmacro MUI_UNPAGE_INSTFILES ;제거 페이지
-
-
-
# 언어 파일 설정 ------------------------------------------------------------
-
; 본 항목은 반드시 페이지 삽입 보다 뒤에 와야 합니다.
-
;!insertmacro MUI_LANGUAGE "English"
-
!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"
-
; MessageBox MB_YESNO|MB_ICONQUESTION "RE_ACCOUNT_TOTAL 내용$\n$\n$RE_ACCOUNT_TOTAL$\n$\nMore?" IDNO end
-
Goto character
-
end:
-
Push "$RE_ACCOUNT_TOTAL"
-
FunctionEnd
-
-
Function OldUI ;data폴더에 patch-2.mpq를 제외한 다른 patch-?.mpq파일이 있는지 검사
-
StrCmp $R7 "patch-2.mpq" +3
-
StrCpy $R1 1
-
Goto +2
-
StrCpy $R1 -1
-
Push $R1
-
FunctionEnd
-
-
Function PatchRename ;patch-?.mpq 중 patch-2.mpq 이 아닌 파일을 골라내어 백업하는 함수
-
Pop $6
-
StrCmp $R7 "patch-2.mpq" end
-
StrCmp $6 0 A
-
StrCmp $6 2 B
-
A:
-
Rename "$INSTDIR\Data\$R7" "$INSTDIR\Old\Data\$R7"
-
Goto end
-
B:
-
Rename "$INSTDIR\Data\$R7" "$INSTDIR\BooDooUI_Old_$5\Data\$R7"
-
Goto end
-
end:
-
Push $6
-
Push $0
-
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"
-
; MessageBox MB_YESNO|MB_ICONQUESTION "$INI_ACCOUNT$\n$\nMore?" IDNO end
-
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"
-
; MessageBox MB_YESNO|MB_ICONQUESTION "$INI_ACCOUNT, $INI_SERVER$\n$\nMore?" IDNO end
-
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 "$INI_CLASS" "${PRODUCT_DIR_ROOT_REGKEY}" "$2" "직업"
-
ReadRegStr "$0" "${PRODUCT_DIR_ROOT_REGKEY}" "$2" "설치여부"
-
StrCmp "$0" "yes" character install
-
install:
-
; MessageBox MB_YESNO|MB_ICONQUESTION "$INI_ACCOUNT, $INI_SERVER, $INI_CHARACTER, $INI_CLASS$\n$\nMore?" IDNO end
-
StrCmp "$0" "re" installAccount
-
${WordFind} "$RE_ACCOUNT_TOTAL" "$INI_ACCOUNT" "#" $RE_ACCOUNT_NUM
-
; MessageBox MB_YESNO|MB_ICONQUESTION "INI_ACCOUNT 가 RE_ACCOUNT_TOTAL 내용과 같은 개수$\n$\n$RE_ACCOUNT_NUM$\n$\nMore?" IDNO end
-
StrCmp $RE_ACCOUNT_NUM "no" installAccount installServer
-
installAccount:
-
CreateDirectory "$INSTDIR\WTF\Account\$INI_ACCOUNT"
-
CopyFiles /FILESONLY "$INSTDIR\WTF\Account\계정명\*.*" "$INSTDIR\WTF\Account\$INI_ACCOUNT"
-
CopyFiles "$INSTDIR\WTF\Account\계정명\SavedVariables" "$INSTDIR\WTF\Account\$INI_ACCOUNT\SavedVariables"
-
installServer:
-
CreateDirectory "$INSTDIR\WTF\Account\$INI_ACCOUNT\$INI_SERVER"
-
CopyFiles "$INSTDIR\WTF\Account\계정명\서버명\케릭명" "$INSTDIR\WTF\Account\$INI_ACCOUNT\$INI_SERVER\$INI_CHARACTER"
-
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
-
-
; MessageBox MB_OK|MB_ICONINFORMATION "변수VER$\n$\n$VER$\n$\nMore?"
-
StrCmp $VER 0 selA
-
StrCmp $VER 2 selB
-
StrCmp $VER 1 copy
-
-
## 기존에 있는 타 UI가 있는지 검사
-
selA:
-
Call OldUI
-
StrCpy $R1 -1
-
${DirState} "$INSTDIR\Interface" $R1
-
StrCmp $R1 1 backup
-
${DirState} "$INSTDIR\WTF" $R1
-
StrCmp $R1 1 backup
-
${DirState} "$INSTDIR\Data\Fonts" $R1
-
StrCmp $R1 1 backup
-
${Locate} "$INSTDIR\Data" "/M=patch-?.mpq /G=0" "OldUI"
-
StrCmp $R1 -1 copy
-
StrCmp $R1 0 copy
-
-
## 기존에 있는 타 UI 백업 (Old 폴더에)
-
backup:
-
Call PatchRename
-
RMDir /r "$INSTDIR\Old"
-
CreateDirectory "$INSTDIR\Old"
-
CreateDirectory "$INSTDIR\Old\Data"
-
Rename "$INSTDIR\Interface" "$INSTDIR\Old\Interface"
-
Rename "$INSTDIR\WTF" "$INSTDIR\Old\WTF"
-
Rename "$INSTDIR\Data\Fonts" "$INSTDIR\Old\Data\Fonts"
-
${Locate} "$INSTDIR\Data" "/M=patch-?.mpq /G=0" "PatchRename"
-
Goto copy
-
-
## 이전 버전 백업 (Old_버전 폴더에)
-
selB:
-
RMDir /r "$INSTDIR\${PRODUCT_NAME}_Old_$5"
-
CreateDirectory "$INSTDIR\${PRODUCT_NAME}_Old_$5"
-
CreateDirectory "$INSTDIR\${PRODUCT_NAME}_Old_$5\Data"
-
Rename "$INSTDIR\Interface" "$INSTDIR\${PRODUCT_NAME}_Old_$5\Interface"
-
Rename "$INSTDIR\WTF" "$INSTDIR\${PRODUCT_NAME}_Old_$5\WTF"
-
Rename "$INSTDIR\Data\Fonts" "$INSTDIR\${PRODUCT_NAME}_Old_$5\Data\Fonts"
-
${Locate} "$INSTDIR\Data" "/M=patch-?.mpq /G=0" "PatchRename"
-
-
copy:
-
## 파일 복사
-
File /a /r "J:\wow\ui\NSIS\Basic\" ;필수 항목으로 집어넣을 파일이 위치한 경로입니다. 개인에 맞게 수정 !! (기본 섹션)
-
-
## 여러 케릭의 WTF폴더 설치 함수
-
Call WTFLoop
-
-
## 복사 원본 폴더 삭제
-
RMDir /r $INSTDIR\WTF\Account\계정명
-
SectionEnd
-
-
-
# 섹션에 대한 설명 ------------------------------------------------------------
-
; 개인에 맞게 수정해야 하는 부분 !!
-
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
-
!insertmacro MUI_DESCRIPTION_TEXT ${Basic_SEC} "글꼴, 텍스쳐, 액션바, 유닛프레임 등을 포함합니다."
-
!insertmacro MUI_FUNCTION_DESCRIPTION_END
-
-
-
# 바로가기와 레지스트리 생성 섹션 ------------------------------------------------------------
-
; 개인에 맞게 수정해야 하는 부분 !!
-
Section -AdditionalIcons
-
CreateDirectory "$SMPROGRAMS\부두UI"
-
CreateShortCut "$SMPROGRAMS\부두UI\부두UI제거.lnk" "$INSTDIR\BooDooUI_uninst.exe"
-
CreateShortCut "$DESKTOP\부두UI제거.lnk" "$INSTDIR\BooDooUI_uninst.exe"
-
SectionEnd
-
Section -Post
-
WriteUninstaller "$INSTDIR\BooDooUI_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\BooDooUI_uninst.exe"
-
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\BooDooUI_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} "$INSTDIR\Old" $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.PatchDelete
-
## patch-?.mpq 파일 삭제 시 patch-2.mpq 파일 삭제 방지를 위해 골라내는 함수
-
StrCmp $R7 "patch-2.mpq" +2
-
Delete "$R9"
-
Push $0
-
FunctionEnd
-
-
Function un.PatchRenameInvert
-
## patch-?.mpq 파일 복구 시 patch-2.mpq 파일 복구 방지를 위해 골라내는 함수
-
StrCmp $R7 "patch-2.mpq" +2
-
Rename "$INSTDIR\Old\Data\$R7" "$INSTDIR\Data\$R7"
-
Push $0
-
FunctionEnd
-
-
Function un.onUninstSuccess
-
HideWindow
-
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 는(은) 완전히 제거되었습니다."
-
FunctionEnd
-
-
-
# 제거 섹션 ------------------------------------------------------------
-
Section Uninstall
-
## 파일 삭제
-
RMDir /r "$INSTDIR\Interface"
-
RMDir /r "$INSTDIR\WTF"
-
RMDir /r "$INSTDIR\Data\Fonts"
-
-
${un.Locate} "$INSTDIR\Data" "/M=patch-?.mpq /G=0" "un.PatchDelete"
-
-
StrCmp $R4 1 0 nextU
-
-
## 원래 설정으로
-
Rename "$INSTDIR\Old\Interface" "$INSTDIR\Interface"
-
Rename "$INSTDIR\Old\WTF" "$INSTDIR\WTF"
-
Rename "$INSTDIR\Old\Data\Fonts" "$INSTDIR\Data\Fonts"
-
-
${un.Locate} "$INSTDIR\Old\Data" "/M=patch-?.mpq /G=0" "un.PatchRenameInvert"
-
RMDir /r "$INSTDIR\Old"
-
-
nextU:
-
## 바로가기, 레지스트리 삭제
-
; 개인에 맞게 수정해야 하는 부분 !!
-
Delete "$DESKTOP\부두UI제거.lnk"
-
RMDir /r "$SMPROGRAMS\부두UI"
-
-
Delete "$INSTDIR\BooDooUI_uninst.exe"
-
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
-
DeleteRegKey ${PRODUCT_DIR_ROOT_REGKEY} "${PRODUCT_DIR_REGKEY}"
-
-
SetAutoClose true
-
SectionEnd
-
-
-
허낭군(bestsam)
반응형
'프로그래밍 > NSIS' 카테고리의 다른 글
NSIS에서 인터넷 연결 상태 확인하기. (0) | 2007.12.03 |
---|---|
Modern UI 에서 특정 페이지 에서 특정 버튼 숨기기 (0) | 2007.12.03 |
[펌]NSIS 예제 코드 설명 - example2.nsi (0) | 2007.12.02 |
NSIS reference (0) | 2007.11.03 |
NsisInstaller (0) | 2007.11.03 |
Comments