aboutsummaryrefslogtreecommitdiff
path: root/Src/installer/winamp/uninstall
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/installer/winamp/uninstall
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/installer/winamp/uninstall')
-rw-r--r--Src/installer/winamp/uninstall/components.nsh28
-rw-r--r--Src/installer/winamp/uninstall/descriptionTable.nsh12
-rw-r--r--Src/installer/winamp/uninstall/player.nsh566
-rw-r--r--Src/installer/winamp/uninstall/programs.nsh252
-rw-r--r--Src/installer/winamp/uninstall/ui.nsh27
-rw-r--r--Src/installer/winamp/uninstall/uiEvents.nsh94
-rw-r--r--Src/installer/winamp/uninstall/uninstall.nsh13
-rw-r--r--Src/installer/winamp/uninstall/userData.nsh98
8 files changed, 1090 insertions, 0 deletions
diff --git a/Src/installer/winamp/uninstall/components.nsh b/Src/installer/winamp/uninstall/components.nsh
new file mode 100644
index 00000000..2ee280ee
--- /dev/null
+++ b/Src/installer/winamp/uninstall/components.nsh
@@ -0,0 +1,28 @@
+!ifndef NULLSOFT_WINAMP_UNINSTALLER_COMPONENTS_HEADER
+!define NULLSOFT_WINAMP_UNINSTALLER_COMPONENTS_HEADER
+
+!ifndef MUI_UNCONFIRMPAGE
+ !define MUI_UNCONFIRMPAGE
+!endif
+
+!include ".\utils\skins.nsh"
+
+SectionGroup "un.$(MUI_UNTEXT_CONFIRM_TITLE)" IDX_UNINSTALL_COMPONENTS_GROUP
+ Section "-un.ComponentsInit" IDX_UNINSTALL_COMPONENTS_INIT
+ StrCpy $SETTINGSDIR $INSTDIR
+ StrCpy $PREVINSTINI "$INSTDIR\install.ini"
+ StrCpy $INSTINI $PREVINSTINI
+
+ ${If} ${FileExists} "$INSTDIR\paths.ini"
+ Push $SETTINGSDIR
+ nsis_winamp::ReadSettings /NOUNLOAD
+ nsis_winamp::GetIniPath
+ Pop $SETTINGSDIR
+ ${EndIf}
+ SectionEnd
+
+ !include ".\uninstall\player.nsh"
+ !include ".\uninstall\userData.nsh"
+SectionGroupEnd
+
+!endif ;NULLSOFT_WINAMP_UNINSTALLER_COMPONENTS_HEADER \ No newline at end of file
diff --git a/Src/installer/winamp/uninstall/descriptionTable.nsh b/Src/installer/winamp/uninstall/descriptionTable.nsh
new file mode 100644
index 00000000..787708c9
--- /dev/null
+++ b/Src/installer/winamp/uninstall/descriptionTable.nsh
@@ -0,0 +1,12 @@
+!ifndef NULLSOFT_WINAMP_UNINSTALLER_SECTION_DESCRIPTION_TABLE_HEADER
+!define NULLSOFT_WINAMP_UNINSTALLER_SECTION_DESCRIPTION_TABLE_HEADER
+
+!include ".\utils\sectionDescription.nsh"
+
+${UNINSTALL_DESCRIPTION_TABLE_BEGIN}
+ ${DESCRIPTION} IDX_UNINSTALL_COMPONENTS_GROUP $(IDS_UNINSTALL_COMPONENTS_GROUP_DESC)
+ ${DESCRIPTION} IDX_UNINSTALL_MEDIA_PLAYER $(IDS_UNINSTALL_MEDIA_PLAYER_DESC)
+ ${DESCRIPTION} IDX_UNINSTALL_USER_PREFERENCES $(IDS_UNINSTALL_USER_PREFERENCES_DESC)
+${DESCRIPTION_TABLE_END}
+
+!endif ;NULLSOFT_WINAMP_UNINSTALLER_SECTION_DESCRIPTION_TABLE_HEADER \ No newline at end of file
diff --git a/Src/installer/winamp/uninstall/player.nsh b/Src/installer/winamp/uninstall/player.nsh
new file mode 100644
index 00000000..049abdaf
--- /dev/null
+++ b/Src/installer/winamp/uninstall/player.nsh
@@ -0,0 +1,566 @@
+!ifndef NULLSOFT_WINAMP_UNINSTALLER_PLAYER_HEADER
+!define NULLSOFT_WINAMP_UNINSTALLER_PLAYER_HEADER
+
+!macro WALANG_UNINSTALL LNGPATH LANGID
+ Delete "${LNGPATH}\Winamp-${LANGID}.wlz"
+!macroend
+
+!macro Uninstaller_KillWinamp
+
+ DetailPrint "$(IDS_RUN_CHECK_PROCESS)"
+ SetDetailsPrint none
+ ${Do}
+ ClearErrors
+ Delete "$INSTDIR\${WINAMPEXE}"
+ ${If} ${Errors}
+ SetErrors
+ IfSilent killWinamp_done
+ MessageBox MB_DEFBUTTON2|MB_ABORTRETRYIGNORE "$(msgCloseWinamp)" IDABORT killWinamp_done IDRETRY +2
+ ClearErrors
+ ${EndIf}
+ ${LoopWhile} ${Errors}
+
+ Push $0
+ Push $1
+
+ StrCpy $1 0
+ ${Do}
+ ClearErrors
+ Delete "$INSTDIR\winampa.exe"
+ ${If} ${Errors}
+ SetErrors
+ FindWindow $0 "WinampAgentMain"
+ ${If} $0 = 0 ; something bad or other session
+ IfSilent killWinamp_done
+ MessageBox MB_DEFBUTTON2|MB_ABORTRETRYIGNORE "$(IDS_MSG_AGENTONOTHERSESSION)" IDABORT killWinamp_done IDRETRY +2
+ ClearErrors
+ ${Else}
+ IntOp $1 $1 + 1
+ IntCmp $1 40 killWinamp_done
+ SendMessage $0 ${WM_CLOSE} 0 0 /TIMEOUT=2000
+ Sleep 250
+ IsWindow $0 0 killWinamp_agentKilled
+ SendMessage $0 ${WM_DESTROY} 0 0 /TIMEOUT=2000
+ Sleep 250
+ killWinamp_agentKilled:
+ ${EndIf}
+ ${EndIf}
+ ${LoopWhile} ${Errors}
+
+ Pop $1
+ Pop $0
+
+ SetDetailsPrint lastused
+
+ killWinamp_done:
+ ${If} ${Errors}
+ Abort "$(msgInstallAborted)"
+ ${EndIf}
+!macroend
+
+Section "un.$(IDS_UNINSTALL_MEDIA_PLAYER)" IDX_UNINSTALL_MEDIA_PLAYER
+ ExecWait '"$INSTDIR\${WINAMPEXE}" /UNREG'
+ !insertmacro 'Uninstaller_KillWinamp'
+
+ ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "WinampAgent"
+ ${If} $0 == "$INSTDIR\winampa.exe"
+ DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "WinampAgent"
+ ${EndIf}
+
+ DeleteRegKey HKEY_CURRENT_USER 'Software\${WINAMP}'
+
+ DeleteRegKey HKEY_CLASSES_ROOT "${WINAMP}.File"
+ DeleteRegKey HKEY_CLASSES_ROOT "${WINAMP}.Playlist"
+ DeleteRegKey HKEY_CLASSES_ROOT "${WINAMP}.SkinZip"
+ DeleteRegKey HKEY_CLASSES_ROOT "${WINAMP}.LangZip"
+ DeleteRegKey HKEY_CLASSES_ROOT "${WINAMP}.File.*"
+
+ DeleteRegKey HKEY_CLASSES_ROOT "Directory\shell\${WINAMP}.Play"
+ DeleteRegKey HKEY_CLASSES_ROOT "Directory\shell\${WINAMP}.Enqueue"
+ DeleteRegKey HKEY_CLASSES_ROOT "Directory\shell\${WINAMP}.Bookmark"
+ DeleteRegKey HKEY_CLASSES_ROOT "Directory\shell\${WINAMP}.WinampLibrary"
+ DeleteRegKey HKEY_CLASSES_ROOT "Directory\shell\${WINAMP}.EnqueueAndPlay"
+ DeleteRegKey HKLM "Software\Classes\Directory\shell\${WINAMP}.Play"
+ DeleteRegKey HKLM "Software\Classes\Directory\shell\${WINAMP}.Enqueue"
+ DeleteRegKey HKLM "Software\Classes\Directory\shell\${WINAMP}.Bookmark"
+ DeleteRegKey HKLM "Software\Classes\Directory\shell\${WINAMP}.WinampLibrary"
+ DeleteRegKey HKLM "Software\Classes\Directory\shell\${WINAMP}.EnqueueAndPlay"
+
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${WINAMP}"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\${WINAMPEXE}"
+
+ DeleteRegKey HKEY_CLASSES_ROOT "UNSV"
+ DeleteRegKey HKEY_CLASSES_ROOT "UVOX"
+ DeleteRegKey HKEY_CLASSES_ROOT "SHOUT"
+ DeleteRegKey HKEY_CLASSES_ROOT "SC"
+ DeleteRegKey HKEY_CLASSES_ROOT "ICY"
+ DeleteRegKey HKEY_CLASSES_ROOT "winamp"
+ ; need to get "winamp.exe /unreg" to do this instead...
+ ; DeleteRegValue HKEY_CLASSES_ROOT "pcast\shell\open\command" "" "$INSTDIR\${WINAMPEXE} /HANDLE %1"
+ ; DeleteRegValue HKEY_CLASSES_ROOT "feed\shell\open\command" "" "$INSTDIR\${WINAMPEXE} /HANDLE %1"
+
+ DeleteRegKey HKEY_CLASSES_ROOT "CLSID\{46986115-84D6-459c-8F95-52DD653E532E}"
+ DeleteRegKey HKEY_CLASSES_ROOT "CLSID\{77A366BA-2BE4-4a1e-9263-7734AA3E99A2}"
+ DeleteRegKey HKEY_CLASSES_ROOT "AppID\{7DE5C6C7-DAF2-42F9-9324-C8CF4E7E8AC5}"
+
+ DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\MTPMediaPlayerArrival" "${WINAMP}MTPHandler"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}MTPHandler"
+ DeleteRegKey HKEY_CLASSES_ROOT "Software\shell\${WINAMP}MTPHandler"
+
+ DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "${WINAMP}PlayMediaOnArrival"
+ DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "${WINAMP}PlayMediaOnArrival"
+ DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "${WINAMP}PlayMediaOnArrival"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}PlayMediaOnArrival"
+
+ DeleteRegKey HKLM "Software\Clients\Media\Winamp"
+ DeleteRegValue HKLM "Software\RegisteredApplications" "Winamp"
+
+!ifdef no_old_aod
+ ExecWait '"$INSTDIR\AOD\AolAod.exe" -uninstall'
+ Delete $INSTDIR\AOD\SOAF\*.*
+ RMDIR $INSTDIR\AOD\SOAF
+ Delete $INSTDIR\AOD\AOL\*.*
+ RMDIR $INSTDIR\AOD\AOL
+!endif
+
+ SetShellVarContext current
+ Call un.StartMenu_CleanData
+ SetShellVarContext all
+ Call un.StartMenu_CleanData
+
+ ${FrenchRadio_UninstallPlugin}
+
+ ; Files
+ ClearErrors
+ Delete "$INSTDIR\${WINAMPEXE}"
+ Delete "$INSTDIR\Winampa.exe"
+
+ Delete "$INSTDIR\Winamp.exe.manifest"
+ Delete "$INSTDIR\Winampmb.htm"
+ Delete "$INSTDIR\whatsnew.txt"
+ Delete "$INSTDIR\fmt.dll"
+ Delete "$INSTDIR\winamp.log"
+ Delete "$INSTDIR\logs\winamp.log"
+ RMDir "$INSTDIR\logs"
+ Delete "$INSTDIR\Winamp.lks"
+ Delete "$INSTDIR\winamp.pic"
+ Delete "$INSTDIR\Winamp.q1"
+ Delete "$INSTDIR\demo.aac"
+ Delete "$INSTDIR\demo.mp3"
+ Delete "$INSTDIR\demoedit.aac"
+ Delete "$INSTDIR\pxsdkpls.dll"
+ Delete "$INSTDIR\primosdk.dll"
+ Delete "$INSTDIR\pconfig.dcf"
+ Delete "$INSTDIR\System\primo.w5s"
+ Delete "$INSTDIR\UninstWA.exe"
+ Delete "$INSTDIR\unicows.dll"
+ Delete "$INSTDIR\Databurner.ini"
+ Delete "$INSTDIR\libsndfile.dll"
+ Delete "$INSTDIR\Shared\libsndfile.dll"
+ Delete "$INSTDIR\libFLAC.dll"
+ Delete "$INSTDIR\Shared\libFLAC.dll"
+ Delete "$INSTDIR\Shared\libFLAC_dynamic.dll"
+ Delete "$INSTDIR\burnlib.dll"
+ Delete "$INSTDIR\nde.dll"
+ Delete "$INSTDIR\Shared\nde.dll"
+ Delete "$INSTDIR\libmp4v2.dll"
+ Delete "$INSTDIR\Shared\libmp4v2.dll"
+ Delete "$INSTDIR\Shared\libalac.dll"
+ Delete "$INSTDIR\tataki.dll"
+ Delete "$INSTDIR\Shared\tataki.dll"
+ Delete "$INSTDIR\zlib.dll"
+ Delete "$INSTDIR\Shared\zlib.dll"
+ Delete "$INSTDIR\nxlite.dll"
+ Delete "$INSTDIR\Shared\nxlite.dll"
+ Delete "$INSTDIR\jnetlib.dll"
+ Delete "$INSTDIR\Shared\jnetlib.dll"
+ Delete "$SETTINGSDIR\winamp.pic" ; deprecated
+
+ ; - even if we do not ship it anymore - still need to remove
+ SetShellVarContext all
+ ; Music Now
+ Delete "$INSTDIR\AOL Music Now.ico"
+ Delete "$SMPROGRAMS\Winamp\AOL Music Now - 30 Days Free!.lnk"
+ Delete "$DESKTOP\30 Days Free! AOL MusicNow.lnk"
+ ; Active Virus Shield
+ Delete "$INSTDIR\avs.ico"
+ Delete "$SMPROGRAMS\Winamp\Free Active Virus Shield!.lnk"
+ Delete "$DESKTOP\Free Active Virus Shield!.lnk"
+ ; ASM Bundle
+ Delete "$INSTDIR\asm.ico"
+ Delete "$SMPROGRAMS\Winamp\Free security diagnostic!.lnk"
+ Delete "$DESKTOP\Free security diagnostic!.lnk"
+
+ ; MessageBox MB_YESNO|MB_ICONQUESTION $(msgRemoveSettings) /SD IDYES IDNO skip_removeSettings
+
+ ${If} ${FileExists} "$INSTDIR\Plugins\in_mjf.dll"
+ ${AndIfNot} ${Cmd} 'MessageBox MB_YESNO|MB_ICONQUESTION "$(msgRemoveMJUICE)" /SD IDYES IDNO'
+ UnRegDLL $SYSDIR\audioexctl.dll ; 1
+ Delete $SYSDIR\audioexctl.dll ; 2
+ ; DeleteNSPlug npaxdlpi.dll ; 3
+ Delete "$PROGRAMFILES\Mjuice Media Player\MJAgent.exe" ; 4
+ Delete "$PROGRAMFILES\Mjuice Media Player\MJSecurity.exe" ; 5
+ Delete "$PROGRAMFILES\Mjuice Media Player\MJSecurityClient.dll" ; 6
+ Delete "$PROGRAMFILES\Mjuice Media Player\MJUnInst.exe" ; 7
+ RMDir "$PROGRAMFILES\Mjuice Media Player\Users\MJuiceUser\Config Files" ; 8
+ RMDir "$PROGRAMFILES\Mjuice Media Player\Users\MJuiceUser" ; 9
+ RMDir "$PROGRAMFILES\Mjuice Media Player\Users" ; 10
+ RMDir "$PROGRAMFILES\Mjuice Media Player" ; 11
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MJuiceWinamp" ; 12
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\MJAgent.exe" ; 13
+ DeleteRegKey HKLM "Software\Audio Explosion\MJuice" ; 14
+ DeleteRegKey HKLM "Software\Audio Explosion\MJuice" ; 15
+ ${EndIf}
+
+ ; Plugins dir
+ UnRegDLL "$INSTDIR\Plugins\in_asfs.dll"
+ Delete "$INSTDIR\Plugins\in_asfs.dll"
+ Delete "$INSTDIR\Plugins\in_cdda.dll"
+ Delete "$INSTDIR\Plugins\in_cdda.cdb"
+ Delete "$INSTDIR\Plugins\cdinfo.db3"
+ Delete "$INSTDIR\Plugins\in_vorbis.dll"
+ Delete "$INSTDIR\Plugins\in_midi.dll"
+ Delete "$INSTDIR\Plugins\in_mod.dll"
+ Delete "$INSTDIR\Plugins\in_mjf.dll"
+ Delete "$INSTDIR\Plugins\in_mp3.dll"
+ Delete "$INSTDIR\Plugins\in_wave.dll"
+ Delete "$INSTDIR\Plugins\in_wm.dll"
+ Delete "$INSTDIR\Plugins\in_flac.dll"
+ Delete "$INSTDIR\Plugins\in_flv.dll"
+ Delete "$INSTDIR\Plugins\in_swf.dll"
+ Delete "$INSTDIR\Plugins\winampFLV.swf"
+ Delete "$INSTDIR\Plugins\in_avi.dll"
+ Delete "$INSTDIR\Plugins\in_mkv.dll"
+ Delete "$INSTDIR\Plugins\enc_flac.dll"
+ Delete "$INSTDIR\Plugins\enc_wav.dll"
+ Delete "$INSTDIR\Plugins\dsp_sps.dll"
+ Delete "$INSTDIR\Plugins\dsp_sps\justin -*.sps"
+ Delete "$INSTDIR\Plugins\dsp_sps\cockos -*.sps"
+ RMDir "$INSTDIR\Plugins\dsp_sps"
+ Delete "$INSTDIR\Plugins\out_disk.dll"
+ Delete "$INSTDIR\Plugins\out_ds.dll"
+ Delete "$INSTDIR\Plugins\out_wave.dll"
+ Delete "$INSTDIR\Plugins\out_wm.dll"
+ Delete "$INSTDIR\Plugins\out_wasapi.dll"
+ Delete "$INSTDIR\Plugins\read_file.dll"
+ Delete "$INSTDIR\Shared\read_file.dll"
+ Delete "$INSTDIR\Plugins\vis_avs.dat"
+ Delete "$INSTDIR\Plugins\vis_avs.dll"
+ Delete "$INSTDIR\Plugins\vis_nsfs.dll"
+ Delete "$INSTDIR\Plugins\vis_milk.dll"
+ Delete "$INSTDIR\Plugins\vis_milk2.dll"
+ Delete "$INSTDIR\Plugins\milkdrop.html"
+ Delete "$INSTDIR\Plugins\q_and_t_vars.gif"
+ Delete "$INSTDIR\Plugins\vms_desktop.dll"
+ Delete "$INSTDIR\Plugins\milk_config.ini"
+ Delete "$INSTDIR\Plugins\milk_img.ini"
+ Delete "$INSTDIR\Plugins\milk_msg.ini"
+ Delete "$INSTDIR\Plugins\vx*.*"
+ Delete "$INSTDIR\Plugins\gen_vx*.d*"
+ Delete "$INSTDIR\Plugins\readme_vx*.txt"
+
+ Delete "$INSTDIR\Plugins\avs\*.ape"
+ Delete "$INSTDIR\Plugins\avs\*.bmp"
+ RMdir /r "$INSTDIR\Plugins\avs\newpicks"
+ RMdir /r "$INSTDIR\Plugins\avs\NullsoftPicks"
+ RMdir /r "$INSTDIR\Plugins\avs\Winamp 5 Picks"
+ RMdir /r "$INSTDIR\Plugins\avs\Community Picks"
+
+ Delete "$INSTDIR\Plugins\gen_ml.dll"
+ Delete "$INSTDIR\Plugins\gen_ff.dll"
+ Delete "$INSTDIR\Plugins\Freeform\wacs\freetype\freetype.wac"
+ Delete "$INSTDIR\Plugins\gen_orgler.dll"
+ Delete "$INSTDIR\Plugins\gen_tray.dll"
+ Delete "$INSTDIR\Plugins\gen_hotkeys.dll"
+ Delete "$INSTDIR\Plugins\in_nsv.dll"
+ Delete "$INSTDIR\Plugins\in_dshow.dll"
+ Delete "$INSTDIR\Plugins\nsvdec_vp3.dll"
+ Delete "$INSTDIR\Plugins\nsvdec_vp5.dll"
+ Delete "$INSTDIR\Plugins\nsvdec_vp6.dll"
+ Delete "$INSTDIR\Plugins\nsvdec_aac.dll"
+ Delete "$INSTDIR\Plugins\enc_aac.dll"
+ Delete "$INSTDIR\Plugins\enc_fhgaac.dll"
+ Delete "$INSTDIR\Plugins\enc_aacplus.dll"
+ Delete "$INSTDIR\Plugins\enc_wma.dll"
+ Delete "$INSTDIR\Plugins\*.prx"
+ Delete "$INSTDIR\Plugins\enc_vorbis.dll"
+ Delete "$INSTDIR\Plugins\enc_lame.dll"
+ Delete "$INSTDIR\Shared\lame_enc.dll"
+ Delete "$INSTDIR\Plugins\lame_enc.dll"
+ Delete "$INSTDIR\Plugins\gen_jumpex.dll"
+ Delete "$INSTDIR\Plugins\gen_orgler.dll"
+ Delete "$INSTDIR\Plugins\in_mp4.dll"
+ Delete "$INSTDIR\Plugins\enc_mp4.dll"
+ Delete "$INSTDIR\Plugins\libmp4v2.dll"
+ Delete "$INSTDIR\Shared\libmp4v2.dll"
+ Delete "$INSTDIR\Shared\libmpg123.dll"
+ Delete "$INSTDIR\Plugins\ml_wire.dll"
+ Delete "$INSTDIR\Plugins\ml_online.dll"
+ Delete "$INSTDIR\Plugins\ml_bookmarks.dll"
+ Delete "$INSTDIR\Plugins\ml_history.dll"
+ Delete "$INSTDIR\Plugins\ml_local.dll"
+ Delete "$INSTDIR\Plugins\ml_nowplaying.dll"
+ Delete "$INSTDIR\Plugins\ml_playlists.dll"
+ Delete "$INSTDIR\Plugins\ml_rg.dll"
+ Delete "$INSTDIR\Plugins\ReplayGainAnalysis.dll"
+ Delete "$INSTDIR\Shared\ReplayGainAnalysis.dll"
+ Delete "$INSTDIR\Plugins\ml_disc.dll"
+ Delete "$INSTDIR\Plugins\ml_xpdxs.dll"
+ Delete "$INSTDIR\Plugins\ml_dash.dll"
+ Delete "$INSTDIR\Plugins\ml_pmp.dll"
+ Delete "$INSTDIR\Plugins\ml_autotag.dll"
+ Delete "$INSTDIR\Plugins\ml_orb.dll"
+ Delete "$INSTDIR\Plugins\ml_plg.dll"
+ Delete "$INSTDIR\Plugins\ml_transcode.dll"
+ Delete "$INSTDIR\Plugins\ml_impex.dll"
+ Delete "$INSTDIR\Plugins\ml_addons.dll"
+ Delete "$INSTDIR\Plugins\ml_downloads.dll"
+ Delete "$INSTDIR\Plugins\ml_cloud.dll"
+ Delete "$INSTDIR\Plugins\ml_enqplay.dll"
+ Delete "$INSTDIR\Plugins\ml_nft.dll"
+ Delete "$INSTDIR\Plugins\ml_fanzone.dll"
+ Delete "$INSTDIR\Plugins\ml_hotmixradio.dll"
+ Delete "$INSTDIR\Plugins\pmp_ipod.dll"
+ Delete "$INSTDIR\Plugins\pmp_wifi.dll"
+ Delete "$INSTDIR\Plugins\pmp_njb.dll"
+ Delete "$INSTDIR\Plugins\pmp_p4s.dll"
+ Delete "$INSTDIR\Plugins\pmp_usb.dll"
+ Delete "$INSTDIR\Plugins\pmp_usb2.dll"
+ Delete "$INSTDIR\Plugins\pmp_android.dll"
+ Delete "$INSTDIR\Plugins\pmp_activesync.dll"
+ Delete "$INSTDIR\Plugins\pmp_cloud.dll"
+ Delete "$INSTDIR\Plugins\in_linein.dll"
+ Delete "$INSTDIR\Plugins\Predixis MusicMagic\images\*.*"
+ Delete "$INSTDIR\Plugins\Predixis MusicMagic\*.*"
+ Delete "$INSTDIR\Plugins\milkdrop_preset_authoring.html"
+ Delete "$INSTDIR\Plugins\ml_devices.dll"
+
+ Delete "$INSTDIR\Plugins\gen_talkback.dll"
+
+ Delete "$INSTDIR\Plugins\gen_crasher.dll"
+ Delete "$INSTDIR\Plugins\reporter.exe"
+ Delete "$INSTDIR\reporter.exe"
+ Delete "$INSTDIR\Plugins\nscrt.dll"
+ Delete "$INSTDIR\Plugins\tataki.dll"
+ Delete "$INSTDIR\Plugins\gen_dropbox.dll"
+
+ UnRegDLL "$INSTDIR\Plugins\Gracenote\cddbcontrolwinamp.dll"
+ UnRegDLL "$INSTDIR\Plugins\Gracenote\cddbuiwinamp.dll"
+ UnRegDLL "$INSTDIR\Plugins\Gracenote\CddbMusicIDWinamp.dll"
+ UnRegDLL "$INSTDIR\Plugins\Gracenote\CddbPlaylist2Winamp.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\cddbcontrolwinamp.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\cddbuiwinamp.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbWOManagerWinamp.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbFPX1.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbAFX3.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbCMSig_1_2.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbCMSig_1_3.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbFEX.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbS12T.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbMusicIDWinamp.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\CddbPlaylist2Winamp.dll"
+ Delete "$INSTDIR\Plugins\Gracenote\Cddbx*.dll"
+ RMDir "$INSTDIR\Plugins\Gracenote"
+
+ RMDir /r "$INSTDIR\Plugins\Freeform"
+ RMDir /r "$INSTDIR\Plugins\milkdrop"
+ RMDir /r "$INSTDIR\Plugins\Milkdrop2"
+ RMDir /r "$INSTDIR\Plugins\Predixis MusicMagic\images"
+ RMDir /r "$INSTDIR\Plugins\Predixis MusicMagic"
+ RMDir "$INSTDIR\Plugins\avs"
+ RMDir "$INSTDIR\Plugins"
+
+ ; System directory
+ Delete "$INSTDIR\System\aacPlusDecoder.w5s"
+ Delete "$INSTDIR\System\aacPlusDecoder.wbm"
+ Delete "$INSTDIR\System\aacdec.w5s"
+ Delete "$INSTDIR\System\aacdec.wbm"
+ Delete "$INSTDIR\System\mp3.w5s"
+ Delete "$INSTDIR\System\mp3.wbm"
+ Delete "$INSTDIR\System\h264.w5s"
+ Delete "$INSTDIR\System\h264.wbm"
+ Delete "$INSTDIR\System\mp4v.w5s"
+ Delete "$INSTDIR\System\mp4v.wbm"
+ Delete "$INSTDIR\System\a52.w5s"
+ Delete "$INSTDIR\System\a52.wbm"
+ Delete "$INSTDIR\System\vlb.w5s"
+ Delete "$INSTDIR\System\vlb.wbm"
+ Delete "$INSTDIR\System\vp6.w5s"
+ Delete "$INSTDIR\System\vp6.wbm"
+ Delete "$INSTDIR\System\adpcm.w5s"
+ Delete "$INSTDIR\System\adpcm.wbm"
+ Delete "$INSTDIR\System\pcm.w5s"
+ Delete "$INSTDIR\System\pcm.wbm"
+ Delete "$INSTDIR\System\jnetlib.w5s"
+ Delete "$INSTDIR\System\jnetlib.wbm"
+ Delete "$INSTDIR\System\tagz.w5s"
+ Delete "$INSTDIR\System\albumart.w5s"
+ Delete "$INSTDIR\System\png.w5s"
+ Delete "$INSTDIR\System\jpeg.w5s"
+ Delete "$INSTDIR\System\bmp.w5s"
+ Delete "$INSTDIR\System\gif.w5s"
+ Delete "$INSTDIR\System\xml.w5s"
+ Delete "$INSTDIR\System\alac.w5s"
+ Delete "$INSTDIR\System\alac.wbm"
+ Delete "$INSTDIR\System\f263.w5s"
+ Delete "$INSTDIR\System\f263.wbm"
+ Delete "$INSTDIR\System\playlist.w5s"
+ Delete "$INSTDIR\System\watcher.w5s"
+ Delete "$INSTDIR\System\filereader.w5s"
+ Delete "$INSTDIR\System\filereader.wbm"
+ Delete "$INSTDIR\System\db.w5s"
+ Delete "$INSTDIR\System\gracenote.w5s"
+ Delete "$INSTDIR\System\dlmgr.w5s"
+ Delete "$INSTDIR\System\dlmgr.wbm"
+ Delete "$INSTDIR\System\timer.w5s"
+ Delete "$INSTDIR\System\omBrowser.w5s"
+ Delete "$INSTDIR\System\omBrowser.wbm"
+ Delete "$INSTDIR\System\auth.w5s"
+ Delete "$INSTDIR\System\vp8x.w5s"
+ Delete "$INSTDIR\System\vp8x.wbm"
+ Delete "$INSTDIR\System\vp8.w5s"
+ Delete "$INSTDIR\System\vp8.wbm"
+ Delete "$INSTDIR\System\theora.w5s"
+ Delete "$INSTDIR\System\theora.wbm"
+ Delete "$INSTDIR\System\dca.w5s"
+ Delete "$INSTDIR\System\dca.wbm"
+ Delete "$INSTDIR\System\devices.w5s"
+ Delete "$INSTDIR\System\devices.wbm"
+ Delete "$INSTDIR\System\wasabi2.w5s"
+ Delete "$INSTDIR\System\xspf.w5s"
+ Delete "$INSTDIR\System\UnicodeTaskbarFix.w5s"
+ Delete "$INSTDIR\System\wac_network.w5s"
+ Delete "$INSTDIR\System\wac_downloadManager.w5s"
+ RMDir "$INSTDIR\System"
+
+ ; components directory
+ Delete "$INSTDIR\Components\cloud.w6c"
+ Delete "$INSTDIR\Components\ssdp.w6c"
+ RMDir "$INSTDIR\Components"
+
+ ; Qt Components
+ Delete "$INSTDIR\Qt5Core.dll"
+ Delete "$INSTDIR\Qt5Network.dll"
+ Delete "$INSTDIR\platforms\qwindows.dll"
+ RMDir "$INSTDIR\platforms"
+ Delete "$INSTDIR\printsupport\windowsprintersupport.dll"
+ RMDir "$INSTDIR\printsupport"
+ Delete "$INSTDIR\QtPositioning\declarative_positioning.dll"
+ RMDir "$INSTDIR\QtPositioning"
+
+ ; Skins
+ ${Skins_GetPath} $0
+ ${If} $0 != ""
+ ${Skins_DeleteFolder} "$0"
+ ${EndIf}
+
+ ${Skins_GetDefaultPath} $0
+ ${If} $0 != ""
+ ${Skins_DeleteFolder} "$0"
+ ${EndIf}
+
+ ; Languages
+ ReadINIStr $0 "$WINAMPINI" "Winamp" "LangDir"
+ ${If} $0 == ""
+ StrCpy $0 "Lang"
+ ${EndIf}
+ Push $INSTDIR
+ Push $0
+ nsis_winamp::GetFullPath
+ Pop $0
+
+ !insertmacro WALANG_UNINSTALL $0 "ES-US"
+ !insertmacro WALANG_UNINSTALL $0 "DE-DE"
+ !insertmacro WALANG_UNINSTALL $0 "ES-US"
+ !insertmacro WALANG_UNINSTALL $0 "FR-FR"
+ ;!insertmacro WALANG_UNINSTALL $0 "IT-IT"
+ ;!insertmacro WALANG_UNINSTALL $0 "NL-NL"
+ !insertmacro WALANG_UNINSTALL $0 "PL-PL"
+ ;!insertmacro WALANG_UNINSTALL $0 "SV-SE"
+ !insertmacro WALANG_UNINSTALL $0 "RU-RU"
+ ;!insertmacro WALANG_UNINSTALL $0 "ZH-CN"
+ ;!insertmacro WALANG_UNINSTALL $0 "ZH-TW"
+ !insertmacro WALANG_UNINSTALL $0 "JA-JP"
+ ;!insertmacro WALANG_UNINSTALL $0 "KO-KR"
+ !insertmacro WALANG_UNINSTALL $0 "TR-TR"
+ !insertmacro WALANG_UNINSTALL $0 "PT-BR"
+ !insertmacro WALANG_UNINSTALL $0 "RO-RO"
+ !insertmacro WALANG_UNINSTALL $0 "HU-HU"
+ ;!insertmacro WALANG_UNINSTALL $0 "ID-ID"
+ RMDir "$0" ; don't try to delete, prompt user later
+
+ Delete $INSTDIR\AOD\*.*
+ RMDir $INSTDIR\AOD
+
+ Delete "$INSTDIR\nsutil.dll"
+ Delete "$INSTDIR\Shared\nsutil.dll"
+
+ ${If} ${AtLeastWinVista}
+ ExecWait '"$INSTDIR\elevator.exe" /UnregServer'
+ Sleep 1000
+
+ ${If} ${FileExists} "$INSTDIR\elevatorps.dll"
+ UnRegDLL "$INSTDIR\elevatorps.dll"
+ Sleep 1000
+ ${EndIf}
+
+ ${If} ${FileExists} "$INSTDIR\Shared\elevatorps.dll"
+ UnRegDLL "$INSTDIR\Shared\elevatorps.dll"
+ Sleep 1000
+ ${EndIf}
+
+ KillProcDLL::KillProc "elevator.exe"
+ Sleep 1000
+ Delete "$INSTDIR\elevator.exe"
+ Delete "$INSTDIR\elevatorps.dll"
+ Delete "$INSTDIR\Shared\elevatorps.dll"
+
+ ${If} ${FileExists} "$INSTDIR\elevator.exe"
+ Sleep 1000
+ Delete /REBOOTOK "$INSTDIR\elevator.exe"
+ ${EndIf}
+
+ ${If} ${FileExists} "$INSTDIR\elevatorps.dll"
+ Sleep 1000
+ Delete /REBOOTOK "$INSTDIR\elevatorps.dll"
+ ${EndIf}
+
+ ${If} ${FileExists} "$INSTDIR\Shared\elevatorps.dll"
+ Sleep 1000
+ Delete /REBOOTOK "$INSTDIR\Shared\elevatorps.dll"
+ ${EndIf}
+ ${EndIf}
+
+ RMDir "$INSTDIR\Shared"
+
+ ;Sleep 1000
+ Delete /REBOOTOK "$INSTDIR\nscrt.dll"
+ RMDir /r /REBOOTOK "$INSTDIR\Microsoft.VC90.CRT"
+ RMDir /r /REBOOTOK "$INSTDIR\Microsoft.VC142.CRT"
+ Delete "$INSTDIR\msvcr90.dll" ; this will exist on win2k installs
+
+ Delete "$INSTDIR\OpenCandy\*.*"
+ RMDir /r "$INSTDIR\OpenCandy"
+
+ ;Sleep 1000
+ RMDir "$INSTDIR"
+
+ ; Deleting Firewall Rules
+ Push $0
+ Push $1
+
+ StrCpy $0 "$INSTDIR\${WINAMPEXE}"
+ ExecDos::exec /NOUNLOAD /TIMEOUT=5000 'netsh advfirewall firewall delete rule name="${WINAMP}" program="$0"' "" ""
+ Pop $1
+ ${If} $1 != 0
+ ExecDos::exec /NOUNLOAD /TIMEOUT=5000 'netsh firewall delete allowedprogram program="$0"' "" ""
+ ${EndIf}
+
+ Pop $1
+ Pop $0
+
+ StrCpy $winamp.uninstall.checkFolder "true"
+
+SectionEnd
+
+!endif ;NULLSOFT_WINAMP_UNINSTALLER_PLAYER_HEADER \ No newline at end of file
diff --git a/Src/installer/winamp/uninstall/programs.nsh b/Src/installer/winamp/uninstall/programs.nsh
new file mode 100644
index 00000000..6009f64b
--- /dev/null
+++ b/Src/installer/winamp/uninstall/programs.nsh
@@ -0,0 +1,252 @@
+/*!ifndef NULLSOFT_WINAMP_UNINSTALL_BUNDLE_HEADER
+!define NULLSOFT_WINAMP_UNINSTALL_BUNDLE_HEADER
+
+!include "fileFunc.nsh"
+!include ".\utils\wafuncs.nsh"
+!include ".\utils\uninstallInfo.nsh"
+!include ".\utils\sectionDescription.nsh"
+
+!macro UninstallBundle_IsGroupEmpty __outputVar
+ Call ${INSTALL_TYPE_PREFIX}UninstallBundle_IsGroupEmpty
+ Pop "${__outputVar}"
+!macroend
+
+!define UninstallBundle_IsGroupEmpty "!insertmacro 'UninstallBundle_IsGroupEmpty'"
+
+!macro UninstallBundle_GetDescriptionProvider __outputVar
+ GetFunctionAddress ${__outputVar} ${INSTALL_TYPE_PREFIX}UninstallBundle_DescriptionProvider
+!macroend
+
+!define UninstallBundle_GetDescriptionProvider "!insertmacro 'UninstallBundle_GetDescriptionProvider'"
+
+!macro UninstallBundle_UninstallProgram __displayName __programName __uninstallParam __outputResult
+ Push "${__displayName}"
+ Push "${__uninstallParam}"
+ Push "${__programName}"
+ Call ${INSTALL_TYPE_PREFIX}UninstallBundle_UninstallProgram
+ Pop ${__outputResult}
+!macroend
+
+!define UninstallBundle_UninstallProgram "!insertmacro 'UninstallBundle_UninstallProgram'"
+
+SectionGroup "${INSTALL_TYPE_PREFIX}$(MUI_UNTEXT_CONFIRM_TITLE)" IDX_UNINSTALL_BUNDLES_GROUP
+ Section "${INSTALL_TYPE_PREFIX}$(IDS_BUNDLE1_NAME)" IDX_UNINSTALL_WINAMP_REMOTE
+ ${UninstallBundle_UninstallProgram} "${__SECTION__}" "Orb" "/S _?=$$INSTDIR" $0
+ SectionEnd
+
+ Section "${INSTALL_TYPE_PREFIX}$(IDS_BUNDLE2_NAME)" IDX_UNINSTALL_WINAMP_TOOLBAR
+ ${UninstallBundle_UninstallProgram} "${__SECTION__}" "Winamp Toolbar" "/S _?=$$INSTDIR" $0
+ SectionEnd
+
+ Section "${INSTALL_TYPE_PREFIX}Winamp Detector Plug-in" IDX_UNINSTALL_BROWSER_PLUGIN
+ ${UninstallBundle_UninstallProgram} "${__SECTION__}" "Winamp Detect" "/S _?=$$INSTDIR" $0
+ SectionEnd
+
+ Section "${INSTALL_TYPE_PREFIX}$(IDS_BUNDLE3_NAME)" IDX_UNINSTALL_EMUSIC
+ ${UninstallBundle_UninstallProgram} "${__SECTION__}" "eMusic Promotion" "/S _?=$$INSTDIR" $0
+ SectionEnd
+SectionGroupEnd
+
+Function ${INSTALL_TYPE_PREFIX}UninstallBundle_InitializeSection
+ Exch $0
+ Exch 1
+ Exch $1
+ Push $2
+ Push $3
+
+ ${UninstallInfo_FindProgramKey} $0 $2
+ ${If} $2 == ""
+ SectionSetText $1 ""
+ SectionGetFlags $1 $2
+ IntOp $3 ${SF_SELECTED} ~
+ IntOp $2 $2 & $3
+ SectionSetFlags $1 $2
+ ${Else}
+ ${UninstallInfo_GetStringValue} $2 "DisplayName" $3
+ ${If} $3 != ""
+ SectionSetText $1 $3
+ ${EndIf}
+ SectionGetFlags $1 $2
+ IntOp $2 $2 | ${SF_SELECTED}
+ SectionSetFlags $1 $2
+ ${EndIf}
+
+ Pop $3
+ Pop $2
+ Pop $1
+ Pop $0
+FunctionEnd
+
+!macro UninstallBundle_InitializeSection __sectionIndex __bundleName
+ Push "${__sectionIndex}"
+ Push "${__bundleName}"
+ Call ${INSTALL_TYPE_PREFIX}UninstallBundle_InitializeSection
+!macroend
+
+!define UninstallBundle_InitializeSection "!insertmacro 'UninstallBundle_InitializeSection'"
+
+Function ${INSTALL_TYPE_PREFIX}UninstallBundle_InitializeGroup
+ ${UninstallBundle_InitializeSection} ${IDX_UNINSTALL_WINAMP_TOOLBAR} "Winamp Toolbar"
+ ${UninstallBundle_InitializeSection} ${IDX_UNINSTALL_BROWSER_PLUGIN} "Winamp Detect"
+ ${UninstallBundle_InitializeSection} ${IDX_UNINSTALL_WINAMP_REMOTE} "Orb"
+ ${UninstallBundle_InitializeSection} ${IDX_UNINSTALL_EMUSIC} "eMusic Promotion"
+FunctionEnd
+
+!define UninstallBundle_InitializeGroup "Call ${INSTALL_TYPE_PREFIX}UninstallBundle_InitializeGroup"
+
+Function ${INSTALL_TYPE_PREFIX}UninstallBundle_IsGroupEmpty
+ Push $0
+ Push $1
+ Push $2
+
+ StrCpy $1 ${IDX_UNINSTALL_BUNDLES_GROUP}
+ ${Do}
+ IntOp $1 $1 + 1
+ ClearErrors
+ SectionGetFlags $1 $0
+ ${IfNot} ${Errors}
+ IntOp $2 $0 & ${SF_SECGRPEND}
+ ${If} 0 != $2
+ StrCpy $0 "true"
+ ${Break}
+ ${Else}
+ IntOp $2 $0 & ${SF_SELECTED}
+ ${If} 0 != $2
+ Push $3
+ SectionGetText $1 $3
+ Pop $3
+ StrCpy $0 "false"
+ ${Break}
+ ${EndIf}
+ ${EndIf}
+ ${Else}
+ StrCpy $0 "true"
+ ${Break}
+ ${EndIf}
+ ${Loop}
+ Pop $2
+ Pop $1
+ Exch $0
+FunctionEnd
+
+Function ${INSTALL_TYPE_PREFIX}UninstallBundle_DescriptionProvider
+ Exch $0
+ Push $1
+ ${Select} $0
+ ${Case} ${IDX_UNINSTALL_WINAMP_TOOLBAR}
+ StrCpy $1 "Winamp Toolbar"
+ ${Case} ${IDX_UNINSTALL_BROWSER_PLUGIN}
+ StrCpy $1 "Winamp Detect"
+ ${Case} ${IDX_UNINSTALL_WINAMP_REMOTE}
+ StrCpy $1 "Orb"
+ ${Case} ${IDX_UNINSTALL_EMUSIC}
+ StrCpy $1 "eMusic Promotion"
+ ${CaseElse}
+ StrCpy $1 ""
+ ${EndSelect}
+
+ ${If} $1 != ""
+ Push $2
+ ${UninstallInfo_FindProgramKey} $1 $2
+ ${If} $2 != ""
+ ${UninstallInfo_GetStringValue} $2 "winampDescription" $1
+ ${If} $1 == ""
+ ${UninstallInfo_GetStringValue} $2 "Comments" $1
+ ${EndIf}
+ ${Else}
+ StrCpy $1 ""
+ ${EndIf}
+ Pop $2
+ ${EndIf}
+
+ ${If} $1 == ""
+ Push $0
+ Call un.GetSectionDescription
+ Pop $1
+ ${EndIf}
+
+ Exch $1
+ Exch 1
+ Pop $0
+FunctionEnd
+
+Function ${INSTALL_TYPE_PREFIX}UninstallBundle_UninstallProgram
+ Exch $0
+ Exch 1
+ Exch $1
+ Exch 2
+ Exch $2
+ Push $3
+ Push $4
+
+ StrCpy $4 "$(IDS_UNINSTALL_BUNDLE_TEMPLATE)"
+
+ ${UninstallInfo_FindProgramKey} $0 $3
+ ${If} $3 != ""
+ ${UninstallInfo_GetExpandableStringValue} $3 "winampUninstall" $0
+ ${If} $0 == ""
+ ${UninstallInfo_GetExpandableStringValue} $3 "UninstallString" $0
+ ${If} $0 != ""
+ ${AndIf} $1 != ""
+
+ ${Path_UnquoteSpaces} $0 $0
+ ${Path_RemoveBlanks} $0 $0
+
+ StrLen $2 "_?=$$INSTDIR"
+ StrLen $3 $1
+ ${If} $3 >= $2
+ Push $4
+ StrCpy $4 $1 "" -$2
+ ${If} $4 == "_?=$$INSTDIR"
+ IntOp $2 $3 - $2
+ StrCpy $1 $1 $2 0
+ ${GetParent} $0 $2
+ ${Path_UnquoteSpaces} $2 $2
+ StrCpy $1 "$1 _?=$2"
+ StrCpy $3 "deleteUninstaller"
+ ${Else}
+ StrCpy $3 ""
+ ${EndIf}
+ Pop $4
+ ${Else}
+ StrCpy $3 ""
+ ${EndIf}
+ StrCpy $0 "$\"$0$\" $1"
+ ${EndIf}
+ ${EndIf}
+ ${Else}
+ StrCpy $0 ""
+ ${EndIf}
+
+ ${If} $0 != ""
+ ClearErrors
+ DetailPrint $4
+ SetDetailsPrint none
+ ExecWait '$0' $2
+ ${IfNot} ${Errors}
+ ${AndIf} $2 == 0
+ ${If} $3 == "deleteUninstaller"
+ ${Path_RemoveArgs} $0 $1
+ ${Path_UnquoteSpaces} $1 $1
+ ${Path_RemoveBlanks} $1 $1
+ Delete "$1"
+ ${IfNot} ${Errors}
+ ${GetParent} $1 $3
+ RMDir "$3"
+ ${EndIf}
+ ${EndIf}
+ ${EndIf}
+ SetDetailsPrint lastused
+ ${Else}
+ StrCpy $2 ""
+ ${EndIf}
+
+ Pop $4
+ Pop $3
+ Exch $2
+ Exch 2
+ Pop $1
+ Pop $0
+FunctionEnd
+
+!endif ;NULLSOFT_WINAMP_UNINSTALL_BUNDLE_HEADER*/ \ No newline at end of file
diff --git a/Src/installer/winamp/uninstall/ui.nsh b/Src/installer/winamp/uninstall/ui.nsh
new file mode 100644
index 00000000..23e7cfa9
--- /dev/null
+++ b/Src/installer/winamp/uninstall/ui.nsh
@@ -0,0 +1,27 @@
+!ifndef NULLSOFT_WINAMP_UNINSTALLER_UI_HEADER
+!define NULLSOFT_WINAMP_UNINSTALLER_UI_HEADER
+
+!include ".\mui2.nsh"
+
+PageEx un.custom
+ PageCallbacks un.UI_OnComponentsPageCreate
+PageExEnd
+
+!insertmacro MUI_UNPAGE_INSTFILES
+
+!define MUI_FINISHPAGE_TEXT_LARGE
+!define MUI_FINISHPAGE_RUN
+!define MUI_FINISHPAGE_TEXT "$(IDS_UNINSTALL_SUBHEADER)"
+!define MUI_FINISHPAGE_RUN_NOTCHECKED
+!define MUI_FINISHPAGE_RUN_TEXT "$(IDS_UNINSTALL_EXPLORER_CHECKBOX_TEXT)"
+!define MUI_FINISHPAGE_RUN_FUNCTION un.UI_OnFinishPageRun
+
+!define MUI_FINISHPAGE_SHOWREADME
+!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "$(IDS_UNINSTALL_FEEDBACK_CHECKBOX_TEXT)"
+!define MUI_FINISHPAGE_SHOWREADME_FUNCTION un.UI_OnFinishPageReadMe
+
+!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.UI_OnFinishPageShow
+!insertmacro MUI_UNPAGE_FINISH
+
+!endif ;NULLSOFT_WINAMP_UNINSTALLER_UI_HEADER \ No newline at end of file
diff --git a/Src/installer/winamp/uninstall/uiEvents.nsh b/Src/installer/winamp/uninstall/uiEvents.nsh
new file mode 100644
index 00000000..e18f7d60
--- /dev/null
+++ b/Src/installer/winamp/uninstall/uiEvents.nsh
@@ -0,0 +1,94 @@
+!ifndef NULLSOFT_WINAMP_UNINSTALLER_UI_EVENTS_HEADER
+!define NULLSOFT_WINAMP_UNINSTALLER_UI_EVENTS_HEADER
+
+!include ".\uninstall\ui.nsh"
+!include ".\pages\groupCheckList.nsh"
+!include ".\utils\wafuncs.nsh"
+!include ".\utils\sectionDescription.nsh"
+!include "windowText.nsh"
+
+Function un.UI_OnComponentsPageCreate
+ Push $0
+ Push $1
+ Push $2
+
+ ${NextButton_SetLastPageMode} $0
+
+ StrCpy $0 ${IDX_UNINSTALL_COMPONENTS_GROUP}
+ ClearErrors
+ SectionGetText $0 $1
+ ${If} ${Errors}
+ StrCpy $1 ""
+ ${EndIf}
+
+ ${GetSectionDescription} $0 $2
+ !insertmacro MUI_HEADER_TEXT "$1" "$2"
+
+ ${GroupCheckList_CreatePage} $0 "" "$(IDS_UNINSTALL_COMPONENTS_FOOTER)" "" "default" ""
+
+ Pop $2
+ Pop $1
+ Pop $0
+FunctionEnd
+
+Function un.UI_OnFinishPageReadMe
+ ${If} ${IsWinXP}
+ StrCpy $0 "XP"
+ ${ElseIf} ${IsWinVista}
+ StrCpy $0 "Vista"
+ ${ElseIf} ${IsWin7}
+ StrCpy $0 "7"
+ ${ElseIf} ${IsWin8}
+ StrCpy $0 "8"
+ ${ElseIf} ${IsWin8.1}
+ StrCpy $0 "8.1"
+ ${Else}
+ StrCpy $0 "Unknown"
+ ${Endif}
+ ExecShell "open" '"http://services.winamp.com/redirect/support?reason=uninstall&subject=Winamp Uninstall&product=Winamp Desktop&v=${VERSION_MAJOR}.${VERSION_MINOR}${VERSION_MINOR_SECOND} ${InstallType}&platform=Windows $0"'
+FunctionEnd
+
+Function un.UI_OnFinishPageRun
+ ExecShell "open" '"$INSTDIR"'
+FunctionEnd
+
+Function un.UI_OnFinishPageShow
+
+ !ifdef MUI_FINISHPAGE_RUN_VARIABLES
+ ${NX_OffsetWindowPos} $mui.FinishPage.Run 0 80
+ !endif
+
+ !ifdef MUI_FINISHPAGE_SHOREADME_VARAIBLES
+ ${NX_OffsetWindowPos} $mui.FinishPage.ShowReadme 0 70
+ !endif
+
+ ${NX_IncreaseWindowSize} $mui.FinishPage.Text 0 70
+
+ Push $0
+
+ StrCpy $0 ""
+ ${If} $winamp.uninstall.checkFolder == "true"
+ ${DirState} "$INSTDIR" $0
+ ${If} $0 == 1
+ StrCpy $0 "show_explorer"
+ ${Else}
+ StrCpy $0 0
+ ${EndIf}
+ ${EndIf}
+
+ ${If} $0 == "show_explorer"
+ ${If} $mui.FinishPage.Text != 0
+ ${NX_SetWindowText} $mui.FinishPage.Text "$(IDS_UNINSTALL_SUBHEADER)$(IDS_UNINSTALL_FILES_NOT_REMOVED)"
+ ${EndIf}
+ ${Else}
+ !ifdef MUI_FINISHPAGE_RUN_VARIABLES
+ SendMessage $mui.FinishPage.Run ${BM_SETCHECK} 0 0
+ ShowWindow $mui.FinishPage.Run ${SW_HIDE}
+ !endif
+ ${EndIf}
+
+ Pop $0
+
+FunctionEnd
+
+!endif ; NULLSOFT_WINAMP_UNINSTALLER_UI_EVENTS_HEADER \ No newline at end of file
diff --git a/Src/installer/winamp/uninstall/uninstall.nsh b/Src/installer/winamp/uninstall/uninstall.nsh
new file mode 100644
index 00000000..59d50b06
--- /dev/null
+++ b/Src/installer/winamp/uninstall/uninstall.nsh
@@ -0,0 +1,13 @@
+!ifndef NULLSOFT_WINAMP_UNINSTALLER_HEADER
+!define NULLSOFT_WINAMP_UNINSTALLER_HEADER
+
+Var winamp.uninstall.checkFolder
+
+!define INSTALL_TYPE_PREFIX "un."
+
+!include ".\uninstall\components.nsh"
+!include ".\uninstall\ui.nsh"
+!include ".\uninstall\uiEvents.nsh"
+!include ".\uninstall\descriptionTable.nsh"
+
+!endif ;NULLSOFT_WINAMP_UNINSTALLER_HEADER \ No newline at end of file
diff --git a/Src/installer/winamp/uninstall/userData.nsh b/Src/installer/winamp/uninstall/userData.nsh
new file mode 100644
index 00000000..70d78516
--- /dev/null
+++ b/Src/installer/winamp/uninstall/userData.nsh
@@ -0,0 +1,98 @@
+!ifndef NULLSOFT_WINAMP_UNINSTALLER_USERDATA_HEADER
+!define NULLSOFT_WINAMP_UNINSTALLER_USERDATA_HEADER
+
+Section "un.$(IDS_UNINSTALL_USER_PREFERENCES)" IDX_UNINSTALL_USER_PREFERENCES
+ ; do we still need this line? If no paths.ini, then $SETTINGSDIR = $INSTDIR anyway
+ ; StrCmp $SETTINGSDIR $INSTDIR skip_removeIniPath
+ ${FrenchRadio_UninstallUserData}
+
+ Delete "$INSTDIR\install.ini"
+ Delete "$INSTDIR\paths.ini"
+ Delete "$SETTINGSDIR\Winamp.ini"
+ Delete "$SETTINGSDIR\Winamp.lks"
+ Delete "$SETTINGSDIR\winamp.m3u"
+ Delete "$SETTINGSDIR\winamp.m3u8"
+ Delete "$SETTINGSDIR\winamp.log"
+ Delete "$APPDATA\Winamp\winamp.log"
+ Delete "$SETTINGSDIR\winamp.pic"
+ Delete "$SETTINGSDIR\studio.xnf"
+ Delete "$SETTINGSDIR\Winamp.q1"
+ Delete "$SETTINGSDIR\Winamp.q2"
+ Delete "$SETTINGSDIR\Winamp.bm"
+ Delete "$SETTINGSDIR\Winamp.bm8"
+ Delete "$SETTINGSDIR\demo.aac"
+ Delete "$SETTINGSDIR\demo.mp3"
+ Delete "$SETTINGSDIR\demoedit.aac"
+ Delete "$SETTINGSDIR\auth.ini"
+ Delete "$SETTINGSDIR\jsapisec.ini"
+ Delete "$SETTINGSDIR\links.xml"
+ Delete "$SETTINGSDIR\jscfg.ini"
+ Delete "$SETTINGSDIR\Plugins\plugin.ini"
+ Delete "$SETTINGSDIR\Plugins\in_mp4.ini"
+ Delete "$SETTINGSDIR\Plugins\feedback.ini"
+ Delete "$SETTINGSDIR\Plugins\vis_avs.dat"
+ Delete "$SETTINGSDIR\Plugins\cddiscs.*"
+ Delete "$SETTINGSDIR\Plugins\cdtracks.*"
+ Delete "$SETTINGSDIR\Plugins\mudqueue.*"
+ Delete "$SETTINGSDIR\Plugins\podcasts.*"
+ Delete "$SETTINGSDIR\Plugins\gen_ml.ini"
+ Delete "$SETTINGSDIR\Plugins\gen_mud.ini"
+ Delete "$SETTINGSDIR\Plugins\milk_config.ini"
+ Delete "$SETTINGSDIR\Plugins\milk_img.ini"
+ Delete "$SETTINGSDIR\Plugins\milk_msg.ini"
+ Delete "$SETTINGSDIR\Plugins\milk2.ini"
+ Delete "$SETTINGSDIR\Plugins\milk2_img.ini"
+ Delete "$SETTINGSDIR\Plugins\milk2_msg.ini"
+ Delete "$SETTINGSDIR\Plugins\milk2_adapters.txt"
+ Delete "$SETTINGSDIR\Plugins\Milkdrop2\milk2.ini"
+ Delete "$SETTINGSDIR\Plugins\Milkdrop2\milk2_img.ini"
+ Delete "$SETTINGSDIR\Plugins\Milkdrop2\milk2_msg.ini"
+ Delete "$SETTINGSDIR\Plugins\Milkdrop2\milk2_adapters.txt"
+ Delete "$SETTINGSDIR\Plugins\ml_transcode.ini"
+ Delete "$SETTINGSDIR\Plugins\Gracenote\*.db"
+ Delete "$SETTINGSDIR\Plugins\Gracenote\cddbplm.*"
+ Delete "$SETTINGSDIR\Plugins\loginBox\login*.*"
+ Delete "$SETTINGSDIR\Plugins\omBrowser\*.ini"
+ Delete "$SETTINGSDIR\Plugins\dropbox\*.ini"
+ Delete "$SETTINGSDIR\Plugins\ml\omServices\*.ini"
+ Delete "$SETTINGSDIR\Plugins\ml\cache\*.*"
+ Delete "$SETTINGSDIR\Plugins\ml\*.vmd"
+ Delete "$SETTINGSDIR\Plugins\ml\views\*.vmd"
+ Delete "$SETTINGSDIR\Plugins\ml\*.ini"
+ ;Delete "$SETTINGSDIR\Plugins\ml\*.m3u*" ; maybe don't delete playlists just yet, though the RMDir /r command later probably does this anyway...
+ ;Delete "$SETTINGSDIR\Plugins\ml\playlists\*.m3u*" ; maybe don't delete playlists just yet, though the RMDir /r command later probably does this anyway...
+ Delete "$SETTINGSDIR\Plugins\ml\*.dat"
+ Delete "$SETTINGSDIR\Plugins\ml\*.idx"
+ Delete "$SETTINGSDIR\Plugins\ml\art\*.dat"
+ Delete "$SETTINGSDIR\Plugins\ml\art\*.idx"
+ Delete "$SETTINGSDIR\Plugins\ml\art\*.dat.*"
+ Delete "$SETTINGSDIR\Plugins\ml\art\*.idx.*"
+ Delete "$SETTINGSDIR\Plugins\ml\*.xml"
+ Delete "$SETTINGSDIR\Plugins\ml\*.backup"
+ Delete "$SETTINGSDIR\Plugins\ml\feeds\*.xml"
+ Delete "$SETTINGSDIR\Plugins\ml\feeds\*.backup"
+ Delete "$SETTINGSDIR\Plugins\ml\main.dat.*"
+ Delete "$SETTINGSDIR\Plugins\ml\art.dat.*"
+ Delete "$SETTINGSDIR\Plugins\ml\main.idx.*"
+ Delete "$SETTINGSDIR\Plugins\ml\art.idx.*"
+ Delete "$SETTINGSDIR\Plugins\ml\playlists\*.xml"
+ Delete "$SETTINGSDIR\Cloud\*.db"
+ Delete "$SETTINGSDIR\Cloud\views\*.ini"
+ Delete "$SETTINGSDIR\Cloud\logs\*.*"
+ RMDir /r "$SETTINGSDIR\Plugins\omBrowser\cache"
+ RMDir /r "$SETTINGSDIR\Plugins\omBrowser"
+ RMDir /r "$SETTINGSDIR\Plugins\Gracenote"
+ RMDir /r "$SETTINGSDIR\Plugins\Milkdrop2"
+ RMDir /r "$SETTINGSDIR\Plugins\ml\playlists"
+ RMDir /r "$SETTINGSDIR\Plugins\ml\views"
+ RMDir /r "$SETTINGSDIR\Plugins\ml\feeds"
+ RMDir /r "$SETTINGSDIR\Plugins\ml\art"
+ RMDir /r "$SETTINGSDIR\Plugins\ml\cache"
+ RMDir /r "$SETTINGSDIR\Plugins\ml\omServices"
+ RMDir /r "$SETTINGSDIR\Plugins\ml"
+ RMDir /r "$SETTINGSDIR\Cloud\views"
+ RMDir /r "$SETTINGSDIR\Cloud\logs"
+ RMDir /r "$SETTINGSDIR\Cloud"
+ RMDir /r "$SETTINGSDIR"
+SectionEnd
+!endif ; NULLSOFT_WINAMP_UNINSTALLER_USERDATA_HEADER \ No newline at end of file