aboutsummaryrefslogtreecommitdiff
path: root/Src/installer/winamp/sections/winamp.nsh
diff options
context:
space:
mode:
Diffstat (limited to 'Src/installer/winamp/sections/winamp.nsh')
-rw-r--r--Src/installer/winamp/sections/winamp.nsh510
1 files changed, 510 insertions, 0 deletions
diff --git a/Src/installer/winamp/sections/winamp.nsh b/Src/installer/winamp/sections/winamp.nsh
new file mode 100644
index 00000000..266742ce
--- /dev/null
+++ b/Src/installer/winamp/sections/winamp.nsh
@@ -0,0 +1,510 @@
+!macro DllUnregisterAndDelete __dllPath
+ ${If} ${FileExists} "${__dllPath}"
+ UnRegdll "${__dllPath}"
+ Delete /REBOOTOK "${__dllPath}"
+ ${EndIf}
+!macroend
+
+!define DllUnregisterAndDelete "!insertmacro 'DllUnregisterAndDelete'"
+
+${WinampSection} "winampApplication" $(secWinamp) IDX_SEC_WINAMP ; <<< [Winamp]
+ SectionIn 1 2 3 4 5 6 7 8 RO
+
+ DetailPrint "$(IDS_CLEANUP_PLUGINS)"
+ SetDetailsPrint none
+
+ ; cleanup old shit
+ UnRegDLL "$INSTDIR\Plugins\in_asfs.dll"
+ Delete /REBOOTOK "$INSTDIR\Plugins\in_asfs.dll"
+
+ ; Gracenote doesn't need installing, remove any existing files
+ ${DllUnregisterAndDelete} "$INSTDIR\Plugins\cddbcontrolwinamp.dll"
+ ${DllUnregisterAndDelete} "$INSTDIR\Plugins\cddbuiwinamp.dll"
+ ${DllUnregisterAndDelete} "$INSTDIR\Plugins\Gracenote\cddbuiwinamp.dll"
+ ${DllUnregisterAndDelete} "$INSTDIR\Plugins\Gracenote\CddbMusicIDWinamp.dll"
+ ${DllUnregisterAndDelete} "$INSTDIR\Plugins\Gracenote\CddbPlaylist2Winamp.dll"
+ ${DllUnregisterAndDelete} "$INSTDIR\Plugins\Gracenote\cddbcontrolwinamp.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\Cddbx*.dll"
+ Delete "$INSTDIR\System\gracenote.w5s"
+ Delete "$INSTDIR\System\gracenote.wbm"
+ RMDir "$INSTDIR\Plugins\Gracenote"
+ ; Gracenote end
+
+ ; Remove old VS2008 runtime on Win8.1 and higher
+ ${if} ${IsWin7}
+ goto skipthis1
+ ${Else}
+ Delete "$INSTDIR\Microsoft.VC90.CRT\msvcr90.dll"
+ Delete "$INSTDIR\Microsoft.VC90.CRT\msvcp90.dll"
+ Delete "$INSTDIR\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest"
+ RMDir /r "$INSTDIR\Microsoft.VC90.CRT"
+ skipthis1:
+ ${EndIf}
+
+ Delete "$INSTDIR\System\vp8x.w5s"
+ Delete "$INSTDIR\System\vp8x.wbm"
+ Delete "$INSTDIR\System\a52.w5s"
+ Delete "$INSTDIR\System\a52.wbm"
+ Delete "$INSTDIR\System\dca.w5s"
+ Delete "$INSTDIR\System\dca.wbm"
+
+ Delete "$INSTDIR\Plugins\ml_orb.dll"
+ Delete "$INSTDIR\Plugins\gen_dropbox.dll"
+
+ Delete "$INSTDIR\System\watcher.w5s" ; watcher is unused now that Music Now is gone
+ Delete "$INSTDIR\System\watcher.wbm"
+ Delete "$INSTDIR\System\db.w5s"
+ Delete "$INSTDIR\System\db.wbm"
+ Delete "$INSTDIR\Plugins\gen_ff.dll"
+ Delete "$INSTDIR\Plugins\Freeform\wacs\freetype\freetype.wac"
+ Delete "$INSTDIR\System\timer.w5s"
+ Delete "$INSTDIR\System\UnicodeTaskbarFix.w5s"
+ Delete "$INSTDIR\System\timer.wbm"
+ Delete "$INSTDIR\System\UnicodeTaskbarFix.wbm"
+ Delete "$INSTDIR\System\filereader.w5s"
+ Delete "$INSTDIR\System\filereader.wbm"
+ Delete "$INSTDIR\System\jnetlib.w5s"
+ Delete "$INSTDIR\System\jnetlib.wbm"
+ Delete "$INSTDIR\System\aacPlusDecoder.w5s"
+ Delete "$INSTDIR\System\aacPlusDecoder.wbm"
+ Delete "$INSTDIR\System\aacdec.w5s"
+ Delete "$INSTDIR\System\aacdec.wbm"
+ Delete "$INSTDIR\System\adpcm.w5s"
+ Delete "$INSTDIR\System\adpcm.wbm"
+ Delete "$INSTDIR\System\pcm.w5s"
+ Delete "$INSTDIR\System\pcm.wbm"
+ Delete "$INSTDIR\System\mp3.w5s"
+ Delete "$INSTDIR\System\mp3.wbm"
+ Delete "$INSTDIR\System\alac.w5s"
+ Delete "$INSTDIR\System\alac.wbm"
+ Delete "$INSTDIR\System\theora.w5s"
+ Delete "$INSTDIR\System\theora.wbm"
+ Delete "$INSTDIR\System\f263.w5s"
+ Delete "$INSTDIR\System\f263.wbm"
+ Delete "$INSTDIR\System\vlb.w5s"
+ Delete "$INSTDIR\System\vlb.wbm"
+ Delete "$INSTDIR\System\mp4v.w5s"
+ Delete "$INSTDIR\System\mp4v.wbm"
+ Delete "$INSTDIR\System\vp6.w5s"
+ Delete "$INSTDIR\System\vp6.wbm"
+ Delete "$INSTDIR\System\vp8.w5s"
+ Delete "$INSTDIR\System\vp8.wbm"
+ Delete "$INSTDIR\System\h264.w5s"
+ Delete "$INSTDIR\System\h264.wbm"
+ Delete "$INSTDIR\System\dlmgr.w5s"
+ Delete "$INSTDIR\System\dlmgr.wbm"
+ Delete "$INSTDIR\System\ClassicPro.wbm"
+ Delete "$INSTDIR\System\wac_network.w5s"
+ Delete "$INSTDIR\System\wac_downloadManager.w5s"
+ Delete "$INSTDIR\Plugins\gen_ml.dll" ; make sure gen_ff and gen_ml are not kept if unchecked
+
+ ; delete ML plug-ins so that unselecting them does not keep the old versions around
+ Delete "$INSTDIR\Plugins\ml_xpdxs.dll"
+ Delete "$INSTDIR\Plugins\ml_local.dll"
+ Delete "$INSTDIR\Plugins\ml_playlists.dll"
+ Delete "$INSTDIR\Plugins\ml_disc.dll"
+ Delete "$INSTDIR\Plugins\ml_bookmarks.dll"
+ Delete "$INSTDIR\Plugins\ml_history.dll"
+ Delete "$INSTDIR\Plugins\ml_impex.dll"
+ Delete "$INSTDIR\Plugins\ml_nowplaying.dll"
+ Delete "$INSTDIR\Plugins\ml_rg.dll"
+ Delete "$INSTDIR\Plugins\ml_plg.dll"
+ Delete "$INSTDIR\Plugins\ml_online.dll"
+ Delete "$INSTDIR\Plugins\ml_dash.dll"
+ Delete "$INSTDIR\Plugins\ml_wire.dll"
+ Delete "$INSTDIR\Plugins\ml_transcode.dll"
+ Delete "$INSTDIR\Plugins\ml_autotag.dll"
+ Delete "$INSTDIR\Plugins\ml_addons.dll"
+ Delete "$INSTDIR\Plugins\ml_downloads.dll"
+ Delete "$INSTDIR\Plugins\ml_cloud.dll"
+ Delete "$INSTDIR\Plugins\ml_nft.dll"
+ Delete "$INSTDIR\Plugins\ml_fanzone.dll"
+ Delete "$INSTDIR\Plugins\ml_hotmixradio.dll"
+ Delete "$INSTDIR\Plugins\gen_orgler.dll"
+ Delete "$INSTDIR\System\auth.w5s"
+ Delete "$INSTDIR\System\wasabi2.w5s"
+ Delete "$INSTDIR\Components\cloud.w6c"
+ Delete "$INSTDIR\Components\ssdp.w6c"
+ Delete "$INSTDIR\Components\web.w6c"
+
+ Delete "$INSTDIR\Plugins\ml_pmp.dll"
+ Delete "$INSTDIR\Plugins\ml_devices.dll"
+ Delete "$INSTDIR\Plugins\pmp_p4s.dll"
+ Delete "$INSTDIR\Plugins\pmp_ipod.dll"
+ Delete "$INSTDIR\Plugins\pmp_wifi.dll"
+ Delete "$INSTDIR\Plugins\pmp_njb.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\System\devices.w5s"
+ Delete "$INSTDIR\System\devices.wbm"
+
+ Delete "$INSTDIR\Plugins\gen_b4s2m3u.dll"
+ Delete "$INSTDIR\pxsdkpls.dll"
+ Delete "$INSTDIR\primosdk.dll"
+ Delete "$INSTDIR\burnlib.dll"
+ Delete "$INSTDIR\System\primo.w5s"
+ Delete "$INSTDIR\pconfig.dcf"
+ Delete "$INSTDIR\demoedit.aac"
+
+ Delete "$INSTDIR\jnetlib.dll"
+ Delete "$INSTDIR\libFLAC.dll"
+ Delete "$INSTDIR\libmp4v2.dll"
+ Delete "$INSTDIR\Shared\libmpg123.dll"
+ Delete "$INSTDIR\libsndfile.dll"
+ Delete "$INSTDIR\nde.dll"
+ Delete "$INSTDIR\nsutil.dll"
+ Delete "$INSTDIR\nxlite.dll"
+ Delete "$INSTDIR\Plugins\ReplayGainAnalysis.dll"
+ Delete "$INSTDIR\tataki.dll"
+ Delete "$INSTDIR\Plugins\tataki.dll"
+ Delete "$INSTDIR\zlib.dll"
+
+ Delete "$INSTDIR\Shared\jnetlib.dll"
+ Delete "$INSTDIR\Shared\libFLAC.dll"
+ Delete "$INSTDIR\Shared\libalac.dll"
+ Delete "$INSTDIR\Shared\libFLAC_dynamic.dll"
+ Delete "$INSTDIR\Shared\libmp4v2.dll"
+ Delete "$INSTDIR\Shared\libsndfile.dll"
+ Delete "$INSTDIR\Shared\nde.dll"
+ Delete "$INSTDIR\Shared\nsutil.dll"
+ Delete "$INSTDIR\Shared\nxlite.dll"
+ Delete "$INSTDIR\Shared\ReplayGainAnalysis.dll"
+ Delete "$INSTDIR\Shared\tataki.dll"
+ Delete "$INSTDIR\Shared\zlib.dll"
+ Delete "$INSTDIR\Shared\read_file.dll"
+
+ Delete "$INSTDIR\Winamp.exe.manifest"
+ Delete "$SETTINGSDIR\winamp.pic" ; deprecated plug-in cache file
+
+ ; delete the Qt5 engine files
+ 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"
+
+ ; delete the Cloud settings and associated folders
+ ; will leave playlists behind incase people made
+ ; cloud ones or used the restore on loss feature
+ RMDir /r "$SETTINGSDIR\Cloud\views"
+ RMDir "$SETTINGSDIR\Cloud\playlists"
+ RMDir /r "$SETTINGSDIR\Cloud\logs"
+ Delete "$SETTINGSDIR\Cloud\*.db"
+ Delete "$SETTINGSDIR\Cloud\*.db-shm"
+ Delete "$SETTINGSDIR\Cloud\*.db-wal"
+ RMDir "$SETTINGSDIR\Cloud" ; if there's still something left then leave e.g. playlists
+
+ ; delete any other plug-ins so that unselecting them does not keep the old versions around
+ Delete "$INSTDIR\Plugins\gen_crasher.dll"
+ Delete "$INSTDIR\Plugins\gen_tray.dll"
+ Delete "$INSTDIR\Plugins\gen_hotkeys.dll"
+ Delete "$INSTDIR\Plugins\in_wm.dll"
+ Delete "$INSTDIR\Plugins\in_mp4.dll"
+ Delete "$INSTDIR\Plugins\in_cdda.dll"
+ Delete "$INSTDIR\Plugins\in_midi.dll"
+ Delete "$INSTDIR\Plugins\in_mod.dll"
+ Delete "$INSTDIR\Plugins\read_file.dll"
+ Delete "$INSTDIR\Plugins\in_vorbis.dll"
+ Delete "$INSTDIR\Plugins\in_flac.dll"
+ Delete "$INSTDIR\Plugins\in_wave.dll"
+ Delete "$INSTDIR\Plugins\in_nsv.dll"
+ Delete "$INSTDIR\Plugins\in_flv.dll"
+ Delete "$INSTDIR\Plugins\in_swf.dll"
+ Delete "$INSTDIR\Plugins\in_dshow.dll"
+ Delete "$INSTDIR\Plugins\in_avi.dll"
+ Delete "$INSTDIR\Plugins\in_mkv.dll"
+ Delete "$INSTDIR\Plugins\in_linein.dll"
+ Delete "$INSTDIR\Plugins\enc_lame.dll"
+ Delete "$INSTDIR\Plugins\enc_wma.dll"
+ Delete "$INSTDIR\Plugins\enc_wav.dll"
+ Delete "$INSTDIR\Plugins\enc_flac.dll"
+ Delete "$INSTDIR\Plugins\enc_vorbis.dll"
+ Delete "$INSTDIR\Plugins\enc_aacplus.dll"
+ Delete "$INSTDIR\Plugins\out_wave.dll"
+ Delete "$INSTDIR\Plugins\out_disk.dll"
+ Delete "$INSTDIR\Plugins\vis_nsfs.dll"
+ Delete "$INSTDIR\Plugins\vis_avs.dll"
+ Delete "$INSTDIR\Plugins\vis_milk2.dll"
+ Delete "$INSTDIR\Plugins\dsp_sps.dll"
+ Delete "$INSTDIR\Plugins\nsvdec_vp3.dll"
+ Delete "$INSTDIR\Plugins\nsvdec_vp5.dll"
+ Delete "$INSTDIR\System\ombrowser.w5s"
+ Delete "$INSTDIR\System\ombrowser.wbm"
+ ; Delete "$INSTDIR\Plugins\gen_jumpex.dll" ; delete JTFE as no longer supported (not)
+
+ ; 5.8: keep enc_fhgaac.dll & lame_enc.dll (if present on upgrades) | 5.9: delete lame_enc.dll only
+ ; Delete "$INSTDIR\Plugins\enc_fhgaac.dll"
+ Delete "$INSTDIR\Plugins\lame_enc.dll"
+
+ ; Delete DrO's ml_enqplay plugin because it crashes Winamp 5.9
+ Delete "$INSTDIR\Plugins\ml_enqplay.dll"
+
+ ; Delete DrO's gen_ipc_stopplaying_blocker.dll which was a workaround for 5.57x only
+ Delete "$INSTDIR\Plugins\gen_ipc_stopplaying_blocker.dll"
+
+ ; Delete DrO's gen_find_on_disk.dll which is now fully integrated into Winamp in 5.64
+ ; The plug-ins core had been present as api_explorerfindfile.h for a while, just not
+ ; done fully as a native menu item and global hotkey (does preseve any prior hotkey)
+ Delete "$INSTDIR\Plugins\gen_find_on_disk.dll"
+
+ ; Delete DrO's gen_nunzio.dll as now replaced by koopa's info tool
+ Delete "$INSTDIR\Plugins\gen_nunzio.dll"
+
+ ; Delete DrO's gen_cd_menu.dll which is now fully integrated into Winamp in 5.64
+ ; The functionality was in winamp agent (showing cd drive volume name in menus)
+ Delete "$INSTDIR\Plugins\gen_cd_menu.dll"
+
+ ; Delete DrO's gen_wolfgang.dll which is now fully integrated into gen_hotkeys in 5.64
+ Delete "$INSTDIR\Plugins\gen_wolfgang.dll"
+
+ ; Delete DrO's gen_os_diag.dll which is now partially integrated (saving main dialog positions) in 5.64
+ ; and is causing issues with the Alt+3 dialog and the combobox so better safe than sorry, it now dies.
+ Delete "$INSTDIR\Plugins\gen_os_diag.dll"
+
+ ; Delete DrO's gen_mwblock.dll which is now fully integrated into Winamp in 5.66
+ Delete "$INSTDIR\Plugins\gen_mwblock.dll"
+
+ ; Delete Joonas' old mass tagger plugin, as is now natively implemented in 5.66 pledit
+ Delete "$INSTDIR\Plugins\gen_tagger.dll"
+
+ ; Delete Thinktink's bpembededart plugin (uncomment these lines if dro's embed albumart feature is reimplemeted)
+ ; Delete "$INSTDIR\Plugins\gen_bpembededart.dll"
+ ; Delete "$INSTDIR\System\bpembededart.w5s"
+ ; Delete "$SETTINGSDIR\Plugins\BPEmbededArt.ini"
+
+ ; Disable buggy 3rd-party gen_msn7 plugin (causes v5.57+ to crash on load)
+ ${If} ${FileExists} "$INSTDIR\Plugins\gen_msn7.dll"
+ MessageBox MB_OK "$(IDS_MSN7_PLUGIN_DISABLE)" /SD IDOK
+ Rename "$INSTDIR\Plugins\gen_msn7.dll" "$INSTDIR\Plugins\gen_msn7.dll.off"
+ ${EndIf}
+
+ ; Warn about 3rd-party gen_lyrics plugin (old version causes v5.59+ to crash on load)
+ ${If} ${FileExists} "$INSTDIR\Plugins\gen_lyrics.dll"
+ MessageBox MB_OK "$(IDS_LYRICS_PLUGIN_WARNING)" /SD IDOK
+ ; Rename "$INSTDIR\Plugins\gen_lyrics.dll" "$INSTDIR\Plugins\gen_lyrics.dll.off"
+ ${EndIf}
+
+ ; Disable 3rd-party gen_lyrics_ie plugin (causes Winamp to crash)
+ ${If} ${FileExists} "$INSTDIR\Plugins\gen_lyrics_ie.dll"
+ MessageBox MB_OK "$(IDS_LYRICS_IE_PLUGIN_DISABLE)" /SD IDOK
+ Rename "$INSTDIR\Plugins\gen_lyrics_ie.dll" "$INSTDIR\Plugins\gen_lyrics_ie.off"
+ ${EndIf}
+
+ DeleteINIStr "$WINAMPINI" "Winamp" "mbdefloc"
+ SetDetailsPrint lastused
+
+;------------------------------------------------------------------------------------
+;install section
+
+; VC142 runtime required for Win7 & 8 installations - pt.2: embedded
+; Do we need this any more? Let's leave it for now, but look at removing it later (for 5.9.1)...
+!ifndef WINAMP64
+ ${If} ${AtLeastWin7}
+ ${AndIf} ${AtMostWin8.1}
+ SetOutPath "$INSTDIR\Microsoft.VC142.CRT"
+ File "${FILES_PATH}\resources\libraries\msvcp140.dll"
+ File "${FILES_PATH}\resources\libraries\vcruntime140.dll"
+ File "${FILES_PATH}\resources\libraries\msvcp140_1.dll"
+ File "${FILES_PATH}\resources\libraries\msvcp140_2.dll"
+ File "${FILES_PATH}\resources\libraries\msvcp140_atomic_wait.dll"
+ File "${FILES_PATH}\resources\libraries\msvcp140_codecvt_ids.dll"
+ File "${FILES_PATH}\resources\libraries\vccorlib140.dll"
+ File "${FILES_PATH}\resources\libraries\concrt140.dll"
+ ${EndIf}
+!endif
+
+; VC90 runtime section (for Win7 only)
+!ifndef WINAMP64
+ ${If} ${IsWin7}
+ ${AndIfNot} ${FileExists} "$INSTDIR\Microsoft.VC90.CRT\msvcr90.dll"
+ SetOutPath "$INSTDIR\Microsoft.VC90.CRT"
+ File "${FILES_PATH}\resources\libraries\msvcr90.dll"
+ File "${FILES_PATH}\resources\libraries\msvcp90.dll"
+ File "${FILES_PATH}\resources\libraries\Microsoft.VC90.CRT.manifest"
+ ${EndIf}
+ SetOutPath "$INSTDIR"
+!endif
+
+ ; TODO alter this to show a message (here or later in install)
+;!ifdef PRO
+; WriteINIStr "$WINAMPINI" "Winamp" "PromptForRegKey" "1"
+;!endif ; PRO
+ SetOutPath "$INSTDIR"
+
+ SetOverwrite off
+ File "/oname=$WINAMPM3U" "..\..\resources\media\winamp.m3u"
+ SetOverwrite ${OVERWRITEMODE}
+
+ File "/oname=${WINAMPEXE}" "${FILES_PATH}\winamp.exe"
+
+ ${If} ${AtLeastWin7}
+ ${If} ${FileExists} "$INSTDIR\elevator.exe"
+ KillProcDLL::KillProc "elevator.exe"
+ Sleep 1000
+ ${EndIf}
+
+ ${If} ${FileExists} "$INSTDIR\elevatorps.dll"
+ UnRegDLL "$INSTDIR\elevatorps.dll"
+ Sleep 1000
+ Delete "$INSTDIR\elevatorps.dll"
+ ${EndIf}
+
+ ${If} ${FileExists} "$INSTDIR\Shared\elevatorps.dll"
+ UnRegDLL "$INSTDIR\Shared\elevatorps.dll"
+ Sleep 1000
+ ${EndIf}
+
+ ExecWait '"$INSTDIR\elevator.exe" /UnregServer'
+ Sleep 1000
+
+ ${If} ${FileExists} "$INSTDIR\elevatorps.dll"
+ UnRegDLL "$INSTDIR\elevatorps.dll"
+ Sleep 1000
+ Delete "$INSTDIR\elevatorps.dll"
+ ${EndIf}
+
+ ${If} ${FileExists} "$INSTDIR\Shared\elevatorps.dll"
+ UnRegDLL "$INSTDIR\Shared\elevatorps.dll"
+ Sleep 1000
+ ${EndIf}
+
+ SetOutPath "$INSTDIR"
+ File ${FILES_PATH}\elevator.exe
+ ExecWait '"$INSTDIR\elevator.exe" /RegServer'
+
+ SetOutPath "$INSTDIR\Shared"
+ File ${FILES_PATH}\Shared\elevatorps.dll
+ RegDll "$INSTDIR\Shared\elevatorps.dll"
+ ${EndIf}
+
+ SetOutPath "$M3UBASEDIR"
+ File "..\..\resources\media\demo.mp3"
+ SetOutPath "$INSTDIR"
+
+ File "/oname=whatsnew.txt" "..\..\resources\data\whatsnew.txt"
+
+ Call GetSkinDir
+ Pop $R0
+ SetOutPath $R0
+
+ DetailPrint "$(IDS_REMOVE_SKINS)"
+ SetDetailsPrint none
+ Delete "$R0\${MODERNSKINNAME}.*"
+ RMDir /r "$R0\${MODERNSKINNAME}"
+
+ RMDir /r "$R0\Winamp Bento"
+ Delete "$R0\Winamp Bento.*"
+
+ RMDir /r "$R0\Bento"
+ RMDir /r "$R0\Big Bento"
+ SetDetailsPrint lastused
+
+ SetOutPath $INSTDIR\Shared
+ File "${FILES_PATH}\Shared\nsutil.dll"
+ File "${FILES_PATH}\Shared\tataki.dll"
+ ; File "${FILES_PATH}\Shared\zlib.dll" ; as from 5.9, zlib is now statically-linked, not a shared dynamic .dll
+
+ SetOutPath "$INSTDIR\System"
+ ; 2022 - determine whether jnetlib.w5s is still required. If not, these 2 lines need disabling:
+ ; File "${FILES_PATH}\System\jnetlib.w5s"
+ ; File /nonfatal "${FILES_PATH}\System\jnetlib.wbm"
+ ; Jul 2022 - jnetlib.w5s is required by ml_wire & ml_downloads,
+ ; so for now, we will only install it with those two plugins (see: grp_walib.nsh)
+
+ File "${FILES_PATH}\System\aacdec.w5s"
+;!ifndef WINAMP64
+; File /nonfatal "${FILES_PATH}\System\aacdec.wbm"
+;!endif
+
+ ; File "${FILES_PATH}\System\dlmgr.w5s"
+ ; File /nonfatal "${FILES_PATH}\System\dlmgr.wbm"
+ File "${FILES_PATH}\System\wac_downloadManager.w5s"
+ File "${FILES_PATH}\System\tagz.w5s"
+ File "${FILES_PATH}\System\albumart.w5s"
+ File "${FILES_PATH}\System\playlist.w5s"
+ File "${FILES_PATH}\System\xspf.w5s"
+ File "${FILES_PATH}\System\xml.w5s"
+ File "${FILES_PATH}\System\jpeg.w5s"
+ File "${FILES_PATH}\System\png.w5s"
+ File "${FILES_PATH}\System\bmp.w5s"
+ File "${FILES_PATH}\System\gif.w5s"
+
+ ; File "..\..\resources\Plugins\UnicodeTaskbarFix.w5s" ; this might need to be disabled...
+
+ ; uncomment these lines if dro's albumart retrieval service is reimplemented
+ ; File "${FILES_PATH}\System\wasabi2.w5s"
+ ; SetOutPath $INSTDIR\Components
+ ; File "${FILES_PATH}\Components\web.w6c"
+
+ SetOutPath "$INSTDIR"
+ File "${FILES_PATH}\fmt.dll"
+
+ Push $0
+ StrCpy $0 "$INSTDIR\${WINAMPEXE}"
+ WriteRegStr HKCR "UVOX" "" "URL: Ultravox Protocol"
+ WriteRegStr HKCR "UVOX" "URL Protocol" ""
+ WriteRegStr HKCR "UVOX\shell\open\command" "" "$0 %1"
+
+ WriteRegStr HKCR "SC" "" "URL: SHOUTcast Protocol"
+ WriteRegStr HKCR "SC" "URL Protocol" ""
+ WriteRegStr HKCR "SC\shell\open\command" "" "$0 %1"
+ WriteRegStr HKCR "ICY" "" "URL: SHOUTcast Protocol"
+ WriteRegStr HKCR "ICY" "URL Protocol" ""
+ WriteRegStr HKCR "ICY\shell\open\command" "" "$0 %1"
+ WriteRegStr HKCR "SHOUT" "" "URL: SHOUTcast Protocol"
+ WriteRegStr HKCR "SHOUT" "URL Protocol" ""
+ WriteRegStr HKCR "SHOUT\shell\open\command" "" "$0 %1"
+ Pop $0
+
+ ; bugfix?
+ ; this might come back due to WinampURIHandler reg code in Winamp\handler.cpp
+ ; which can cause filetypes associated with Winamp to be erroneously registered as "URL:Winamp Command Handler"
+ DeleteRegKey HKCR "winamp"
+
+ ; Enable Firewall
+ DetailPrint "$(IDS_FIREWALL)"
+ Push $0
+ Push $1
+
+ StrCpy $0 "$INSTDIR\${WINAMPEXE}"
+
+ ; TODO possibly add a command-line switch to allow for this part to be skipped over?
+ ; TCP
+ ; try to update existing rule
+ ExecDos::exec /NOUNLOAD /TIMEOUT=5000 'netsh advfirewall firewall set rule name="${WINAMP}" dir=in program="$0" profile=private,public protocol=TCP new action=allow enable=yes' "" ""
+ Pop $1 ;return value
+ ${If} $1 != 0 ; failed
+ ; attempt to add application using advanced method (Vista+)
+ ExecDos::exec /NOUNLOAD /TIMEOUT=5000 'netsh advfirewall firewall add rule name="${WINAMP}" dir=in action=allow program="$0" enable=yes profile=private,public protocol=TCP' "" ""
+ Pop $1
+ ${If} $1 != 0
+ ExecDos::exec /NOUNLOAD /TIMEOUT=2000 'netsh firewall add allowedprogram program="$0" name="${WINAMP}" mode=ENABLE scope=ALL profile=ALL' "" ""
+ ${EndIf}
+ ${EndIf}
+
+ ; UDP
+ ; try to update existing rule
+ ExecDos::exec /NOUNLOAD /TIMEOUT=5000 'netsh advfirewall firewall set rule name="${WINAMP}" dir=in program="$0" profile=private,public protocol=UDP new action=allow enable=yes' "" ""
+ Pop $1 ;return value
+ ${If} $1 != 0 ; failed
+ ; attempt to add application using advanced method (Vista+)
+ ExecDos::exec /NOUNLOAD /TIMEOUT=5000 'netsh advfirewall firewall add rule name="${WINAMP}" dir=in action=allow program="$0" enable=yes profile=private,public protocol=UDP' "" ""
+ ${EndIf}
+
+ Pop $1
+ Pop $0
+ ;SetDetailsPrint lastused
+${WinampSectionEnd} ; <<< [Winamp]