반응형
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 |
Tags
- DetectHiddenWindows
- Menu
- SetEnv
- autohotkey
- IfWinExist
- EnvMult
- SetTitleMatchMode
- Blocks
- StringGetPos
- EnvSub
- EnvSet
- SetControlDelay
- EnvDiv
- Threads
- 식
- 함수
- ControlGetText
- SetMouseDelay
- if
- EnvAdd
- MouseClick
- IF (식)
- SetKeyDelay
- if(식)
- 식의 설명
- IfInString
- 배열
- Var:=식
- API
- ControlSend
Archives
- Today
- Total
ㄴrㅎnㅂrㄹrㄱi
NsisInstaller 본문
반응형
차례
Introduction
- nsis 에 대해 적는다.
- nsis 는 인스톨러다... 너무 맘에 든다... 쉬우니깐... 간단하고... 쥑인다... modern ui 를 이용하면 세련된 설치 마법사를 만들 수 있다.
Detailed Description
Basic
- 다운 받아서 설치한다.. (reference 참고)
- *.nsi 를 만든다.
- 문서가 너무 잘나와 있다. 문서 보고 예제 보면 뚝딱... 특히 nsis 를 install 하는 스크립트가 짱이다.
- 기본적인 것은 다음과 같다.
- 첫째, installer attributes 를 잘 설정한다.
- 둘째, pages 를 잘 설정한다.
- 셋째, sections 를 잘 설정한다.
- 기본적인 것은 다음과 같다.
- 문서가 너무 잘나와 있다. 문서 보고 예제 보면 뚝딱... 특히 nsis 를 install 하는 스크립트가 짱이다.
- 만들어진 *.nsi 파일을 우클릭후 context menu 에서 compile 해버린다. 에러 참고 하면서 수정한다.
- 만들어진 *.exe 를 배포한다. 끝.
ex 1 : simple activex
Name "RBT Generator Control" Caption "RBT Generator 1.0.0.14 Setup" OutFile "rbtctrl.exe" InstallDir $SYSDIR Page instfiles UninstPage uninstConfirm UninstPage instfiles ; 기본 인스톨 폴더 ;INSTDIR $SYSDIR Section "" SetOutPath $INSTDIR SetOverwrite on File cbrt.dll RegDLL $SYSDIR\cbrt.dll ; Write the uninstall keys for Windows WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" "DisplayName" "RBT Generator Control" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" "UninstallString" '"$INSTDIR\crbt_uninst.exe"' WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" "NoRepair" 1 WriteUninstaller "crbt_uninst.exe" SectionEnd Section Uninstall DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" UnRegDLL $INSTDIR\cbrt.dll Delete $INSTDIR\cbrt.dll SectionEnd
ex2 : simple application
- 필요한 regstry 값을 넣는다.
- 특정 확장자에 대해 application 이 실행되게 한다.
- 시작메뉴,바탕화면 바로 가기 등등을 생성한다.
- 위 사항에 대한 uninstaller 를 생성한다.
- modern ui 를 아직 적용하지는 않았다.
; Melon Setup script ; !define VER_MAJOR 1 !define VER_MINOR 0 !define VER_REVISION 0 !define VER_BUILD 1 !define VER_FILE "20" !define VER_DISPLAY "1.0" ;-------------------------------- ;Header Files ;-------------------------------- ;!include "MUI.nsh" ;!include "Sections.nsh" ;---------------------------------------- ;Configuration ;---------------------------------------- OutFile "MelonSetup.exe" SetCompressor lzma InstallDir "$PROGRAMFILES\Melon Player" InstallDirRegKey HKCU Software\MelonPlayer "" Name "Melon Player" Caption "Melon ${VER_DISPLAY} Setup" ShowInstDetails show ShowUninstDetails show XPStyle on ;---------------------------------------- ;Pages ;---------------------------------------- Page components Page directory Page instfiles UninstPage uninstConfirm UninstPage instfiles ;-------------------------------- ; Declaration of user variables (Var command), allowed charaters for variables names : [a-z][A-Z][0-9] and '_' Var "Info" ;-------------------------------- ; Installer Section "Melon Player Core Files (required)" secCore SetDetailsPrint textonly DetailPrint "Installing Melon Player Core Files..." SetDetailsPrint listonly sectionIn RO SetOutPath $INSTDIR RMDIR /r "$SMPROGRAMS\Melon Player" SetOverwrite on File AutoUp.exe File Melon.exe File CWLib.dll File IKMMSClt.dll File Melon_Album.dll File Melon_Comm.dll File Melon_Common.dll File Melon_img.dll File Melon_List.dll File Melon_Player.dll File MelonSync.dll File PCSync.dll File sktdrm.dll File SQLITE.dll File WACDMP3.dll File WACDOGG.dll File WACDWAV.dll File WACDWMA.dll File WACORE.dll File /r skin File /r conf ; required registry item ReadRegstr $R0 HKCU "Software\Melon\" "InstallPath" StrCmp $R0 "" 0 +2 DeleteRegKey HKCU "Software\Melon\" WriteRegStr HKCU "Software\Melon\" "InstallPath" "$INSTDIR\Melon.exe" ; default open command ReadRegStr $R0 HKCR ".dcf" "" StrCmp $R0 "MelonFile" 0 +2 DeleteRegKey HKCR "MelonFile" WriteRegStr HKCR ".dcf" "" "Melon.Media" WriteRegStr HKCR "Melon.Media" "" "Melon Media File" WriteRegStr HKCR "Melon.Media\DefaultIcon" "" "$INSTDIR\Melon.exe,1" ReadRegStr $R0 HKCR "Melon.Media\shell\open\command" "" StrCmp $R0 "" 0 no_dcfopen WriteRegStr HKCR "Melon.Media\shell" "" "open" WriteRegStr HKCR "Melon.Media\shell\open\command" "" 'notepad.exe "%1"' no_dcfopen: WriteRegStr HKCR "Melon.Media\shell" "" "open" WriteRegStr HKCR "Melon.Media\shell\open\command" "" '"$INSTDIR\Melon.exe" "%1"' ; Write the uninstall keys for Windows ;WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" "DisplayName" "RBT Generator Control" ;WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" "NoRepair" 1 ;WriteUninstaller "crbt_uninst.exe" ;CreateDirectory $INSTDIR WriteUninstaller "$INSTDIR\Uninst.exe" SectionEnd ;-------------------------------- ; Optional section (can be disabled by the user) Section "Start Menu and Desktop Shortcuts" secShortcuts SetDetailsPrint textonly DetailPrint "Installing Start Menu and Desktop Shortcuts..." SetDetailsPrint listonly SetOutPath $INSTDIR CreateDirectory "$SMPROGRAMS\Melon Player" CreateShortCut "$SMPROGRAMS\Melon Player\Uninstall.lnk" "$INSTDIR\Uninst.exe" "" "$INSTDIR\Uninst.exe" 0 CreateShortCut "$SMPROGRAMS\Melon Player\Melon Player.lnk" "$INSTDIR\Melon.exe" "" "$INSTDIR\Melon.exe" 0 ;WriteINIStr "$SMPROGRAMS\Melon Player\Melon Site.url" "InternetShortcut" "URL" "http://www.melon.com/" CreateShortCut "$DESKTOP\Melon Player.lnk" "$INSTDIR\Melon.exe" SectionEnd Section -post SetDetailsPrint textonly DetailPrint "Creating Registry Keys..." SetDetailsPrint listonly SetOutPath $INSTDIR WriteRegStr HKCU "Software\Melon" "" $INSTDIR WriteRegDword HKCU "Software\Melon" "VersionMajor" "${VER_MAJOR}" WriteRegDword HKCU "Software\Melon" "VersionMinor" "${VER_MINOR}" WriteRegDword HKCU "Software\Melon" "VersionRevision" "${VER_REVISION}" WriteRegDword HKCU "Software\Melon" "VersionBuild" "${VER_BUILD}" WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "UninstallString" '"$INSTDIR\Uninst.exe"' WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "InstallLocation" "$INSTDIR" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "DisplayName" "Melon Player" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "DisplayIcon" "$INSTDIR\Melon.exe,0" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "DisplayVersion" "${VER_DISPLAY}" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "VersionMajor" "${VER_MAJOR}" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "VersionMinor" "${VER_MINOR}.${VER_REVISION}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "URLInfoAbout" "http://www.melon.com/" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "NoModify" "1" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "NoRepair" "1" SectionEnd ;-------------------------------- ; Uninstaller Section "Uninstall" SetDetailsPrint textonly DetailPrint "Uninstalling Melon Player Shell Extensions..." SetDetailsPrint listonly IfFileExists $INSTDIR\Melon.exe melon_installed MessageBox MB_YESNO "It does not appear that Melon is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES melon_installed Abort "Uninstall aborted by user" melon_installed: StrCpy $Info "Melon Player uninstalled successfully." SetDetailsPrint textonly DetailPrint "Deleting Registry Keys..." SetDetailsPrint listonly ReadRegStr $R0 HKCR ".dcf" "" StrCmp $R0 "Melon.Media" 0 +2 DeleteRegKey HKCR ".dcf" DeleteRegKey HKCR "Melon.Media" DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" DeleteRegKey HKCU "Software\Melon" SetDetailsPrint textonly DetailPrint "Deleting Files..." SetDetailsPrint listonly ; Remove directories used RMDir /r "$SMPROGRAMS\Melon Player" RmDir /r $INSTDIR Delete "$DESKTOP\Melon Player.lnk" SetDetailsPrint both SectionEnd Function un.OnUninstSuccess HideWindow MessageBox MB_OK "$Info" FunctionEnd
ex3 modern UI simple app
- modern ui 를 적용했다... 그래도 정리할 것은 남아있다.
; Melon Setup script ; !define VER_MAJOR 1 !define VER_MINOR 0 !define VER_REVISION 0 !define VER_BUILD 1 !define VER_FILE "20" !define VER_DISPLAY "1.0" !define PRODUCT_NAME "Melon Player" ;-------------------------------- ;Header Files ;-------------------------------- !include "MUI.nsh" ;!include "Sections.nsh" ;-------------------------------- ; Declaration of user variables (Var command), allowed charaters for variables names : [a-z][A-Z][0-9] and '_' Var "Info" Var STARTMENU_FOLDER Var MUI_TEMP ;---------------------------------------- ;Configuration ;---------------------------------------- OutFile "MelonSetup.exe" SetCompressor lzma InstallDir "$PROGRAMFILES\Melon Player" InstallDirRegKey HKCU Software\MelonPlayer "" Name "Melon Player" Caption "Melon ${VER_DISPLAY} Setup" ShowInstDetails show ShowUninstDetails show XPStyle on BrandingText "Copyright ⓒ 2004 SKT Corp. All Rights Reserved." ;---------------------------------------- ;Pages ;---------------------------------------- ;Page components ;Page directory ;Page instfiles ;UninstPage uninstConfirm ;UninstPage instfiles ;-------------------------------- ;Modern UI Configuration !define MUI_ABORTWARNING !define MUI_FONT_HEADER "굴림" !define MUI_FONTSIZE_HEADER "9" !define MUI_FONTSTYLE_HEADER "700" !define MUI_FONT_TITLE "굴림" !define MUI_FONTSIZE_TITLE "9" !define MUI_FONTSTYLE_TITLE "700" ;-------------------------------- ;Pages !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "License.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY ;Start Menu Folder Page Configuration !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Melon" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Melon" !define MUI_STARTMENUPAGE_DEFAULTFOLDER "Melon Player" !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER !insertmacro MUI_PAGE_INSTFILES !define MUI_FINISHPAGE_RUN "$INSTDIR\Melon.exe" ;!define MUI_FINISHPAGE_NOREBOOTSUPPORT !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;Language !insertmacro MUI_LANGUAGE "Korean" ;-------------------------------- ; Installer Section "Melon Player Core Files (required)" SecCore SetDetailsPrint textonly DetailPrint "Installing Melon Player Core Files..." SetDetailsPrint listonly sectionIn RO SetOutPath $INSTDIR RMDIR /r "$SMPROGRAMS\Melon Player" SetOverwrite on File ..\bin\Release\UpGradeMelon.exe File ..\bin\Release\Melon.exe File ..\bin\Release\CWLib.dll File ..\bin\Release\IKMMSClt.dll File ..\bin\Release\Melon_Album.dll File ..\bin\Release\Melon_Comm.dll File ..\bin\Release\Melon_Common.dll File ..\bin\Release\Melon_img.dll File ..\bin\Release\Melon_List.dll File ..\bin\Release\Melon_Player.dll File ..\bin\Release\MelonSync.dll File ..\bin\Release\PCSync.dll File ..\bin\Release\sktdrm.dll File ..\bin\Release\SQLITE.dll File ..\bin\Release\WACDMP3.dll File ..\bin\Release\WACDOGG.dll File ..\bin\Release\WACDWAV.dll File ..\bin\Release\WACDWMA.dll File ..\bin\Release\WACORE.dll File ..\bin\Release\sktauth.dll ;File /r skin ;File /r conf ;File /r plugin CreateDirectory "$INSTDIR\skin" SetOutPath "$INSTDIR\skin" File ..\bin\Release\skin\*.* CreateDirectory "$INSTDIR\conf" SetOutPath "$INSTDIR\conf" File ..\bin\Release\conf\*.* CreateDirectory "$INSTDIR\plugin" SetOutPath "$INSTDIR\plugin" File ..\bin\Release\plugin\*.* CreateDirectory "$INSTDIR\download" SetOutPath "$INSTDIR" ; required registry item ReadRegstr $R0 HKCU "Software\Melon\" "InstallPath" StrCmp $R0 "" 0 +2 DeleteRegKey HKCU "Software\Melon\" WriteRegStr HKCU "Software\Melon\" "InstallPath" "$INSTDIR\Melon.exe" ;ReadRegstr $R0 HKCU "Software\Melon\" "DownLoadFolder" ;StrCmp $R0 "" 0 +2 ; DeleteRegKey HKCU "Software\Melon\DownLoadFolder" WriteRegStr HKCU "Software\Melon\" "DownLoadFolder" "$INSTDIR\download" ; default open command ReadRegStr $R0 HKCR ".dcf" "" StrCmp $R0 "MelonFile" 0 +2 DeleteRegKey HKCR "MelonFile" WriteRegStr HKCR ".dcf" "" "Melon.Media" WriteRegStr HKCR "Melon.Media" "" "Melon Media File" WriteRegStr HKCR "Melon.Media\DefaultIcon" "" "$INSTDIR\Melon.exe,0" ReadRegStr $R0 HKCR "Melon.Media\shell\open\command" "" StrCmp $R0 "" 0 no_dcfopen WriteRegStr HKCR "Melon.Media\shell" "" "open" WriteRegStr HKCR "Melon.Media\shell\open\command" "" 'notepad.exe "%1"' no_dcfopen: WriteRegStr HKCR "Melon.Media\shell" "" "open" WriteRegStr HKCR "Melon.Media\shell\open\command" "" '"$INSTDIR\Melon.exe" "%1"' ; Write the uninstall keys for Windows ;WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" "DisplayName" "RBT Generator Control" ;WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RBTGen" "NoRepair" 1 ;WriteUninstaller "crbt_uninst.exe" ;CreateDirectory $INSTDIR WriteUninstaller "$INSTDIR\Uninst.exe" SectionEnd ;-------------------------------- ; Optional section (can be disabled by the user) Section "Start Menu and Desktop Shortcuts" SecShortcuts SetDetailsPrint textonly DetailPrint "Installing Start Menu and Desktop Shortcuts..." SetDetailsPrint listonly SetOutPath $INSTDIR !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninst.exe" "" "$INSTDIR\Uninst.exe" 0 CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Melon Player.lnk" "$INSTDIR\Melon.exe" "" "$INSTDIR\Melon.exe" 0 CreateShortCut "$DESKTOP\Melon Player.lnk" "$INSTDIR\Melon.exe" ;CreateDirectory "$SMPROGRAMS\Melon Player" ;CreateShortCut "$SMPROGRAMS\Melon Player\Uninstall.lnk" "$INSTDIR\Uninst.exe" "" "$INSTDIR\Uninst.exe" 0 ;CreateShortCut "$SMPROGRAMS\Melon Player\Melon Player.lnk" "$INSTDIR\Melon.exe" "" "$INSTDIR\Melon.exe" 0 ;WriteINIStr "$SMPROGRAMS\Melon Player\Melon Site.url" "InternetShortcut" "URL" "http://www.melon.com/" ;CreateShortCut "$DESKTOP\Melon Player.lnk" "$INSTDIR\Melon.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -post SetDetailsPrint textonly DetailPrint "Creating Registry Keys..." SetDetailsPrint listonly SetOutPath $INSTDIR WriteRegStr HKCU "Software\Melon" "" $INSTDIR WriteRegDword HKCU "Software\Melon" "VersionMajor" "${VER_MAJOR}" WriteRegDword HKCU "Software\Melon" "VersionMinor" "${VER_MINOR}" WriteRegDword HKCU "Software\Melon" "VersionRevision" "${VER_REVISION}" WriteRegDword HKCU "Software\Melon" "VersionBuild" "${VER_BUILD}" WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "UninstallString" '"$INSTDIR\Uninst.exe"' WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "InstallLocation" "$INSTDIR" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "DisplayName" "Melon Player" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "DisplayIcon" "$INSTDIR\Melon.exe,0" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "DisplayVersion" "${VER_DISPLAY}" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "VersionMajor" "${VER_MAJOR}" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "VersionMinor" "${VER_MINOR}.${VER_REVISION}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "URLInfoAbout" "http://www.melon.com/" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "NoModify" "1" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" "NoRepair" "1" ; prompt user, and if they select no, go to NoWinamp ;MessageBox MB_YESNO|MB_ICONQUESTION \ ; "Melon Player 가 설치되었습니다. Melon Player 를 실행하시겠습니가?" \ ; IDNO NoMelonPlayer ; Exec '"$INSTDIR\Melon.exe"' ; Quit ;NoMelonPlayer: SectionEnd ;-------------------------------- ;Descriptions LangString DESC_SecCore ${LANG_KOREAN} "${PRODUCT_NAME} 실행 파일을 설치 폴더로 복사합니다." LangString DESC_SecShortcuts ${LANG_KOREAN} "시작 메뉴에 프로그램 그룹을 등록합니다." !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} $(DESC_SecCore) !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} $(DESC_SecShortcuts) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ; Uninstaller Section "Uninstall" SetDetailsPrint textonly DetailPrint "Uninstalling Melon Player Shell Extensions..." SetDetailsPrint listonly IfFileExists $INSTDIR\Melon.exe melon_installed MessageBox MB_YESNO "It does not appear that Melon is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES melon_installed Abort "Uninstall aborted by user" melon_installed: StrCpy $Info "Melon Player 가 성공적으로 언인스톨되었습니다." ; Remove directories used SetDetailsPrint textonly DetailPrint "Deleting Files..." SetDetailsPrint listonly !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP ;Delete empty start menu parent diretories StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" startMenuDeleteLoop: RMDir /r $MUI_TEMP GetFullPathName $MUI_TEMP "$MUI_TEMP\.." IfErrors startMenuDeleteLoopDone StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop startMenuDeleteLoopDone: RmDir /r $INSTDIR Delete "$DESKTOP\Melon Player.lnk" ; uninstall registry keys... SetDetailsPrint textonly DetailPrint "Deleting Registry Keys..." SetDetailsPrint listonly ReadRegStr $R0 HKCR ".dcf" "" StrCmp $R0 "Melon.Media" 0 +2 DeleteRegKey HKCR ".dcf" DeleteRegKey HKCR "Melon.Media" DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Melon" DeleteRegKey HKCU "Software\Melon" SetDetailsPrint both SectionEnd Function un.OnUninstSuccess HideWindow MessageBox MB_OK "$Info" FunctionEnd
ex 4 : Filezilla installer
;NSIS Modern User Interface version 1.70 ;FileZilla 3 installation script ;Written by Tim Kosse <mailto:tim.kosse@gmx.de> ;-------------------------------- ;Include Modern UI !include "MUI.nsh" ;-------------------------------- ;General ;Name and file Name "FileZilla 3 alpha 2" OutFile "FileZilla_3_alpha2_setup.exe" ;Default installation folder InstallDir "$PROGRAMFILES\FileZilla 3" ;Get installation folder from registry if available InstallDirRegKey HKCU "Software\FileZilla 3" "" ;-------------------------------- ;Variables Var MUI_TEMP Var STARTMENU_FOLDER ;-------------------------------- ;Interface Settings !define MUI_ABORTWARNING ;-------------------------------- ;Pages !insertmacro MUI_PAGE_LICENSE "..\COPYING" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY ;Start Menu Folder Page Configuration !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\FileZilla 3" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "FileZilla 3" !define MUI_STARTMENUPAGE_DEFAULTFOLDER "FileZilla 3" !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English" ;-------------------------------- ;Installer Sections Section "FileZilla 3" SecMain SetOutPath "$INSTDIR" File "..\src\interface\FileZilla.exe" File "mingwm10.dll" File "..\GPL.html" SetOutPath "$INSTDIR\resources" File "..\src\interface\resources\*.xrc" File "..\src\interface\resources\*.png" File "..\src\interface\resources\*.xpm" SetOutPath "$INSTDIR\resources\16x16" File "..\src\interface\resources\16x16\*.png" SetOutPath "$INSTDIR\resources\32x32" File "..\src\interface\resources\32x32\*.png" ;Store installation folder WriteRegStr HKCU "Software\FileZilla 3" "" $INSTDIR ;Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application ;Create shortcuts CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\FileZilla 3.lnk" "$INSTDIR\FileZilla 3.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section "Language files" SecLang SetOutPath "$INSTDIR\locales\de\LC_MESSAGES" File /oname=filezilla.mo "..\locales\de.mo" SectionEnd ;-------------------------------- ;Descriptions ;Language strings LangString DESC_SecMain ${LANG_ENGLISH} "Required program files." LangString DESC_SecLang ${LANG_ENGLISH} "Language files files." ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecMain} $(DESC_SecMain) !insertmacro MUI_DESCRIPTION_TEXT ${SecLang} $(DESC_SecLang) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ;Uninstaller Section Section "Uninstall" Delete "$INSTDIR\FileZilla.exe" Delete "$INSTDIR\mingwm10.dll" Delete "mingwm10.dll" Delete "$INSTDIR\GPL.html" Delete "$INSTDIR\resources\*.xrc" Delete "$INSTDIR\resources\*.png" Delete "$INSTDIR\resources\*.xpm" Delete "$INSTDIR\resources\16x16\*.png" Delete "$INSTDIR\resources\32x32\*.png" Delete "$INSTDIR\locales\de\LC_MESSAGES\filezilla.mo" Delete "$INSTDIR\Uninstall.exe" RMDir "$INSTDIR\locales\de\LC_MESSAGES" RMDir "$INSTDIR\locales\de" RMDir "$INSTDIR\locales" RMDir "$INSTDIR\resources\32x32" RMDir "$INSTDIR\resources\16x16" RMDir "$INSTDIR\resources" RMDir "$INSTDIR" !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" Delete "$SMPROGRAMS\$MUI_TEMP\FileZilla 3.lnk" ;Delete empty start menu parent diretories StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" startMenuDeleteLoop: RMDir $MUI_TEMP GetFullPathName $MUI_TEMP "$MUI_TEMP\.." IfErrors startMenuDeleteLoopDone StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop startMenuDeleteLoopDone: DeleteRegKey /ifempty HKCU "Software\FileZilla 3" SectionEnd
ex 5 : ???
!include "MUI.nsh" ;-------------------------------- ;Configuration !define COMP_NAME "DMI" !define APP_NAME "CQM" !define PRODUCT_NAME "CHOL 메신저" !define VERSION_MAJOR "3" !define VERSION_MINOR "97" !define DISPLAY_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}" !define CQM_CLASS "CQM Single" Name "${PRODUCT_NAME}" Caption "${PRODUCT_NAME} ${DISPLAY_VERSION} 설치" OutFile "cqm${VERSION_MAJOR}${VERSION_MINOR}.exe" CRCCheck on SetOverwrite on SetFont "굴림" 9 ;인스톨 타입 InstType "전체" InstType "기본" ;Folder-selection page InstallDir "$PROGRAMFILES\CHOL\Messenger" InstallDirRegKey HKEY_LOCAL_MACHINE "Software\${COMP_NAME}\${APP_NAME}" "InstallDir" BrandingText "Copyright ⓒ 2003 Dacom Multimedia Internet Corp. All Rights Reserved." ;-------------------------------- ;Modern UI Configuration !define MUI_ABORTWARNING !define MUI_FONT_HEADER "굴림" !define MUI_FONTSIZE_HEADER "9" !define MUI_FONTSTYLE_HEADER "700" !define MUI_FONT_TITLE "굴림" !define MUI_FONTSIZE_TITLE "9" !define MUI_FONTSTYLE_TITLE "700" !define MUI_ICON "Install.ico" !define MUI_UNICON "Uninstall.ico" !define MUI_FINISHPAGE_RUN "$INSTDIR\CQM.exe" ;-------------------------------- ;Pages !insertmacro MUI_PAGE_LICENSE "CHOL메신저이용약관.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;Language !insertmacro MUI_LANGUAGE "Korean" ;------------------------------------------------------------------- ; CloseWindow ; ; Closes all running window instances of CLASS ; Function CloseWindow StrCpy $R0 "0" loop: IntCmp $R0 5 done 0 done FindWindow $R1 $0 IntCmp $R1 0 done IsWindow $R1 0 done IntCmp $R0 0 0 0 AlertSkip MessageBox MB_OK|MB_ICONINFORMATION "${PRODUCT_NAME}가 실행 중입니다. 설치를 위해서 ${PRODUCT_NAME}를 종료합니다." AlertSkip: SendMessage $R1 ${WM_DESTROY} 0 0 Sleep 3000 IntOp $R0 $R0 + 1 Goto loop done: FunctionEnd Function BackupUser Pop $R0 MessageBox MB_YESNO|MB_ICONINFORMATION "이전 CQM의 사용자 정보(버디 리스트, 친구 수첩) 폴더를 지금 백업하고$\n설치 후에 자동으로 복구하시겠습니까?(권장)" IDNO ExitBackupUser RetryBackupUser: CreateDirectory "$TEMP\CQMInstall.tmp" CopyFiles "$R0\User" "$TEMP\CQMInstall.tmp" IfErrors 0 SuccessBackupUser MessageBox MB_ABORTRETRYIGNORE|MB_ICONSTOP "사용자 폴더를 백업하는 중에 에러가 발생했습니다." IDIGNORE ExitBackupUser IDRETRY RetryBackupUser Quit SuccessBackupUser: StrCpy $7 "$TEMP\CQMInstall.tmp" ExitBackupUser: FunctionEnd ;------------------------------------------------------------------- ; UninstallPrev ; ; 호환되지 않는 이전 버전을 삭제한다 ; Function UninstallPrev ; CQM 3.14 언인스톨 ReadRegStr $R0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\APP Paths\Cqm.exe" "Path" StrCmp $R0 "" RemovePrev IfFileExists "$R0\CQM.exe" 0 RemovePrev ReadRegStr $R1 HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\CQM3.14" "UninstallString" StrCmp $R1 "" NoPrev314 Push $R0 Call BackupUser MessageBox MB_YESNO|MB_ICONINFORMATION|MB_DEFBUTTON2 \ '기존 CQM 3.14를 먼저 언인스톨해야 합니다.$\n지금 언인스톨하시겠습니까?' IDNO QuitInstall ExecWait $R1 NoPrev314: ; CQM 3.13 언인스톨 ReadRegStr $R0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\APP Paths\Cqm.exe" "Path" StrCmp $R0 "" RemovePrev IfFileExists "$R0\CQM.exe" 0 RemovePrev ReadRegStr $R1 HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\CQM3.13" "UninstallString" StrCmp $R1 "" NoPrev313 Push $R0 Call BackupUser MessageBox MB_YESNO|MB_ICONINFORMATION|MB_DEFBUTTON2 \ '기존 CQM 3.13를 먼저 언인스톨해야 합니다.$\n지금 언인스톨하시겠습니까?' IDNO QuitInstall ExecWait $R1 NoPrev313: ; CQM 3.12 언인스톨 ReadRegStr $R0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\APP Paths\Cqm.exe" "Path" StrCmp $R0 "" RemovePrev IfFileExists "$R0\CQM.exe" 0 RemovePrev ReadRegStr $R1 HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\CQM3.12" "UninstallString" StrCmp $R1 "" NoPrev312 Push $R0 Call BackupUser MessageBox MB_YESNO|MB_ICONINFORMATION|MB_DEFBUTTON2 \ '기존 CQM 3.12를 먼저 언인스톨해야 합니다.$\n지금 언인스톨하시겠습니까?' IDNO QuitInstall ExecWait $R1 NoPrev312: ; CQM 3.11 언인스톨 ReadRegStr $R0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\APP Paths\Cqm.exe" "Path" StrCmp $R0 "" RemovePrev IfFileExists "$R0\CQM.exe" 0 RemovePrev ReadRegStr $R1 HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\CQM3.11" "UninstallString" StrCmp $R1 "" NoPrev311 Push $R0 Call BackupUser MessageBox MB_YESNO|MB_ICONINFORMATION|MB_DEFBUTTON2 \ '기존 CQM 3.11를 먼저 언인스톨해야 합니다.$\n지금 언인스톨하시겠습니까?' IDNO QuitInstall ExecWait $R1 NoPrev311: ReadRegStr $R0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\APP Paths\Cqm.exe" "Path" StrCmp $R0 "" RemovePrev IfFileExists "$R0\CQM.exe" 0 RemovePrev ; 버전 검사 StrCpy $R0 0 StrCpy $R1 0 ReadRegDWORD $R0 HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "VersionMajor" ReadRegDWORD $R1 HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "VersionMinor" IntCmpU $R0 3 0 UnknownPrev RemovePrev IntCmpU $R1 5 RemovePrev 0 RemovePrev UnknownPrev: MessageBox MB_YESNO|MB_ICONINFORMATION|MB_DEFBUTTON2 "호환되지 않는 이전 버전이 삭제되지 않았습니다. 이전 버전을 삭제한 후 설치하시기 바랍니다.$\n무시하고 계속하시겠습니까?" IDNO QuitInstall Return RemovePrev: DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CQM3.14" DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CQM3.13" DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CQM3.12" DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CQM3.11" Return QuitInstall: Quit FunctionEnd Function .onInit StrCpy $7 "" StrCpy $8 $INSTDIR FunctionEnd ;------------------------------------------------------------------- ; un.CloseWindow ; ; Closes all running window instances of CLASS (uninstaller) ; ; modifies no other variables Function un.CloseWindow StrCpy $R0 "0" loop: IntCmp $R0 5 done 0 done FindWindow $R1 $0 IntCmp $R1 0 done IsWindow $R1 0 done IntCmp $R0 0 0 0 AlertSkip MessageBox MB_OK|MB_ICONINFORMATION "${PRODUCT_NAME}가 실행 중입니다. 언인스톨을 위해서 ${PRODUCT_NAME}를 종료합니다." AlertSkip: SendMessage $R1 ${WM_DESTROY} 0 0 Sleep 3000 IntOp $R0 $R0 + 1 Goto loop done: FunctionEnd ;-------------------------------- ;Installer Sections Section "!${PRODUCT_NAME} 설치" SecCopyUI SectionIn 1 2 RO ; 호환되지 않는 이전 버전 삭제 Call UninstallPrev ; 실행 중인 CQM 종료 StrCpy $0 "${CQM_CLASS}" Call CloseWindow ; 파일 복사 SetOutPath "$INSTDIR\User" ; 이전 사용자 폴더 복구 StrCmp $7 "" NoBackup CopyFiles "$7\User" "$INSTDIR" RmDir /r $7 Goto RestoreEnd NoBackup: ; 설치 경로 변경시 이전 유저 정보 백업 ClearErrors ReadRegStr $R0 HKEY_LOCAL_MACHINE "Software\${COMP_NAME}\${APP_NAME}" "InstallDir" IfErrors RestoreEnd StrCmp $8 $INSTDIR RestoreEnd MessageBox MB_YESNO|MB_ICONINFORMATION "설치 경로가 변경되었습니다.$\n이전 ${PRODUCT_NAME}의 사용자 정보(버디 리스트, 친구 수첩) 폴더를 현재 설치 경로로 복사하시겠습니까?(권장)" IDNO RestoreEnd CopyFiles "$8\User" "$INSTDIR" RestoreEnd: SetOutPath "$INSTDIR\Advertise" SetOutPath "$INSTDIR\Down" SetOutPath "$INSTDIR\PlugIn" File "PlugIn\*.*" SetOutPath "$INSTDIR\Sound" File "Sound\*.*" ; 프로그램 파일 생성 SetOutPath "$INSTDIR" File "UpdateCQM.exe" File "cqm.ini" File "CQMHelp.hlp" File "user.txt" File "mfc42.dll" File "msvcrt.dll" File "..\Bin\CQMS.dll" File "..\Bin\CQMRes.dll" File "..\Bin\CQMP2P.dll" File "..\Bin\CQM.exe" ; IdleUI.dll이 남아 있으면... IFFileExists "$INSTDIR\IdleUI.dll" 0 NoIdleUI StrCpy $R0 "$INSTDIR\IdleUI.old" StrCpy $R1 "0" RenameIdleUI: Rename "$INSTDIR\IdleUI.dll" $R0 IFErrors 0 DeleteIdleUI IntCmp $R1 100 NoIdleUI 0 NoIdleUI IntOp $R1 $R1 + 1 StrCpy $R0 "$INSTDIR\IdleUI$R1.old" Goto RenameIdleUI DeleteIdleUI: Delete /REBOOTOK $R0 NoIdleUI: ;File "..\Bin\IdleUI.dll" ; 언인스톨러 생성 WriteUninstaller "$INSTDIR\Uninstall.exe" WriteRegStr HKEY_CURRENT_USER "Software\dacom\CQM\Oem" "OemUrl" "http://cqm.chol.com" WriteRegStr HKEY_LOCAL_MACHINE "Software\${COMP_NAME}\${APP_NAME}" "InstallDir" $INSTDIR WriteRegStr HKEY_LOCAL_MACHINE "Software\${COMP_NAME}\${APP_NAME}" "Version" "${APP_NAME}/${VERSION_MAJOR}.${VERSION_MINOR}" DeleteRegValue HKEY_LOCAL_MACHINE "Software\${COMP_NAME}\${APP_NAME}" "Homepage" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\CQM.exe" "" "$INSTDIR\CQM.exe" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\CQM.exe" "Path" "$INSTDIR" WriteRegStr HKEY_CLASSES_ROOT "cqm" "" "URL:CHOL Messenger Protocol" WriteRegStr HKEY_CLASSES_ROOT "cqm" "URL Protocol" "" WriteRegStr HKEY_CLASSES_ROOT "cqm\DefaultIcon" "" '"$INSTDIR\CQM.exe",0' WriteRegStr HKEY_CLASSES_ROOT "cqm\shell\open\command" "" '"$INSTDIR\CQM.exe" %1' ; 언인스톨 정보 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "DisplayName" "${PRODUCT_NAME}" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "DisplayIcon" '"$INSTDIR\Uninstall.exe",0' WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "DisplayVersion" "${DISPLAY_VERSION}" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "Publisher" "Dacom Multimedia Internet Inc." WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "HelpLink" "http://cqm.chol.com" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "URLInfoAbout" "http://cqm.chol.com" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "URLUpdateInfo" "http://cqm.chol.com" WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "VersionMajor" "${VERSION_MAJOR}" WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "VersionMinor" "${VERSION_MINOR}" WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" "UninstallString" '"$INSTDIR\Uninstall.exe"' SectionEnd Section "프로그램 그룹 생성" ProgramUI SectionIn 1 2 SetShellVarContext all CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\cqm.exe" "" "" 0 CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} 언인스톨.lnk" "$INSTDIR\uninstall.exe" "" "" 0 SectionEnd Section "바탕화면 아이콘 생성" DesktopUI SectionIn 1 SetShellVarContext all CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\cqm.exe" "" "" 0 SectionEnd Section "빠른 실행 아이콘 생성" QLaunchUI SectionIn 1 ; 빠른 실행은 사용자별로 생성 SetShellVarContext current CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\cqm.exe" "" "" 0 SectionEnd Section "자동 실행 설정" StartUpUI SectionIn 1 ; 자동 실행 설정 WriteRegDWORD HKEY_CURRENT_USER "Software\Dacom\${APP_NAME}\connection" "윈도우시작" 1 WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\run" "${APP_NAME}" "$INSTDIR\cqm.exe" SectionEnd ;-------------------------------- ;Descriptions LangString DESC_SecCopyUI ${LANG_KOREAN} "${PRODUCT_NAME} 실행 파일을 설치 폴더로 복사합니다." LangString DESC_ProgramUI ${LANG_KOREAN} "시작 메뉴에 프로그램 그룹을 등록합니다." LangString DESC_DesktopUI ${LANG_KOREAN} "바탕화면에 ${PRODUCT_NAME} 아이콘을 생성합니다." LangString DESC_QLaunchUI ${LANG_KOREAN} "작업 표시줄 빠른 실행에 ${PRODUCT_NAME} 아이콘을 생성합니다." LangString DESC_StartUpUI ${LANG_KOREAN} "윈도우즈 시작시에 ${PRODUCT_NAME}를 자동으로 실행합니다." !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI) !insertmacro MUI_DESCRIPTION_TEXT ${ProgramUI} $(DESC_ProgramUI) !insertmacro MUI_DESCRIPTION_TEXT ${DesktopUI} $(DESC_DesktopUI) !insertmacro MUI_DESCRIPTION_TEXT ${QLaunchUI} $(DESC_QLaunchUI) !insertmacro MUI_DESCRIPTION_TEXT ${StartUpUI} $(DESC_StartUpUI) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ;Uninstaller Section Section "Uninstall" ; 실행 중인 CQM 종료 StrCpy $0 "${CQM_CLASS}" Call un.CloseWindow ; 디렉토리 삭제 RmDir /r "$INSTDIR\Advertise" RmDir /r "$INSTDIR\Plugin" RmDir /r "$INSTDIR\Sound" StrCpy $R0 "F" ; 특수 디렉토리 삭제 RmDir "$INSTDIR\Down" IfFileExists "$INSTDIR\Down" 0 NoDown MessageBox MB_YESNO|MB_ICONINFORMATION|MB_DEFBUTTON2 "다운로드 폴더에 파일이 있습니다.$\n다운로드 폴더를 삭제하시겠습니까?" IDYES RmDown StrCpy $R0 "T" Goto NoDown RmDown: RmDir /r "$INSTDIR\Down" NoDown: RmDir "$INSTDIR\User" IfFileExists "$INSTDIR\User" 0 NoUser MessageBox MB_YESNO|MB_ICONINFORMATION|MB_DEFBUTTON2 "사용자 정보(버디 리스트, 친구 수첩) 폴더를 삭제하시겠습니까?" IDYES RmUser StrCpy $R0 "T" Goto NoUser RmUser: RmDir /r "$INSTDIR\User" NoUser: ; 파일 삭제 Delete "$INSTDIR\CQM.exe" Delete "$INSTDIR\CQMHelp.hlp" Delete "$INSTDIR\IdleUI.dll" Delete "$INSTDIR\CQMS.dll" Delete "$INSTDIR\CQMRes.dll" Delete "$INSTDIR\CQMP2P.dll" Delete "$INSTDIR\mfc42.dll" Delete "$INSTDIR\msvcrt.dll" Delete "$INSTDIR\user.txt" Delete "$INSTDIR\UpdateCQM.exe" Delete "$INSTDIR\Uninstall.exe" Delete "$INSTDIR\*.*" StrCmp $R0 "T" NoInst RMDir "$INSTDIR" NoInst: ; 빠른 실행 아이콘 삭제 SetShellVarContext current Delete "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" ; 데스크탑 아이콘 삭제 SetShellVarContext all Delete "$DESKTOP\${PRODUCT_NAME}.lnk" ; 프로그램 그룹 삭제 Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} 언인스톨.lnk" RMDir "$SMPROGRAMS\${PRODUCT_NAME}" ; 레지스트리 정보 삭제 DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\App Paths\CQM.exe" DeleteRegValue HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" "${APP_NAME}" DeleteRegKey HKEY_LOCAL_MACHINE "Software\${COMP_NAME}\${APP_NAME}" DeleteRegKey HKEY_CURRENT_USER "SOFTWARE\dacom\${APP_NAME}" DeleteRegKey HKEY_CLASSES_ROOT "cqm" ; 언인스톨 정보 삭제 DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" IfRebootFlag "" UnNoReboot MessageBox MB_OKCANCEL "$(^Name)의 제거를 완료하기 위해서는 시스템을 다시 시작해야 합니다. 지금 재부팅 하시겠습니까?" IDCANCEL UnNoReboot Reboot UnNoReboot: SectionEnd
Reference
반응형
'프로그래밍 > NSIS' 카테고리의 다른 글
[펌]NSIS 예제 코드 설명 - example2.nsi (0) | 2007.12.02 |
---|---|
NSIS reference (0) | 2007.11.03 |
NSIS 에서 SQL Server Script 실행 방법 (0) | 2007.11.03 |
NSIS_MUI_reference (0) | 2007.11.03 |
nsWeb - NSIS에서 웹 페이지나 HTML 파일을 보여주자 (0) | 2007.11.03 |
Comments