aboutsummaryrefslogtreecommitdiff
path: root/Src/installer/winamp/sections
diff options
context:
space:
mode:
Diffstat (limited to 'Src/installer/winamp/sections')
-rw-r--r--Src/installer/winamp/sections/directX.nsh190
-rw-r--r--Src/installer/winamp/sections/extra.nsh27
-rw-r--r--Src/installer/winamp/sections/frenchRadio.nsh154
-rw-r--r--Src/installer/winamp/sections/grp_mmedia.nsh33
-rw-r--r--Src/installer/winamp/sections/grp_mmedia_decaudio.nsh103
-rw-r--r--Src/installer/winamp/sections/grp_mmedia_decvideo.nsh167
-rw-r--r--Src/installer/winamp/sections/grp_mmedia_encaudio.nsh75
-rw-r--r--Src/installer/winamp/sections/grp_mmedia_output.nsh27
-rw-r--r--Src/installer/winamp/sections/grp_uiext.nsh64
-rw-r--r--Src/installer/winamp/sections/grp_vis.nsh145
-rw-r--r--Src/installer/winamp/sections/grp_walib.nsh198
-rw-r--r--Src/installer/winamp/sections/grp_walib_core.nsh62
-rw-r--r--Src/installer/winamp/sections/grp_walib_pmp.nsh96
-rw-r--r--Src/installer/winamp/sections/languages.nsh75
-rw-r--r--Src/installer/winamp/sections/winamp.nsh510
-rw-r--r--Src/installer/winamp/sections/wmfdist.nsh151
16 files changed, 2077 insertions, 0 deletions
diff --git a/Src/installer/winamp/sections/directX.nsh b/Src/installer/winamp/sections/directX.nsh
new file mode 100644
index 00000000..48c051cb
--- /dev/null
+++ b/Src/installer/winamp/sections/directX.nsh
@@ -0,0 +1,190 @@
+!include "logicLib.nsh"
+
+!define DIRECTXINSTALL_URL_FULL "http://download.nullsoft.com/redist/dx/dxwebsetup.exe"
+!define DIRECTXINSTALL_URL_EMBED "http://download.nullsoft.com/redist/dx/d3dx9_31_42_x86_embed.exe"
+
+!define DIRECTX_MSDOWNLOAD_URL "https://www.microsoft.com/download/details.aspx?id=35"
+;!define DIRECTX_MSDOWNLOAD_URL "https://support.microsoft.com/kb/179113"
+
+!define DIRECTXINSTAL_DIRECTXNAME "Microsoft DirectX®"
+!define DIRECTXINSTAL_WINDOWSNAME "Microsoft Windows®"
+!define DIRECTXINSTAL_WINAMPNAME "Winamp"
+!define DIRECTXINSTAL_WINVER_LO "${DIRECTXINSTAL_WINDOWSNAME} Vista"
+!define DIRECTXINSTAL_WINVER_HI "${DIRECTXINSTAL_WINDOWSNAME} 7"
+!define DIRECTXINSTALL_DIRECTXMINVER "9.0"
+
+!macro DirextXInstall_CheckLibrary __libraryName __outputVar
+ StrCpy ${__outputVar} ""
+
+ Push $0
+ StrCpy $0 ${__libraryName}
+ DetailPrint "$(IDS_DIRECTX_CHECKING_D3DX_COMPONENT)..."
+ Pop $0
+
+ ${If} ${FileExists} "$SYSDIR\${__libraryName}"
+ DetailPrint " $(IDS_DIRECTX_FOUND)."
+ ${Else}
+ DetailPrint " $(IDS_DIRECTX_MISSING)."
+ StrCpy ${__outputVar} "${DIRECTXINSTALL_URL_EMBED}"
+ ${EndIf}
+!macroend
+
+!define DirextXInstall_CheckLibrary "!insertmacro 'DirextXInstall_CheckLibrary'"
+
+!macro DirectXInstall_GetRequiredDownloadUrl __outputVar
+ StrCpy ${__outputVar} ""
+
+ ${If} ${AtMostWin2003}
+ ${OrIf} ${AtMostWinVista}
+ DetailPrint "$(IDS_DIRECTX_DETECTED_WINVER_OR_LOWER)"
+
+ DetailPrint "$(IDS_DIRECTX_CHECKING_DIRECTX_VER)..."
+ DetailPrint " $(IDS_DIRECTX_REQUIRED_DIRECTX_MINVER): ${DIRECTXINSTALL_DIRECTXMINVER}"
+ ; check directX version
+
+ Push $0
+ ClearErrors
+ ReadRegStr $0 HKLM "Software\Microsoft\DirectX" "Version"
+ ${If} $0 == ""
+ DetailPrint " $(IDS_DIRECTX_UNABLE_DETECT_DIRECTX)"
+ StrCpy $0 "0"
+ ${Else}
+ Push $1
+ StrCpy $1 $0 2 5 ; get the minor version
+ StrCpy $0 $0 2 2 ; get the major version
+ IntOp $0 $0 * 100 ; $0 = major * 100 + minor
+ IntOp $0 $0 + $1
+ Pop $1
+ DetailPrint " $(IDS_DIRECTX_DETECTED_DIRECTX_VER): $0"
+ ${EndIf}
+
+ ${If} $0 < 900
+ Pop $0
+ DetailPrint " $(IDS_DIRECTX_UNSUPPORTED_DIRECTX_VER)."
+ StrCpy ${__outputVar} "${DIRECTXINSTALL_URL_FULL}"
+ ${Else}
+ Pop $0
+ ${EndIf}
+ ${Else}
+ DetailPrint "$(IDS_DIRECTX_DETECTED_WINVER_OR_HIGHER)"
+ ${DirextXInstall_CheckLibrary} "d3dx9_42.dll" ${__outputVar}
+ ${EndIF}
+
+ ${If} ${__outputVar} == ""
+ ${DirextXInstall_CheckLibrary} "d3dx9_31.dll" ${__outputVar}
+ ${EndIf}
+!macroend
+
+!define DirectXInstall_GetRequiredDownloadUrl "!insertmacro 'DirectXInstall_GetRequiredDownloadUrl'"
+
+!macro DirectXInstall_CheckConnection __outputVar
+ StrCpy ${__outputVar} ""
+ ClearErrors
+ Dialer::AttemptConnect
+ ${IfNot} ${Errors}
+ nsExec::Exec "ping -n 1 -w 400 www.google.com"
+ Pop ${__outputVar}
+ ${If} ${__outputVar} <> 0
+ nsExec::Exec "ping -n 1 -w 400 www.yahoo.com"
+ Pop ${__outputVar}
+ ${EndIf}
+
+ ${If} ${__outputVar} == 0
+ StrCpy ${__outputVar} "success"
+ ${EndIf}
+ ${EndIf}
+!macroend
+
+!define DirectXInstall_CheckConnection "!insertmacro 'DirectXInstall_CheckConnection'"
+
+!macro DirectXInstall_ShowErrorMessage __installerUrl __messageFull __messageEmbed
+ Push $2
+ ${If} ${__installerUrl} == "${DIRECTXINSTALL_URL_FULL}"
+ StrCpy $2 "${__messageFull}."
+ ${Else}
+ StrCpy $2 "${__messageEmbed}."
+ ${EndIf}
+ StrCpy $2 "$2$\r$\n$\r$\n$(IDS_DIRECTX_LINK_TO_MSDOWNLOAD)$\r$\n${DIRECTX_MSDOWNLOAD_URL}"
+ MessageBox MB_OK|MB_ICONEXCLAMATION $2 /SD IDOK
+ Pop $2
+!macroend
+
+!define DirectXInstall_ShowErrorMessage "!insertmacro 'DirectXInstall_ShowErrorMessage'"
+
+!macro DIRECTXINSTALL_INSERT_SECTION
+!ifdef FULL
+ Section -DirectXInstall IDX_DIRECTX_INSTALL
+
+ ; check if at least one dependent section selected
+ ${IfNot} ${SectionIsSelected} ${IDX_GRP_MMEDIA_VIDEO_DEC}
+ ${AndIfNot} ${SectionIsPartiallySelected} ${IDX_GRP_MMEDIA_VIDEO_DEC}
+ ${AndIfNot} ${SectionIsSelected} ${IDX_SEC_MILKDROP2}
+ Goto DirectXInstall_SectionEnd
+ ${EndIf}
+
+ ; get url to download or empty string if download not required
+ ${DirectXInstall_GetRequiredDownloadUrl} $0
+ ${If} $0 == ""
+ Goto DirectXInstall_SectionEnd
+ ${EndIf}
+
+ ; check internet connection
+ DetailPrint "$(IDS_DIRECTX_DOWNLOAD_REQUIRED)"
+ DetailPrint "$(IDS_DIRECTX_CHECKING_INTERNET)..."
+ ${DirectXInstall_CheckConnection} $1
+ ${If} $1 == "success"
+ DetailPrint " $(IDS_DIRECTX_SUCCESS)."
+ ${Else}
+ DetailPrint " $(IDS_DIRECTX_FAILED)."
+ ${DirectXInstall_ShowErrorMessage} "$0" "$(IDS_DIRECTX_FULL_CONNECT_FAILED)""$(IDS_DIRECTX_EMBED_CONNECT_FAILED)"
+ Goto DirectXInstall_SectionEnd
+ ${EndIf}
+
+ ; download installer
+
+ DetailPrint "$(IDS_DIRECTX_DOWNLOADING_SETUP)..."
+ NSISdl::download /TRANSLATE2 "$(IDS_DIRECTX_DOWNLOADING_SETUP)..." "$(IDS_CONNECTING)" "$(IDS_SECOND)" "$(IDS_MINUTE)" "$(IDS_HOUR)" "$(IDS_SECONDS)" "$(IDS_MINUTES)" "$(IDS_HOURS)" "$(IDS_PROGRESS)" /TIMEOUT=30000 "$0" "$PLUGINSDIR\wadxsetup.exe"
+ Pop $1
+ ${If} $1 != "success"
+ ${If} $1 == "cancel"
+ DetailPrint " $(IDS_DIRECTX_ABORTED)."
+ ${Else}
+ DetailPrint " $(IDS_DIRECTX_FAILED)."
+ ${EndIf}
+ ${DirectXInstall_ShowErrorMessage} "$0" "$(IDS_DIRECTX_FULL_DOWNLOAD_FAILED)""$(IDS_DIRECTX_EMBED_DOWNLOAD_FAILED)"
+ Goto DirectXInstall_SectionEnd
+ ${Else}
+ DetailPrint " $(IDS_DIRECTX_DONE)."
+ ${EndIf}
+
+ ; run setup
+ DetailPrint "$(IDS_DIRECTX_RUNNING_SETUP)..."
+ ClearErrors
+ ${If} $0 == "${DIRECTXINSTALL_URL_FULL}"
+ StrCpy $2 "$(IDS_DIRECTX_FULL_INSTALL_APPROVAL)"
+ ${IfNot} ${Cmd} 'MessageBox MB_YESNO|MB_ICONEXCLAMATION $2 /SD IDYES IDYES'
+ DetailPrint " $(IDS_DIRECTX_ABORTED)."
+ Goto DirectXInstall_SectionEnd
+ ${EndIf}
+ Exec '$PLUGINSDIR\wadxsetup.exe'
+ ${If} ${Errors}
+ StrCpy $1 "-9"
+ ${EndIf}
+ ${Else}
+ ExecWait "$PLUGINSDIR\wadxsetup.exe" $1
+ ${If} $1 != 0
+ SetErrors
+ ${EndIf}
+ ${EndIf}
+
+ ${If} ${Errors}
+ DetailPrint " $(IDS_DIRECTX_FAILED)."
+ ${DirectXInstall_ShowErrorMessage} "$0" "$(IDS_DIRECTX_FULL_INSTALL_FAILED)""$(IDS_DIRECTX_EMBED_INSTALL_FAILED)"
+ ${EndIf}
+
+ DirectXInstall_SectionEnd:
+ SectionEnd
+!endif
+!macroend
+
+!define DIRECTXINSTALL_INSERT_SECTION "!insertmacro 'DIRECTXINSTALL_INSERT_SECTION'" \ No newline at end of file
diff --git a/Src/installer/winamp/sections/extra.nsh b/Src/installer/winamp/sections/extra.nsh
new file mode 100644
index 00000000..4884ed8d
--- /dev/null
+++ b/Src/installer/winamp/sections/extra.nsh
@@ -0,0 +1,27 @@
+Section -HiddenExtra
+ Call WMF_NeedDownload
+ Pop $0
+ ${If} $0 == "0" #nobody needs downlod - skip section
+ goto download_end
+ ${EndIf}
+
+ DetailPrint $(IDS_RUN_CHECK_IFCONNECTED)
+ Call ConnectInternet
+ Pop $0
+ ${If} $0 == "online"
+ DetailPrint $(IDS_RUN_CHECK_IFINETAVAILABLE)
+ Call IsInternetAvailable
+ Pop $0
+ ${EndIf}
+
+ ${If} $0 != "online"
+ DetailPrint $(IDS_RUN_NOINET)
+ goto download_end
+ ${EndIf}
+
+ Call WMF_Download
+
+download_end:
+ Call WMF_Install
+
+SectionEnd \ No newline at end of file
diff --git a/Src/installer/winamp/sections/frenchRadio.nsh b/Src/installer/winamp/sections/frenchRadio.nsh
new file mode 100644
index 00000000..4caddef9
--- /dev/null
+++ b/Src/installer/winamp/sections/frenchRadio.nsh
@@ -0,0 +1,154 @@
+!ifndef NULLSOFT_WINAMP_INSALLER_FRENCHRADIO_HEADER
+!define NULLSOFT_WINAMP_INSALLER_FRENCHRADIO_HEADER
+
+!define FRENCHRADIO_PLUGIN_ENABLED
+
+!ifdef FRENCHRADIO_PLUGIN_ENABLED
+!ifdef "LANG_USE_FR-FR" | "LANG_USE_FR-FR-CMTY" ;"LANG_USE_ALL"
+!ifdef FULL
+
+ !define FRENCHRADIO_PLUGIN
+
+ !macro FrenchRadio_OnInit
+ SectionSetSize ${IDX_SEC_GEN_FRENCHRADIO_DEPENDENCIES} 0
+ !macroend
+ !define FrenchRadio_OnInit "!insertmacro 'FrenchRadio_OnInit'"
+
+ !macro FrenchRadio_InsertInstallSections
+
+ !define FRENCH_RADIO_SOURCE_BASE "..\..\resources\plugins\French Radio"
+
+ !ifndef FRENCH_RADIO_SOURCE
+ !define FRENCH_RADIO_SOURCE ""
+ !endif
+
+ Section "-FrenchRadioDependencies" IDX_SEC_GEN_FRENCHRADIO_DEPENDENCIES
+ DetailPrint "$(IDS_FRENCHRADIO_INSTALLING)"
+ SetDetailsPrint none
+
+ Call FrenchRadio_IsSectionSelected
+ Exch $0
+
+ ${if} $0 != ""
+ SetOutPath "$INSTDIR\Microsoft.VC90.CRT"
+ File ..\..\resources\libraries\msvcr90.dll
+ File ..\..\resources\libraries\msvcp90.dll
+ File ..\..\resources\libraries\Microsoft.VC90.CRT.manifest
+ SetOutPath "$INSTDIR\Plugins\Microsoft.VC90.ATL"
+ File ..\..\resources\libraries\atl90.dll
+ File ..\..\resources\libraries\Microsoft.VC90.ATL.manifest
+ SetOutPath "$INSTDIR"
+ ${Endif}
+ Pop $0
+ SetDetailsPrint lastused
+ SectionEnd
+
+ ${WinampSection} "FrenchRadio" $(IDS_SEC_GEN_FRENCHRADIO) IDX_SEC_GEN_FRENCHRADIO ; >>> [French Radio plugin]
+
+ ${SECTIONIN_FULL}
+ DetailPrint "$(IDS_FRENCHRADIO_INSTALLING)"
+ SetDetailsPrint none
+
+ SetOverwrite try
+
+ ;artwork
+ SetOutPath "$INSTDIR\Plugins\Todae\LMPwa\img"
+ !undef FRENCH_RADIO_SOURCE
+ !define FRENCH_RADIO_SOURCE "${FRENCH_RADIO_SOURCE_BASE}\Todae\LMPwa\img"
+ File "${FRENCH_RADIO_SOURCE}\icon_add.png"
+ File "${FRENCH_RADIO_SOURCE}\icon_edit.png"
+ File "${FRENCH_RADIO_SOURCE}\icon_fav.png"
+ File "${FRENCH_RADIO_SOURCE}\icon_fb.png"
+ File "${FRENCH_RADIO_SOURCE}\icon_info.png"
+ File "${FRENCH_RADIO_SOURCE}\icon_thumb.png"
+ File "${FRENCH_RADIO_SOURCE}\play.png"
+ File "${FRENCH_RADIO_SOURCE}\play_on.png"
+ File "${FRENCH_RADIO_SOURCE}\play_on_small.png"
+ File "${FRENCH_RADIO_SOURCE}\star.png"
+ File "${FRENCH_RADIO_SOURCE}\starblack.png"
+ File "${FRENCH_RADIO_SOURCE}\starno.png"
+ File "${FRENCH_RADIO_SOURCE}\starno2.png"
+ File "${FRENCH_RADIO_SOURCE}\starover.png"
+ File "${FRENCH_RADIO_SOURCE}\stop.png"
+ File "${FRENCH_RADIO_SOURCE}\stop_on.png"
+
+ ;languages
+ SetOutPath "$INSTDIR\Plugins\Todae\LMPwa\lang"
+ !undef FRENCH_RADIO_SOURCE
+ !define FRENCH_RADIO_SOURCE "${FRENCH_RADIO_SOURCE_BASE}\Todae\LMPwa\lang"
+ File "${FRENCH_RADIO_SOURCE}\Arabe.ini"
+ File "${FRENCH_RADIO_SOURCE}\Arabe.readme.txt"
+ File "${FRENCH_RADIO_SOURCE}\Deutsch.ini"
+ File "${FRENCH_RADIO_SOURCE}\Deutsch.readme.txt"
+ File "${FRENCH_RADIO_SOURCE}\English.ini"
+ File "${FRENCH_RADIO_SOURCE}\English.readme.txt"
+ File "${FRENCH_RADIO_SOURCE}\Español.ini"
+ File "${FRENCH_RADIO_SOURCE}\Español.readme.txt"
+ File "${FRENCH_RADIO_SOURCE}\Français.ini"
+ File "${FRENCH_RADIO_SOURCE}\Français.readme.txt"
+ File "${FRENCH_RADIO_SOURCE}\Italiano.ini"
+ File "${FRENCH_RADIO_SOURCE}\Italiano.readme.txt"
+
+ ; plugin
+ SetOutPath "$INSTDIR\Plugins"
+ !undef FRENCH_RADIO_SOURCE
+ !define FRENCH_RADIO_SOURCE "${FRENCH_RADIO_SOURCE_BASE}"
+ File "${FRENCH_RADIO_SOURCE}\gen_LMPwa.dll"
+
+ ; user settings
+ SetOutPath "$APPDATA\Todae\LMPwa"
+ !undef FRENCH_RADIO_SOURCE
+ !define FRENCH_RADIO_SOURCE "${FRENCH_RADIO_SOURCE_BASE}\UserData"
+ File "${FRENCH_RADIO_SOURCE}\lmpv3.xml"
+ File "${FRENCH_RADIO_SOURCE}\lmpv3_categories.xml"
+ File "${FRENCH_RADIO_SOURCE}\LMP_config.ini"
+ File "${FRENCH_RADIO_SOURCE}\LMP_default.ini"
+ File "${FRENCH_RADIO_SOURCE}\LMP_default.rtv"
+ File "${FRENCH_RADIO_SOURCE}\LMP_default_tmp.ini"
+
+ SetOutPath "$APPDATA\Todae\LMPwa\256x256"
+ !undef FRENCH_RADIO_SOURCE
+ !define FRENCH_RADIO_SOURCE "${FRENCH_RADIO_SOURCE_BASE}\UserData\256x256"
+ File "${FRENCH_RADIO_SOURCE}\*.png"
+
+ SetOverwrite lastused
+
+ SetDetailsPrint lastused
+ ${WinampSectionEnd} ; <<< [French Radio plugin]
+
+ Function FrenchRadio_IsSectionSelected
+ ${if} ${SectionIsSelected} ${IDX_SEC_GEN_FRENCHRADIO}
+ Push "true"
+ ${Else}
+ Push ""
+ ${EndIf}
+ FunctionEnd
+
+ !undef FRENCH_RADIO_SOURCE
+ !macroend
+ !define FrenchRadio_InsertInstallSections "!insertmacro 'FrenchRadio_InsertInstallSections'"
+
+ !macro FrenchRadio_UninstallPlugin
+ RMDir /r "$INSTDIR\Plugins\Todae"
+ Delete "$INSTDIR\Plugins\Todae\gen_LMPwa.dll"
+ RMDir /r "$APPDATA\Todae"
+ !macroend
+ !define FrenchRadio_UninstallPlugin "!insertmacro 'FrenchRadio_UninstallPlugin'"
+
+ !macro FrenchRadio_UninstallUserData
+ RMDir /r "$APPDATA\Todae"
+ !macroend
+ !define FrenchRadio_UninstallUserData "!insertmacro 'FrenchRadio_UninstallUserData'"
+
+!endif ; FULL
+!endif ;lang scope
+!endif ; FRENCHRADIO_PLUGIN_ENABLED
+
+!ifndef FRENCHRADIO_PLUGIN
+ !define FrenchRadio_OnInit
+ !define FrenchRadio_InsertInstallSections
+ !define FrenchRadio_UninstallPlugin
+ !define FrenchRadio_UninstallUserData
+!endif
+
+!endif ;NULLSOFT_WINAMP_INSALLER_FRENCHRADIO_HEADER \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_mmedia.nsh b/Src/installer/winamp/sections/grp_mmedia.nsh
new file mode 100644
index 00000000..d880da21
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_mmedia.nsh
@@ -0,0 +1,33 @@
+SectionGroup $(IDS_GRP_MMEDIA) IDX_GRP_MMEDIA ; Multimedia Engine
+ !include ".\sections\grp_mmedia_decaudio.nsh"
+ !include ".\sections\grp_mmedia_decvideo.nsh"
+ !include ".\sections\grp_mmedia_encaudio.nsh"
+ !include ".\sections\grp_mmedia_output.nsh"
+
+/* To be replaced by MusicBrainz
+!ifndef WINAMP64
+ ${WinampSection} "cddb" $(secCDDB) IDX_SEC_CDDB ; >>> [CDDB for recognizing CDs]
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_cdda.dll
+ ${WinampSectionEnd} ; <<< [CDDB for recognizing CDs]
+!endif ; WINAMP64
+*/
+
+!ifndef WINAMP64
+!ifdef FULL
+ ${WinampSection} "digitalSignalProcessing" $(secDSP) IDX_SEC_DSP ; >>> [Signal Processor Studio Plug-in]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ ; File "..\..\resources\Plugins\dsp_sps.dll"
+ File ${FILES_PATH}\Plugins\dsp_sps.dll
+ DetailPrint "$(IDS_RUN_EXTRACT) $(IDS_DSP_PRESETS)..." ; Extracting presets...
+ SetDetailsPrint none
+ SetOutPath $INSTDIR\Plugins\DSP_SPS
+ File "..\..\resources\data\dsp_sps\*.sps"
+ SetOutPath $INSTDIR\Plugins
+ SetDetailsPrint lastused
+ ${WinampSectionEnd} ; <<< [Signal Processor Studio Plug-in]
+!endif ; full
+!endif ; WINAMP64
+SectionGroupEnd ; Multimedia Engine \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_mmedia_decaudio.nsh b/Src/installer/winamp/sections/grp_mmedia_decaudio.nsh
new file mode 100644
index 00000000..9ebcfe9a
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_mmedia_decaudio.nsh
@@ -0,0 +1,103 @@
+SectionGroup $(IDS_GRP_MMEDIA_AUDIO_DEC) IDX_GRP_MMEDIA_AUDIO_DEC ; Audio Playback
+ ${WinampSection} "decoderMp3" $(IDS_SEC_MP3_DEC) IDX_SEC_MP3_DEC
+ SectionIn 1 2 3 4 5 6 7 8 RO
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_mp3.dll
+ SetOutPath "$INSTDIR\System"
+ File "${FILES_PATH}\System\mp3.w5s"
+ ; File /nonfatal "${FILES_PATH}\System\mp3.wbm"
+!ifndef WINAMP64
+ File "${FILES_PATH}\System\vlb.w5s"
+; File /nonfatal "${FILES_PATH}\System\vlb.wbm"
+!endif
+ SetOutPath "$INSTDIR\Shared"
+ File "${FILES_PATH}\Shared\jnetlib.dll"
+ ; File "${FILES_PATH}\Shared\libmpg123.dll" ; v5.9 - libmpg123 now statically-linked, not a shared dynamic dll
+
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "${WINAMP}PlayMediaOnArrival" ""
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}PlayMediaOnArrival" "Action" "$(AutoplayHandler)"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}PlayMediaOnArrival" "DefaultIcon" "$INSTDIR\${WINAMPEXE},0"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}PlayMediaOnArrival" "InvokeProgid" "${WINAMP}.File"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}PlayMediaOnArrival" "InvokeVerb" "Play"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}PlayMediaOnArrival" "Provider" "${WINAMP}"
+ ${WinampSectionEnd}
+
+ ${WinampSection} "decoderWma" $(secWMA) IDX_SEC_WMA_DEC
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_wm.dll
+ ${WinampSectionEnd}
+
+!ifndef WINAMP64
+ ${WinampSection} "decoderMidi" $(secMIDI) IDX_SEC_MIDI_DEC
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ Delete $INSTDIR\Plugins\in_dm.dll
+ Delete $INSTDIR\Plugins\in_midi_dm.dll
+ File ${FILES_PATH}\Plugins\in_midi.dll
+ SetOutPath $INSTDIR\Shared
+ ${WinampSectionEnd}
+!endif ;WINAMP64
+
+!ifndef WINAMP64
+ ${WinampSection} "decoderMod" $(secMOD) IDX_SEC_MOD_DEC
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_mod.dll
+ ; SetOutPath "$INSTDIR\Microsoft.VC90.CRT" ; vc9 runtime no longer required
+ ; File ..\..\resources\libraries\msvcp90.dll
+ ${WinampSectionEnd}
+!endif ;WINAMP64
+
+!ifndef WINAMP64
+ ${WinampSection} "decoderOgg" $(secOGGPlay) IDX_SEC_OGG_DEC
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_vorbis.dll
+ ${WinampSectionEnd}
+!endif ; WINAMP64
+
+ ${WinampSection} "decoderMp4" $(secMP4E) IDX_SEC_MP4_DEC
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_mp4.dll
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\libmp4v2.dll
+ SetOutPath $INSTDIR\System
+ File ${FILES_PATH}\System\alac.w5s
+ ;File /nonfatal ${FILES_PATH}\System\alac.wbm
+ ${WinampSectionEnd}
+
+ ${WinampSection} "decoderFlac" $(IDS_SEC_FLAC_DEC) IDX_SEC_FLAC_DEC
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Shared
+ ; File ${FILES_PATH}\Shared\libFLAC_dynamic.dll ; 5.9 - libflac now statically-linked, not a shared dynamic dll
+ File ${FILES_PATH}\Shared\nxlite.dll
+ File ${FILES_PATH}\Shared\jnetlib.dll
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_flac.dll
+ ${WinampSectionEnd}
+
+ ${WinampSection} "decoderCdda" $(secCDDA) IDX_SEC_CDDA_DEC
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\nde.dll
+ File ${FILES_PATH}\Shared\nxlite.dll
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_cdda.dll
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "${WINAMP}PlayMediaOnArrival" ""
+ ${WinampSectionEnd}
+
+ ${WinampSection} "decoderWav" $(secWAV) IDX_SEC_WAV_DEC
+ ${SECTIONIN_LITE}
+ !ifdef old_in_wave_plugin
+ SetOutPath $INSTDIR\Plugins
+ File ..\..\resources\Plugins\in_wave.dll
+ !else
+ ; SetOutPath $INSTDIR\Shared
+ ; File ${FILES_PATH}\Shared\libsndfile.dll ; 5.9 - libsndfile now statically-linked, not a shared dynamic dll
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_wave.dll
+ !endif ; old_in_wave_plugin
+ ${WinampSectionEnd}
+SectionGroupEnd ; Audio Playback \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_mmedia_decvideo.nsh b/Src/installer/winamp/sections/grp_mmedia_decvideo.nsh
new file mode 100644
index 00000000..8e21c329
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_mmedia_decvideo.nsh
@@ -0,0 +1,167 @@
+!ifdef std | full
+SectionGroup $(IDS_GRP_MMEDIA_VIDEO_DEC) IDX_GRP_MMEDIA_VIDEO_DEC ; Video Playback
+ ${WinampSection} "decoderWmv" $(secWMV) IDX_SEC_WMV_DEC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_wm.dll
+ ClearErrors
+ ReadINIStr $0 "$WINAMPINI" "in_dshow" "extlist"
+ ${IfNot} ${Errors}
+ ${If} $0 <> ""
+ extstrip::remove "WMV" $0
+ Pop $0
+ extstrip::remove "ASF" $0
+ Pop $0
+ WriteINIStr "$WINAMPINI" "in_dshow" "extlist" $0
+ ${EndIf}
+ ${EndIf}
+ ${WinampSectionEnd}
+
+!ifndef WINAMP64
+ ${WinampSection} "decoderNsv" $(secNSV) IDX_SEC_NSV_DEC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_nsv.dll
+; File /nonfatal ${FILES_PATH}\Plugins\nsvdec_vp3.dll ; this line will need to be commented out if we can't get nsvdec_vp3 to build (or we'll need to include a pre-built dll instead) - for now, set as: /nonfatal
+ File ${FILES_PATH}\Plugins\nsvdec_vp5.dll
+ Delete $INSTDIR\Plugins\nsvdec_vp6.dll ; delete old VP6 plugin
+ SetOutPath $INSTDIR\System
+ File ${FILES_PATH}\System\vp6.w5s
+; File /nonfatal ${FILES_PATH}\System\vp6.wbm
+ File ${FILES_PATH}\System\vp8.w5s
+; File /nonfatal ${FILES_PATH}\System\vp8.wbm
+ WriteRegStr HKEY_CLASSES_ROOT "UNSV" "" "URL: Ultravox Protocol"
+ WriteRegStr HKEY_CLASSES_ROOT "UNSV" "URL Protocol" ""
+ WriteRegStr HKEY_CLASSES_ROOT "UNSV\shell\open\command" "" "$INSTDIR\${WINAMPEXE} %1"
+ ${WinampSectionEnd}
+!endif ; Winamp64
+
+!ifndef WINAMP64
+ ${WinampSection} "decoderDirectShow" $(secDSHOW) IDX_SEC_DSHOW_DEC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_dshow.dll
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "${WINAMP}PlayMediaOnArrival" ""
+ ${WinampSectionEnd}
+!endif ; WINAMP64
+
+ ${WinampSection} "decoderAvi" $(secAVI) IDX_SEC_AVI_DEC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_avi.dll
+
+ ; remove AVI from in_dshow's extension list
+ ClearErrors
+ ReadINIStr $0 "$WINAMPINI" "in_dshow" "extlist"
+ ${IfNot} ${Errors}
+ ${If} $0 <> ""
+ extstrip::remove "AVI" $0
+ Pop $0
+ WriteINIStr "$WINAMPINI" "in_dshow" "extlist" $0
+ ${EndIf}
+ ${EndIf}
+
+ SetOutPath $INSTDIR\System
+
+ ; AVI video codecs
+ File ${FILES_PATH}\System\h264.w5s
+ ; File /nonfatal ${FILES_PATH}\System\h264.wbm ; h264.wbm is currently created as 0 byte file, so pointless to include it.
+ File ${FILES_PATH}\System\vp6.w5s
+; File /nonfatal ${FILES_PATH}\System\vp6.wbm
+ File ${FILES_PATH}\System\mp4v.w5s
+; File /nonfatal ${FILES_PATH}\System\mp4v.wbm
+
+ ; AVI audio codecs
+ ; aacdec.w5s is installed by default (see winamp.nsh)
+ ; File ${FILES_PATH}\System\aacdec.w5s
+ ; File /nonfatal ${FILES_PATH}\System\aacdec.wbm
+ File ${FILES_PATH}\System\adpcm.w5s
+; File /nonfatal ${FILES_PATH}\System\adpcm.wbm
+ File ${FILES_PATH}\System\pcm.w5s
+; File /nonfatal ${FILES_PATH}\System\pcm.wbm
+ ${WinampSectionEnd}
+
+ ${WinampSection} "decoderFlv" $(secFLV) IDX_SEC_FLV_DEC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_flv.dll
+ SetOutPath $INSTDIR\System
+
+ ; FLV video codecs
+ File ${FILES_PATH}\System\h264.w5s
+ ; File /nonfatal ${FILES_PATH}\System\h264.wbm ; h264.wbm is currently created as 0 byte file, so pointless to include it.
+ File ${FILES_PATH}\System\vp6.w5s
+; File /nonfatal ${FILES_PATH}\System\vp6.wbm
+
+ ; FLV audio codecs
+ ; aacdec.w5s is installed by default (see winamp.nsh)
+ ; File ${FILES_PATH}\System\aacdec.w5s
+ ; File /nonfatal ${FILES_PATH}\System\aacdec.wbm
+ File ${FILES_PATH}\System\adpcm.w5s
+; File /nonfatal ${FILES_PATH}\System\adpcm.wbm
+
+ File ${FILES_PATH}\System\f263.w5s
+; File /nonfatal ${FILES_PATH}\System\f263.wbm
+ ${WinampSectionEnd}
+
+ ${WinampSection} "decoderMkv" $(secMKV) IDX_SEC_MKV_DEC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_mkv.dll
+ SetOutPath $INSTDIR\System
+
+ ; MKV video codecs
+ File ${FILES_PATH}\System\h264.w5s
+ ; File /nonfatal ${FILES_PATH}\System\h264.wbm ; h264.wbm is currently created as 0 byte file, so pointless to include it.
+ File ${FILES_PATH}\System\vp8.w5s
+; File /nonfatal ${FILES_PATH}\System\vp8.wbm
+ File ${FILES_PATH}\System\theora.w5s
+; File /nonfatal ${FILES_PATH}\System\theora.wbm
+
+ ; MKV audio codecs
+ ; aacdec.w5s is installed by default (see winamp.nsh)
+ ; File ${FILES_PATH}\System\aacdec.w5s
+ ; File /nonfatal ${FILES_PATH}\System\aacdec.wbm
+
+ File ${FILES_PATH}\System\f263.w5s
+; File /nonfatal ${FILES_PATH}\System\f263.wbm
+ ${WinampSectionEnd}
+
+ ${WinampSection} "decoderM4v" $(secM4V) IDX_SEC_M4V_DEC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_mp4.dll
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\libmp4v2.dll
+ SetOutPath $INSTDIR\System
+
+ ; MP4 video codecs
+ File ${FILES_PATH}\System\h264.w5s
+ ; File /nonfatal ${FILES_PATH}\System\h264.wbm ; h264.wbm is currently created as 0 byte file, so pointless to include it.
+ File ${FILES_PATH}\System\mp4v.w5s
+; File /nonfatal ${FILES_PATH}\System\mp4v.wbm
+
+ ; MP4 audio codecs
+ ; aacdec.w5s is installed by default (see winamp.nsh)
+ ; File ${FILES_PATH}\System\aacdec.w5s
+ ; File /nonfatal "${FILES_PATH}\System\aacdec.wbm"
+ File ${FILES_PATH}\System\pcm.w5s
+; File /nonfatal ${FILES_PATH}\System\pcm.wbm
+
+ SetOutPath $INSTDIR\System
+ File ${FILES_PATH}\System\alac.w5s
+ ; File /nonfatal ${FILES_PATH}\System\alac.wbm
+ ; File ${FILES_PATH}\System\a52.w5s ; need legal team to determine whether Dolby AC3 patents have expired so AC3 decoder can be included
+ ; File /nonfatal ${FILES_PATH}\System\a52.wbm
+ ${WinampSectionEnd}
+
+!ifndef WINAMP64
+ ${WinampSection} "decoderSwf" $(secSWF) IDX_SEC_SWF_DEC
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\in_swf.dll
+ File ..\..\resources\data\winampFLV.swf
+ ${WinampSectionEnd}
+!endif ; WINAMP64
+SectionGroupEnd ; Video Playback
+!endif ; std | full \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_mmedia_encaudio.nsh b/Src/installer/winamp/sections/grp_mmedia_encaudio.nsh
new file mode 100644
index 00000000..83ee9a37
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_mmedia_encaudio.nsh
@@ -0,0 +1,75 @@
+!ifndef LITE
+SectionGroup $(IDS_GRP_MMEDIA_AUDIO_ENC) IDX_GRP_MMEDIA_AUDIO_ENC ; Audio Encoders
+!ifndef WINAMP64
+!ifdef FULL
+ ${WinampSection} "winampWmaEncoder" $(secWMAE) IDX_SEC_WMA_ENC
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\enc_wma.dll
+ ${WinampSectionEnd}
+!endif ; FULL
+!endif ; WINAMP64
+
+!ifndef WINAMP64
+!ifdef FULL
+ ${WinampSection} "winampWavEncoder" $(IDS_SEC_WAV_ENC) IDX_SEC_WAV_ENC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\enc_wav.dll
+ ${WinampSectionEnd}
+!endif ; FULL
+!endif ; WINAMP64
+
+!ifndef WINAMP64
+!ifdef STD | FULL
+ ${WinampSection} "winampMp3Encoder" $(secMP3E) IDX_SEC_MP3_ENC
+ ${SECTIONIN_STD}
+; SetOutPath $INSTDIR\Shared
+; File ..\..\resources\libraries\lame_enc.dll ; 5.9 - lame_enc now statically-linked, not a shared dynamic dll
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\enc_lame.dll
+ ${WinampSectionEnd}
+!endif ; FULL
+!endif ; WINAMP64
+
+; need to fix this section at some point, will probably need to remove it....
+!if 0
+!ifndef WINAMP64
+!ifdef FULL
+ ${WinampSection} "encoderAac" $(secAACE) IDX_SEC_AAC_ENC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ Delete $INSTDIR\Plugins\enc_aac.dll
+ Delete $INSTDIR\Plugins\enc_mp4.dll
+ File /nonfatal ${FILES_PATH}\Plugins\enc_fhgaac.dll ; missing, as this can no longer be shipped
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\libmp4v2.dll
+ ${WinampSectionEnd}
+!endif ; FULL
+!endif ; WINAMP64
+!endif
+
+!ifndef WINAMP64
+!ifdef FULL
+ ${WinampSection} "encoderFlac" $(IDS_SEC_FLAC_ENC) IDX_SEC_FLAC_ENC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\enc_flac.dll
+; SetOutPath $INSTDIR\Shared
+; File ${FILES_PATH}\Shared\libFLAC.dll ; 5.9 - libflac now statically-linked, not a shared dynamic dll
+ ${WinampSectionEnd}
+!endif ; FULL
+!endif ; WINAMP64
+
+!ifndef WINAMP64
+!ifdef FULL
+ ${WinampSection} "encoderOgg" $(secOGGEnc) IDX_SEC_OGG_ENC
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\enc_vorbis.dll
+ ${WinampSectionEnd}
+!endif ; FULL
+!endif ; WINAMP64
+
+SectionGroupEnd ; Audio Encoders
+!endif ; NOT LITE \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_mmedia_output.nsh b/Src/installer/winamp/sections/grp_mmedia_output.nsh
new file mode 100644
index 00000000..ff2fc671
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_mmedia_output.nsh
@@ -0,0 +1,27 @@
+SectionGroup $(IDS_GRP_MMEDIA_OUTPUT) IDX_GRP_MMEDIA_OUTPUT ; Output
+ ${WinampSection} "outputDirectSound" $(secDirectSound) IDX_SEC_OUT_DS
+ SectionIn 1 2 3 4 5 6 7 8 RO
+ SetOutPath $INSTDIR\Plugins
+ File "${FILES_PATH}\Plugins\out_ds.dll"
+ ${WinampSectionEnd}
+
+ ${WinampSection} "outputWasapi" $(secWasapi) IDX_SEC_OUT_WASAPI
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File "${FILES_PATH}\Plugins\out_wasapi.dll"
+ ${WinampSectionEnd}
+
+!ifndef WINAMP64
+ ${WinampSection} "outputDisk" $(secWriteWAV) IDX_SEC_OUT_DISK
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File "${FILES_PATH}\Plugins\out_disk.dll"
+ ${WinampSectionEnd}
+!endif ; WINAMP64
+
+ ${WinampSection} "outputWav" $(IDS_SEC_OUT_WAV) IDX_SEC_OUT_WAV
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File "${FILES_PATH}\Plugins\out_wave.dll"
+ ${WinampSectionEnd}
+SectionGroupEnd ; Output \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_uiext.nsh b/Src/installer/winamp/sections/grp_uiext.nsh
new file mode 100644
index 00000000..90ec3c39
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_uiext.nsh
@@ -0,0 +1,64 @@
+SectionGroup $(IDS_GRP_UIEXTENSION) IDX_GRP_UIEXTENSION ; User Interface Extensions
+ ${WinampSection} "GlobalHotkeys" $(secHotKey) IDX_SEC_HOTKEY ; >>> [Global Hotkey Support]
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\gen_hotkeys.dll
+ ${WinampSectionEnd} ; <<< [Global Hotkey Support]
+
+ ${WinampSection} "TrayControl" $(secTray) IDX_SEC_TRAYCTRL ; >>> [Nullsoft Tray Control]
+ ${SECTIONIN_LITE}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\gen_tray.dll
+ ${WinampSectionEnd} ; <<< [Nullsoft Tray Control]
+
+!ifndef WINAMP64
+!ifdef full | std
+ ${WinampSection} "FreeformSkins" $(compModernSkin) IDX_SEC_FREEFORM ; >>> [Modern Skin Support]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\System
+ File "${FILES_PATH}\System\filereader.w5s"
+ ; File /nonfatal "${FILES_PATH}\System\filereader.wbm"
+ ; File "${FILES_PATH}\System\dlmgr.w5s"
+ ; File /nonfatal "${FILES_PATH}\System\dlmgr.wbm"
+ File "${FILES_PATH}\System\wac_downloadManager.w5s"
+ File "${FILES_PATH}\System\timer.w5s"
+
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\gen_ff.dll
+
+ DetailPrint "$(IDS_RUN_EXTRACT) $(IDS_DEFAULT_SKIN)..."
+ SetDetailsPrint none
+
+ File /r /x CVS /x *.psd "..\..\resources\data\Freeform"
+ Delete $INSTDIR\Plugins\Freeform\wacs\jpgload\jpgload.wac
+ SetOutPath $INSTDIR\Plugins\Freeform\wacs\freetype
+ File ${FILES_PATH}\Plugins\Freeform\wacs\freetype\freetype.wac
+
+ SetOutPath $SETTINGSDIR
+ File "..\..\resources\data\links.xml"
+
+ Call GetSkinDir
+ Pop $R0
+
+ SetOutPath "$R0\${MODERNSKINNAME}"
+ File /r /x CVS /x *.mi /x *.bat /x *.m "..\..\resources\skins\${MODERNSKINNAME}\*.*"
+
+ SetOutPath "$R0\Bento"
+ File /r /x CVS /x *.mi /x *.m /x *.psd "..\..\resources\skins\Bento\*.*"
+
+ SetOutPath "$R0\Big Bento"
+ File /r /x CVS /x *.mi /x *.bat /x *.m /x *.psd "..\..\resources\skins\Big Bento\*.*"
+
+ SetDetailsPrint lastused
+ SetOutPath "$INSTDIR\Plugins"
+
+ ReadIniStr $0 "$WINAMPINI" "Winamp" "skin"
+ ${If} "$0" == "Winamp Bento"
+ WriteIniStr "$WINAMPINI" "Winamp" "skin" "Bento"
+ ${EndIf}
+ ${WinampSectionEnd} ; <<< [Modern Skin Support]
+!endif ; full | std
+!endif ; WINAMP64
+
+ ${FrenchRadio_InsertInstallSections}
+SectionGroupEnd ; User Interface Extensions \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_vis.nsh b/Src/installer/winamp/sections/grp_vis.nsh
new file mode 100644
index 00000000..637bd26d
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_vis.nsh
@@ -0,0 +1,145 @@
+SectionGroup $(IDS_GRP_VISUALIZATION) IDX_GRP_VISUALIZATION ; Visualization
+!if 0
+!ifndef WINAMP64
+ ${WinampSection} "visTiny" $(secTiny) IDX_SEC_NSFS ; >>> [Nullsoft Tiny Fullscreen]
+ ${SECTIONIN_LITE}
+ Call SetVisPluginDir
+ File ${FILES_PATH}\Plugins\vis_nsfs.dll
+ ${WinampSectionEnd} ; <<< [Nullsoft Tiny Fullscreen]
+!endif ; WINAMP64
+!endif
+
+!ifdef full
+!ifndef WINAMP64
+ ${WinampSection} "visAVS" $(secAVS) IDX_SEC_AVS ; >>> [Advanced Visualization Studio]
+ ${SECTIONIN_FULL}
+ Call SetVisPluginDir
+
+ ; ${If} ${IsWinXP}
+ ; File ..\..\resources\Plugins\vis_avs.dll
+ ; ${Else}
+ ; File /oname=vis_avs.dll "..\..\resources\Plugins\vis_avs2.dll"
+ ; ${EndIf}
+ File ${FILES_PATH}\Plugins\vis_avs.dll
+ SetOverwrite off
+ File ..\..\resources\data\vis_avs.dat
+ SetOverwrite ${OVERWRITEMODE}
+
+ DetailPrint "$(IDS_RUN_EXTRACT) $(IDS_AVS_PRESETS)..."
+ SetDetailsPrint none
+
+ SetOutPath $OUTDIR\AVS
+ File ..\..\resources\data\avs\*.ape
+ File ..\..\resources\data\avs\*.bmp
+
+ SetOutPath "$OUTDIR\Winamp 5 Picks"
+ Delete "$OUTDIR\fçk - checkers with metaballs (skupers remix).avs" ;fix for fucked up char
+ File "..\..\resources\data\avs\Winamp 5 Picks\*.avs"
+
+ SetOutPath "$OUTDIR\..\Community Picks"
+ File "..\..\resources\data\avs\Community Picks\*.avs"
+
+ SetDetailsPrint lastused
+
+ SetOutPath $INSTDIR\Plugins
+ ${WinampSectionEnd} ; <<< [Advanced Visualization Studio]
+!endif ; WINAMP64
+!endif ; full
+
+!ifdef std | full
+!ifndef WINAMP64
+ ${WinampSection} "secMilk2" $(IDS_SEC_MILKDROP2) IDX_SEC_MILKDROP2 ; >>> [Milkdrop2]
+ ${SECTIONIN_STD}
+ Call SetVisPluginDir
+ File "${FILES_PATH}\Plugins\vis_milk2.dll"
+ ;File ..\..\resources\Plugins\vis_milk2.dll
+ SetOutPath $SETTINGSDIR\Plugins\Milkdrop2
+ File ..\..\resources\data\milk2_img.ini
+ File ..\..\resources\data\milk2_msg.ini
+
+ ; TODO if we make any other changes to presets, amend this as needed
+ ${IfNot} ${FileExists} "$INSTDIR\Plugins\Milkdrop2\installed.ini"
+ DetailPrint "$(IDS_RUN_EXTRACT) $(IDS_MILK2_PRESETS)..."
+ SetDetailsPrint none
+
+ SetOutPath $INSTDIR\Plugins\Milkdrop2
+ File /nonfatal /a /r /x CVS "..\..\resources\data\Milkdrop2\*.*"
+ SetDetailsPrint lastused
+
+ ; using this to prevent overwriting existing presets (i.e. those which are rated)
+ ; and from re-install if this hasn't changed when we next update things as it'll
+ ; only install the presets the once and so speeds up the whole install process
+ WriteIniStr "$INSTDIR\Plugins\Milkdrop2\installed.ini" "Install" "ver" "1"
+ ${Endif}
+
+ ; Start Temp 5.9.0 section
+ ; Force "suppress all warnings" settings on for v5.9.0 - this can be removed once issue is fixed
+ ${If} ${FileExists} "$SETTINGSDIR\Plugins\Milkdrop2\milk2.ini"
+ WriteIniStr "$SETTINGSDIR\Plugins\Milkdrop2\milk2.ini" "settings" "bWarningsDisabled2" "1"
+ ${Endif}
+
+ ; New presets for 5.9
+ ${if} ${FileExists} "$InstDir\Plugins\Milkdrop2\Presets\martin - cascade.milk"
+ ${AndIf} ${FileExists} "$InstDir\Plugins\Milkdrop2\Presets\Serge - MilkDrop2077.R004.milk"
+ goto skippy
+ ${Else}
+ CopyFiles "${FILES_PATH}\resources\data\Milkdrop2\Presets\new\martin - cascade.milk" "$InstDir\Plugins\Milkdrop2\Presets\martin - cascade.milk"
+ CopyFiles "${FILES_PATH}\resources\data\Milkdrop2\Presets\new\martin - colorwall.milk" "$InstDir\Plugins\Milkdrop2\Presets\martin - colorwall.milk"
+ CopyFiles "${FILES_PATH}\resources\data\Milkdrop2\Presets\new\Serge - MilkDrop2077.R004.milk" "$InstDir\Plugins\Milkdrop2\Presets\Serge - MilkDrop2077.R004.milk"
+ CopyFiles "${FILES_PATH}\resources\data\Milkdrop2\Presets\new\Serge - MilkDrop2077.R015.milk" "$InstDir\Plugins\Milkdrop2\Presets\Serge - MilkDrop2077.R015.milk"
+ CopyFiles "${FILES_PATH}\resources\data\Milkdrop2\Presets\new\Serge - MilkDrop2077.R027.milk" "$InstDir\Plugins\Milkdrop2\Presets\Serge - MilkDrop2077.R027.milk"
+ CopyFiles "${FILES_PATH}\resources\data\Milkdrop2\Presets\new\Serge - MilkDrop2077.R266.milk" "$InstDir\Plugins\Milkdrop2\Presets\Serge - MilkDrop2077.R266.milk"
+ skippy:
+ ${EndIf}
+
+ ; Rename existing affected files with .off extension for 5.9.0 - this can be reversed once issue is fixed
+ ${If} ${FileExists} "$INSTDIR\Plugins\Milkdrop2\presets\martin - satellite view.milk"
+ ${AndIf} ${FileExists} "$INSTDIR\Plugins\Milkdrop2\presets\yin - 300 - Daydreamer.milk"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\martin - satellite view.milk" "$INSTDIR\Plugins\Milkdrop2\presets\martin - satellite view.milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\yin - 300 - Daydreamer.milk" "$INSTDIR\Plugins\Milkdrop2\presets\yin - 300 - Daydreamer.milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\shifter + geiss - neon pulse (glow mix).milk" "$INSTDIR\Plugins\Milkdrop2\presets\shifter + geiss - neon pulse (glow mix).milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\Redi Jedi - i dont think those were portabello mushrooms.milk" "$INSTDIR\Plugins\Milkdrop2\presets\Redi Jedi - i dont think those were portabello mushrooms.milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\yin - 140 - Ohm to the stars.milk" "$INSTDIR\Plugins\Milkdrop2\presets\yin - 140 - Ohm to the stars.milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\yin - 191 - Temporal singularities.milk" "$INSTDIR\Plugins\Milkdrop2\presets\yin - 191 - Temporal singularities.milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\shifter - brain coral.milk" "$INSTDIR\Plugins\Milkdrop2\presets\shifter - brain coral.milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\shifter - brain coral (left brained).milk" "$INSTDIR\Plugins\Milkdrop2\presets\shifter - brain coral (left brained).milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\martin - electric pool.milk" "$INSTDIR\Plugins\Milkdrop2\presets\martin - electric pool.milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\yin - 315 - Ocean of Light (yo im peakin yo Eo.S.-Phat).milk" "$INSTDIR\Plugins\Milkdrop2\presets\yin - 315 - Ocean of Light (yo im peakin yo Eo.S.-Phat).milk.off"
+ Rename "$INSTDIR\Plugins\Milkdrop2\presets\Rovastar & Zylot - Crystal Ball (Many Visions Mix).milk" "$INSTDIR\Plugins\Milkdrop2\presets\Rovastar & Zylot - Crystal Ball (Many Visions Mix).milk.off"
+ ; Template
+ ; Rename "$INSTDIR\Plugins\Milkdrop2\presets\.milk" "$INSTDIR\Plugins\Milkdrop2\presets\.milk.off"
+ ${Endif}
+ ; End Temp 5.9.0 section
+
+ ; Remove "New" subfolder on clean installs (we already copy the new presets to root dir)
+ ${if} ${FileExists} "$InstDir\Plugins\Milkdrop2\Presets\new\martin - cascade.milk"
+ ${AndIf} ${FileExists} "$InstDir\Plugins\Milkdrop2\Presets\new\Serge - MilkDrop2077.R004.milk"
+ Delete "$INSTDIR\Plugins\Milkdrop2\presets\new\martin - cascade.milk"
+ Delete "$INSTDIR\Plugins\Milkdrop2\presets\new\martin - colorwall.milk"
+ Delete "$INSTDIR\Plugins\Milkdrop2\presets\new\Serge - MilkDrop2077.R004.milk"
+ Delete "$INSTDIR\Plugins\Milkdrop2\presets\new\Serge - MilkDrop2077.R015.milk"
+ Delete "$INSTDIR\Plugins\Milkdrop2\presets\new\Serge - MilkDrop2077.R027.milk"
+ Delete "$INSTDIR\Plugins\Milkdrop2\presets\new\Serge - MilkDrop2077.R266.milk"
+ RmDir "$INSTDIR\Plugins\Milkdrop2\presets\new"
+ ${Endif}
+
+ ClearErrors
+ ReadINIStr $0 "$WINAMPINI" "Winamp" "visplugin_name"
+ IfErrors 0 +3
+ WriteINIStr "$WINAMPINI" "Winamp" "visplugin_name" vis_milk2.dll
+ WriteINIStr "$WINAMPINI" "Winamp" "visplugin_num" 0
+ SetOutPath $INSTDIR\Plugins
+ ${WinampSectionEnd} ; <<< [Milkdrop2]
+!endif ; WINAMP64
+!endif ; full
+
+!ifdef full
+!ifndef WINAMP64
+ ${WinampSection} "visLine" $(secLineInput) IDX_SEL_LINEIN ; >>> [Line Input Support]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File "${FILES_PATH}\Plugins\in_linein.dll"
+ ${WinampSectionEnd} ; <<< [Line Input Support]
+!endif ; WINAMP64
+!endif ; std | full
+SectionGroupEnd ; Visualization \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_walib.nsh b/Src/installer/winamp/sections/grp_walib.nsh
new file mode 100644
index 00000000..7d4d3098
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_walib.nsh
@@ -0,0 +1,198 @@
+!ifdef std | full
+SectionGroup $(IDS_GRP_WALIB) IDX_GRP_WALIB ; Winamp Library
+ ${WinampSection} "mediaLibrary" $(secML) IDX_SEC_ML ; >>> [Media Library]
+ ${SECTIONIN_STD}
+ SectionGetFlags ${IDX_GRP_WALIB} $1
+ IntOp $1 $1 & 0x0041
+ StrCmp $1 "0" done
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\gen_ml.dll
+
+ done:
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\nxlite.dll
+ ${WinampSectionEnd} ; <<< [Media Library]
+
+ !include ".\sections\grp_walib_core.nsh"
+
+ ${WinampSection} "mediaLibraryTranscode" $(sec_ML_TRANSCODE) IDX_SEC_ML_TRANSCODE ; >>> [Trancsoding Tool]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_transcode.dll
+ ${If} ${FileExists} "$SETTINGSDIR\Plugins\ml_transcode.ini"
+ Rename "$SETTINGSDIR\Plugins\ml_transcode.ini" "$SETTINGSDIR\Plugins\ml\ml_transcode.ini"
+ ${EndIf}
+ ${WinampSectionEnd} ; <<< [Trancsoding Tool]
+
+ ${WinampSection} "mediaLibraryReplayGain" $(sec_ML_RG) IDX_SEC_ML_RG ; >>> [Replay Gain Analysis Tool]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_rg.dll
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\ReplayGainAnalysis.dll
+ ${WinampSectionEnd} ; <<< [Replay Gain Analysis Tool]
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "mediaLibraryiTunesImp" $(sec_ML_IMPEX) IDX_SEC_ML_IMPEX ; >>> [iTunes Importer]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\System
+ File ${FILES_PATH}\System\xml.w5s
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_impex.dll
+ ${WinampSectionEnd} ; <<< [iTunes Importer]
+!endif
+!endif ; WINAMP64
+
+!if 0
+ ${WinampSection} "mediaLibraryAutoTag" $(IDS_SEC_ML_AUTOTAG) IDX_SEC_ML_AUTOTAG ; >>> [Auto Tag]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_autotag.dll
+ ${WinampSectionEnd} ; <<< [Auto Tag]
+!endif
+
+!ifdef full
+ ${WinampSection} "mediaLibraryPodcast" $(secWire) IDX_SEC_ML_WIRE ; >>> [SHOUTCast Wire]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\nde.dll
+ File ${FILES_PATH}\Shared\nxlite.dll
+ File ${FILES_PATH}\Shared\jnetlib.dll
+ SetOutPath $INSTDIR\System
+; File ${FILES_PATH}\System\jnetlib.w5s
+; File /nonfatal "${FILES_PATH}\System\jnetlib.wbm"
+ File ${FILES_PATH}\System\wac_network.w5s
+ File ${FILES_PATH}\System\xml.w5s
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_wire.dll
+ ;!warning "ml_downloads disabled to make 5.5.2 (1 of 2)"
+ File ${FILES_PATH}\Plugins\ml_downloads.dll
+ WriteRegStr HKEY_CLASSES_ROOT "pcast" "" "URL: Podcast Protocol"
+ WriteRegStr HKEY_CLASSES_ROOT "pcast" "URL Protocol" ""
+ WriteRegStr HKEY_CLASSES_ROOT "pcast\shell\open\command" "" "$INSTDIR\${WINAMPEXE} /HANDLE %1"
+ WriteRegStr HKEY_CLASSES_ROOT "feed" "" "URL: RSS Protocol"
+ WriteRegStr HKEY_CLASSES_ROOT "feed" "URL Protocol" ""
+ WriteRegStr HKEY_CLASSES_ROOT "feed\shell\open\command" "" "$INSTDIR\${WINAMPEXE} /HANDLE %1"
+ SetOutPath $INSTDIR\System
+ File ${FILES_PATH}\System\omBrowser.w5s
+ ; File /nonfatal ${FILES_PATH}\System\omBrowser.wbm
+
+ ; Qt Components
+ SetOutPath $INSTDIR
+ File ${FILES_PATH}\Qt5Core.dll
+ File ${FILES_PATH}\Qt5Network.dll
+
+/*
+ ; Placeholder - code is currently not working
+ ; We need a method to rename the <winamp:preferences xmlns:winamp="http://www.winamp.com" version="2"> node to just <winamp>,
+ ; then make the "service url=" change, then rename the node back to the original...
+
+ ; Force using default dir for 5.9 by removing any alternate podcast dir user setting
+
+ ; make a backup first
+ ${If} ${FileExists} "$SETTINGSDIR\Plugins\ml\feeds\rss.xml"
+ CreateDirectory "$SETTINGSDIR\Plugins\ml\feeds\backup"
+ CopyFiles /SILENT "$SETTINGSDIR\Plugins\ml\feeds\rss.xml" "$SETTINGSDIR\Plugins\ml\feeds\backup\rss.xml"
+ ; backup made, now edit the service url
+
+ nsisXML::create
+ nsisXML::load "$SETTINGSDIR\Plugins\ml\feeds\rss.xml"
+ ${If} $0 P<> 0
+ nsisXML::select '/winamp/service'
+ ;Diagnostics
+ ;MessageBox mb_ok "$1 should not be 0 here"
+ ${If} $1 P<> 0
+ nsisXML::setAttribute "url" ""
+ nsisXML::save "$SETTINGSDIR\Plugins\ml\feeds\rss.xml"
+ ${EndIf}
+ nsisXML::release $0
+ ${Else}
+ ;Diagnostics
+ ;MessageBox mb_ok "load failed"
+ nsisXML::release $1
+ ${EndIf}
+ ${EndIf}
+*/
+ ${WinampSectionEnd} ; <<< [SHOUTCast Wire]
+!endif
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "mediaLibraryOnlineServices" $(secOM) IDX_SEC_ML_ONLINE ; >>> [Online Media]
+ ${SECTIONIN_FULL}
+ StrCpy $0 "$SETTINGSDIR\Plugins\ml"
+ CreateDirectory "$0"
+
+ Delete "$0\radio.*"
+ Delete "$0\tv.*"
+ Delete "$0\waaudio.*"
+ Delete "$0\wamedia.*"
+ Delete "$0\watv.*"
+ Delete "$0\xmmedia.*"
+ Delete "$0\ml_win_media.ini"
+
+ SetOutPath "$INSTDIR\Plugins"
+ File "${FILES_PATH}\Plugins\ml_online.dll"
+ ;!warning "ml_downloads disabled to make 5.5.2 (2 of 2)"
+ File "${FILES_PATH}\Plugins\ml_downloads.dll"
+
+ StrCpy $0 "$SETTINGSDIR\Plugins\ml\ml_online.ini"
+ DeleteINIStr "$0" "Setup" "featuredExtra"
+ DeleteINIStr "$0" "Navigation" "openOnce"
+ DeleteINIStr "$0" "Navigation" "openOnceMode"
+
+ SetOutPath "$INSTDIR\System"
+ File /nonfatal "${FILES_PATH}\System\omBrowser.w5s"
+ ; File /nonfatal "${FILES_PATH}\System\omBrowser.wbm"
+ File ${FILES_PATH}\System\wac_network.w5s
+; File ${FILES_PATH}\System\jnetlib.w5s
+; File /nonfatal "${FILES_PATH}\System\jnetlib.wbm"
+ ${WinampSectionEnd} ; <<< [Online Media]
+!endif
+!endif
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "mediaLibraryNFT" $(sec_ML_NFT) IDX_SEC_ML_NFT ; >>> [NFT Library]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_nft.dll
+ ${WinampSectionEnd} ; <<< [NFT Library]
+!endif
+!endif ; WINAMP64
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "mediaLibraryFanzone" $(sec_ML_FANZONE) IDX_SEC_ML_FANZONE ; >>> [Fanzone]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_fanzone.dll
+ ${WinampSectionEnd} ; <<< [Fanzone]
+!endif
+!endif ; WINAMP64
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "mediaLibraryHotmix" $(sec_ML_HOTMIX) IDX_SEC_ML_HOTMIX ; >>> [HotmixRadio]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_hotmixradio.dll
+ ${WinampSectionEnd} ; <<< [HotmixRadio]
+!endif
+!endif ; WINAMP64
+
+!if 0
+!ifdef full
+ ${WinampSection} "mediaLibraryPlaylistGenerator" $(SEC_ML_PLG) IDX_SEC_ML_PLG ; >>> [Playlist Generator]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_plg.dll
+ ${WinampSectionEnd} ; <<< [Playlist Generator]
+!endif
+!endif
+
+ !include ".\sections\grp_walib_pmp.nsh"
+
+SectionGroupEnd
+!endif ; FULL \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_walib_core.nsh b/Src/installer/winamp/sections/grp_walib_core.nsh
new file mode 100644
index 00000000..44434528
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_walib_core.nsh
@@ -0,0 +1,62 @@
+SectionGroup $(IDS_GRP_WALIB_CORE) IDX_GRP_WALIB_CORE ; Core Media Library Components
+ ${WinampSection} "mediaLibraryLocalMedia" $(sec_ML_LOCAL) IDX_SEC_ML_LOCAL ; >>> [Local Media]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\nde.dll
+ File ${FILES_PATH}\Shared\nxlite.dll
+ File ${FILES_PATH}\Shared\jnetlib.dll
+ SetOutPath $INSTDIR\System
+ ; File ${FILES_PATH}\System\dlmgr.w5s
+ ; File /nonfatal ${FILES_PATH}\System\dlmgr.wbm
+ File "${FILES_PATH}\System\wac_downloadManager.w5s"
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_local.dll
+ ${If} ${FileExists} "$INSTDIR\Plugins\gen_pcfix.dll"
+ Rename "$INSTDIR\Plugins\gen_pcfix.dll" "$INSTDIR\Plugins\gen_pcfix.dll.off" ; disable ShaneH's playcount tracking plugin
+ ${EndIf}
+ ${WinampSectionEnd} ; <<< [Local Media]
+
+ ${WinampSection} "mediaLibraryPlaylists" $(sec_ML_PLAYLISTS) IDX_SEC_ML_PLAYLISTS ; >>> [Playlists]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_playlists.dll
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\nxlite.dll
+ ${WinampSectionEnd} ; <<< [Playlists]
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "mediaLibraryRipBurn" $(sec_ML_DISC) IDX_SEC_ML_DISC ; >>> [CD Rip & Burn]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_disc.dll
+ ${WinampSectionEnd} ; <<< [CD Rip & Burn]
+!endif
+!endif
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "mediaLibraryBookmarks" $(sec_ML_BOOKMARKS) IDX_SEC_ML_BOOKMARKS ; >>> [Bookmarks]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_bookmarks.dll
+ ${WinampSectionEnd} ; <<< [Bookmarks]
+!endif
+!endif ;WINAMP64
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "mediaLibraryHistory" $(sec_ML_HISTORY) IDX_SEC_ML_HISTORY ; >>> [History]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\nde.dll
+ File ${FILES_PATH}\Shared\nxlite.dll
+ File ${FILES_PATH}\Shared\jnetlib.dll
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_history.dll
+ ${WinampSectionEnd} ; <<< [History]
+!endif
+!endif ;WINAMP64
+
+SectionGroupEnd ; Core Media Library Components \ No newline at end of file
diff --git a/Src/installer/winamp/sections/grp_walib_pmp.nsh b/Src/installer/winamp/sections/grp_walib_pmp.nsh
new file mode 100644
index 00000000..51a6720c
--- /dev/null
+++ b/Src/installer/winamp/sections/grp_walib_pmp.nsh
@@ -0,0 +1,96 @@
+SectionGroup $(IDS_GRP_WALIB_PORTABLE) IDX_GRP_WALIB_PORTABLE ; Portable Media Player Support
+ ${WinampSection} "mediaLibraryPortable" $(secPmp) IDX_SEC_ML_PMP ; >>> [pmp main]
+ ${SECTIONIN_STD}
+ SectionGetFlags ${IDX_GRP_WALIB_PORTABLE} $1
+ IntOp $1 $1 & 0x0041
+ StrCmp $1 "0" done
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\ml_pmp.dll
+ File ${FILES_PATH}\Plugins\ml_devices.dll
+ SetOutPath $INSTDIR\System
+ File ${FILES_PATH}\System\devices.w5s
+ ; File /nonfatal ${FILES_PATH}\System\devices.wbm
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\nde.dll
+ File ${FILES_PATH}\Shared\nxlite.dll
+ File ${FILES_PATH}\Shared\jnetlib.dll
+ done:
+ ${WinampSectionEnd} ; <<< [pmp main]
+
+ ${WinampSection} "portableDeviceIPod" $(secPmpiPod) IDX_SEC_PMP_IPOD ; >>> [iPod support]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\pmp_ipod.dll
+ Delete $INSTDIR\Plugins\ml_ipod.dll
+ ${WinampSectionEnd} ; <<< [iPod support]
+
+!ifdef full
+ ${WinampSection} "portableDeviceCreative" $(secPmpCreative) IDX_SEC_PMP_CREATIVE ; >>> [Creative]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\pmp_njb.dll
+ ${WinampSectionEnd} ; <<< [Creative]
+!endif
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "portableDeviceP4S" $(secPmpP4S) IDX_SEC_PMP_P4S ; >>> [PlayForSure]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\pmp_p4s.dll
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\MTPMediaPlayerArrival" "${WINAMP}MTPHandler" ""
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}MTPHandler" "Action" "Open with ${WINAMP}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}MTPHandler" "DefaultIcon" "$INSTDIR\${WINAMPEXE},0"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}MTPHandler" "InitCmdLine" "$INSTDIR\${WINAMPEXE}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}MTPHandler" "ProgID" "Shell.HWEventHandlerShellExecute"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}MTPHandler" "Provider" "${WINAMP}"
+ ; required on Win7+
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\${WINAMP}MTPHandler" "CLSIDForCancel" "{7DE5C6C7-DAF2-42F9-9324-C8CF4E7E8AC5}"
+ WriteRegStr HKEY_CLASSES_ROOT "AppID\{7DE5C6C7-DAF2-42F9-9324-C8CF4E7E8AC5}" "" "${WINAMP}"
+ WriteRegStr HKEY_CLASSES_ROOT "AppID\{7DE5C6C7-DAF2-42F9-9324-C8CF4E7E8AC5}" "RunAs" "Interactive User"
+ ; If no "AccessPermission" & "LaunchPermission" RegStr (REG_BINARY) values exist, then Windows will use default values instead ~ Ref: http://msdn.microsoft.com/en-gb/library/windows/desktop/ms688679%28v%3Dvs.85%29.aspx
+ ${WinampSectionEnd} ; <<< [PlayForSure]
+!endif
+!endif ; WINAMP64
+
+!ifdef full
+ ${WinampSection} "portableDeviceUsb" $(secPmpUSB) IDX_SEC_PMP_USB ; >>> [USB]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\pmp_usb.dll
+ ${WinampSectionEnd} ; <<< [USB]
+!endif
+
+!ifdef full
+ ${WinampSection} "portableDeviceAndroid" $(secPmpAndroid) IDX_SEC_PMP_ANDROID ; >>> [Android]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\pmp_android.dll
+ ${WinampSectionEnd} ; <<< [Android]
+!endif
+
+ ${WinampSection} "portableDeviceWifi" $(secPmpWifi) IDX_SEC_PMP_WIFI ; >>> [Wifi support]
+ ${SECTIONIN_STD}
+ SetOutPath $INSTDIR\Shared
+ File ${FILES_PATH}\Shared\jnetlib.dll
+ SetOutPath $INSTDIR\System
+ File ${FILES_PATH}\System\wasabi2.w5s
+ SetOutPath $INSTDIR\Components
+ File ${FILES_PATH}\Components\ssdp.w6c
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\pmp_wifi.dll
+ ${If} ${FileExists} "$SETTINGSDIR\pmp_wifi.ini"
+ Rename "$SETTINGSDIR\pmp_wifi.ini" "$SETTINGSDIR\Plugins\ml\pmp_wifi.ini"
+ ${EndIf}
+ ${WinampSectionEnd} ; <<< [Wifi support]
+
+!ifndef WINAMP64
+!ifdef full
+ ${WinampSection} "portableDeviceActiveSync" $(secPmpActiveSync) IDX_SEC_PMP_ACTIVESYNC ; >>> [ActiveSync]
+ ${SECTIONIN_FULL}
+ SetOutPath $INSTDIR\Plugins
+ File ${FILES_PATH}\Plugins\pmp_activesync.dll
+ ${WinampSectionEnd} ; <<< [ActiveSync]
+!endif
+!endif ; WINAMP64
+SectionGroupEnd \ No newline at end of file
diff --git a/Src/installer/winamp/sections/languages.nsh b/Src/installer/winamp/sections/languages.nsh
new file mode 100644
index 00000000..ed27a60a
--- /dev/null
+++ b/Src/installer/winamp/sections/languages.nsh
@@ -0,0 +1,75 @@
+Var LANG_DIR
+
+!macro WALANG_SECTION LANGID NSIS_LANGID
+
+!ifdef "LANG_USE_${LANGID}" | LANG_USE_ALL | "LANG_USE_${LANGID}-CMTY"
+!ifdef WALANG_SHOWSECTIONS
+ ${WinampSection} "language${NSIS_LANGID}" "${LANGFILE_${NSIS_LANGID}_NAME}" IDX_SEC_${LANGID}
+ ${SECTIONIN_STD}
+!else
+ ${WinampSection} "language${NSIS_LANGID}" "-${LANGFILE_${NSIS_LANGID}_NAME}" IDX_SEC_${LANGID}
+ SectionIn 1 2 3 4 5 6 7 8 RO
+!endif ; WALANG_SHOWSECTIONS
+ SetOutPath "$LANG_DIR"
+; TODO decide if we ship as wlz or folders (smaller download installer but longer to install a full install)
+!if 1
+ File "..\..\resources\languages\Winamp-${LANGID}.wlz"
+ ${If} '${LANG_${NSIS_LANGID}}' == $LANGUAGE
+ WriteINIStr "$WINAMPINI" "Winamp" "langpack" "Winamp-${LANGID}.wlz"
+ ${EndIf}
+!else
+ File /r "..\..\resources\languages\Winamp-${LANGID}"
+ ${If} '${LANG_${NSIS_LANGID}}' == $LANGUAGE
+ WriteINIStr "$WINAMPINI" "Winamp" "langpack" "Winamp-${LANGID}"
+ ${EndIf}
+!endif
+ ${WinampSectionEnd}
+!endif
+!macroend
+
+!ifdef WALANG_SHOWSECTIONS
+SectionGroup $(IDS_GRP_LANGUAGES) IDX_GRP_LANGUAGES
+!endif
+
+!ifdef WALANG_SHOWSECTIONS
+ ${WinampSection} "languageEnglish" "${LANGFILE_ENGLISH_NAME}" IDX_SEC_EN-US
+!else
+ ${WinampSection} "languageEnglish" "-${LANGFILE_ENGLISH_NAME}" IDX_SEC_EN-US
+!endif ; WALANG_SHOWSECTIONS
+ SectionIn 1 2 3 4 5 6 7 8 RO
+ ReadINIStr $LANG_DIR "$WINAMPINI" "Winamp" "LangDir"
+ ${If} $LANG_DIR == ""
+ StrCpy $LANG_DIR "Lang"
+ ${EndIf}
+
+ Push $INSTDIR
+ Push $LANG_DIR
+ nsis_winamp::GetFullPath
+ Pop $LANG_DIR
+
+ ${If} '1033' == $LANGUAGE
+ DeleteINIStr "$WINAMPINI" "Winamp" "langpack"
+ ${EndIf}
+ ${WinampSectionEnd} ; IDX_SEC_EN-US
+
+ ;!insertmacro WALANG_SECTION "DE-DE" "German"
+ !insertmacro WALANG_SECTION "ES-US" "SpanishInternational"
+ !insertmacro WALANG_SECTION "FR-FR" "French"
+ ;!insertmacro WALANG_SECTION "IT-IT" "Italian"
+ ;!insertmacro WALANG_SECTION "NL-NL" "Dutch"
+ !insertmacro WALANG_SECTION "PL-PL" "Polish"
+ ;!insertmacro WALANG_SECTION "SV-SE" "Swedish"
+ !insertmacro WALANG_SECTION "RU-RU" "Russian"
+ ;!insertmacro WALANG_SECTION "ZH-TW" "TradChinese"
+ ;!insertmacro WALANG_SECTION "ZH-CN" "SimpChinese"
+ !insertmacro WALANG_SECTION "JA-JP" "Japanese"
+ ;!insertmacro WALANG_SECTION "KO-KR" "Korean"
+ !insertmacro WALANG_SECTION "TR-TR" "Turkish"
+ !insertmacro WALANG_SECTION "PT-BR" "PortugueseBR"
+ !insertmacro WALANG_SECTION "RO-RO" "Romanian"
+ !insertmacro WALANG_SECTION "HU-HU" "Hungarian"
+ ;!insertmacro WALANG_SECTION "ID-ID" "Indonesian"
+
+!ifdef WALANG_SHOWSECTIONS
+SectionGroupEnd
+!endif \ No newline at end of file
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]
diff --git a/Src/installer/winamp/sections/wmfdist.nsh b/Src/installer/winamp/sections/wmfdist.nsh
new file mode 100644
index 00000000..d91e7cb5
--- /dev/null
+++ b/Src/installer/winamp/sections/wmfdist.nsh
@@ -0,0 +1,151 @@
+!define WMFDIST "Windows Media Format"
+
+; ToDo
+; Win7 package (wmfdist11): http://www.microsoft.com/en-us/download/details.aspx?id=16546
+; Win8 package (wmfdist12): http://www.microsoft.com/en-us/download/details.aspx?id=30685
+
+Function WMF_Download
+
+ Call GetWMFLink
+ Exch $0
+ ${If} $0 != ""
+ DetailPrint "$(IDS_RUN_DOWNLOAD) ${WMFDIST}..."
+ NSISdl::download /TRANSLATE2 "$(IDS_RUN_DOWNLOAD) ${WMFDIST}..." "$(IDS_CONNECTING)" "$(IDS_SECOND)" "$(IDS_MINUTE)" "$(IDS_HOUR)" "$(IDS_SECONDS)" "$(IDS_MINUTES)" "$(IDS_HOURS)" "$(IDS_PROGRESS)" /TIMEOUT=30000 "$0" "$PLUGINSDIR\wmfdist.exe"
+ Pop $0 ; Get the return value
+ ${If} $0 == "success"
+ DetailPrint "$(IDS_RUN_DOWNLOADSUCCESS)"
+ ${ElseIf} $0 == "cancel"
+ DetailPrint "$(IDS_RUN_DOWNLOADCANCELLED)"
+ ${Else}
+ DetailPrint "$(IDS_RUN_DOWNLOADFAILED) $R0"
+ ${EndIf}
+ ${EndIf}
+ Pop $0
+
+FunctionEnd
+
+Function WMF_Install
+ ClearErrors
+ IfFileExists "$PLUGINSDIR\wmfdist.exe" 0 wmf_install_end
+
+ DetailPrint "$(IDS_RUN_INSTALL) ${WMFDIST}..."
+ SetDetailsPrint none
+ ExecWait '$PLUGINSDIR\wmfdist.exe /Q:A' $0
+ SetDetailsPrint lastused
+
+ ${If} ${Errors}
+ StrCpy $1 "1"
+ ${Else}
+ ReadRegDWORD $0 HKCU "Software\Microsoft\MediaPlayer\Setup" InstallResult
+ IntOp $1 $0 & 0x80000000
+ ${If} $0 = 0xd2af9
+ SetRebootFlag true
+ ${EndIf}
+ ${EndIf}
+
+ ${If} $1 = "1"
+ DetailPrint "$(IDS_RUN_INSTALLFIALED)"
+ ${Else}
+ DetailPrint "$(IDS_RUN_DONE)"
+ ${EndIf}
+ wmf_install_end:
+FunctionEnd
+
+
+Function WMF_NeedDownload
+
+ DetailPrint "$(IDS_RUN_EXTRACT) ${WMFDIST}..."
+ SetDetailsPrint none
+
+ ${FileIfExist} "$PLUGINSDIR\wmfdist.exe" "..\..\resources\bundles\wmfdist\wmfdist.exe"
+
+ SetDetailsPrint lastused
+
+ ${Unless} ${FileExists} "$PLUGINSDIR\${WMFDIST}"
+ DetailPrint "$(IDS_RUN_FILE_NOT_FOUND_SCHEDULE_DOWNLOAD)"
+
+ Call GetWMFLink
+ Exch $0
+ ${If} $0 != ""
+ StrCpy $0 "1"
+ ${Else}
+ StrCpy $0 "0"
+ ${EndIF}
+ Exch $0
+ ${Else}
+ DetailPrint "$(IDS_RUN_DONE)"
+ Push "0"
+ ${EndUnless}
+FunctionEnd
+
+;------------------------
+; return link to the wmf distributives or '' (empty string) if you don't need to download
+;------------------------
+
+Function GetWMFLink
+
+ Push $0
+ Push $R0
+ Push $R1
+ Push $R2
+ Push $R3
+ Push $R4
+ Push $R5
+
+ ; check if wma/wmv selected
+ ${IfNot} ${SectionIsSelected} ${IDX_SEC_WMA_DEC}
+ !ifdef IDX_SEC_WMV_DEC
+ ${AndIfNot} ${SectionIsSelected} ${IDX_SEC_WMV_DEC}
+ !endif
+ !ifdef IDX_SEC_WMA_ENC
+ ${AndIfNot} ${SectionIsSelected} ${IDX_SEC_WMA_ENC}
+ !endif
+ Goto no_download
+ ${EndIf}
+
+ GetDllVersion "$SYSDIR\wmvcore.dll" $R0 $R1
+ IntOp $R2 $R0 / 0x00010000
+ IntOp $R3 $R0 & 0x0000FFFF
+ IntOp $R4 $R1 / 0x00010000
+ IntOp $R5 $R1 & 0x0000FFFF
+ ; StrCpy $1 "$R2.$R3.$R4.$R5"
+
+ ; StrCmp $WinVer "ME" wmf90_link
+ ; TODO check this out!
+ /*StrCmp $WinVer "NT" wmf90_link
+ StrCmp $WinVer "2000" wmf90_link
+ StrCmp $WinVer "XP" wmf95_link
+ StrCmp $WinVer "2003" wmf95_link*/
+ Goto no_download
+
+;wmf95_link:
+ IntCmp $R2 10 +1 copy_link1 no_download
+ IntCmp $R3 0 +1 copy_link1 no_download
+ IntCmp $R4 0 +1 copy_link1 no_download
+ IntCmp $R5 2802 no_download copy_link1 no_download
+copy_link1:
+ StrCpy $0 https://download.nullsoft.com/redist/wm/wmfdist95.exe
+ Goto function_end
+;wmf90_link:
+ IntCmp $R2 9 +1 copy_link2 no_download
+ IntCmp $R3 0 +1 copy_link2 no_download
+ IntCmp $R4 0 +1 copy_link2 no_download
+ IntCmp $R5 3287 no_download copy_link2 no_download
+copy_link2:
+ StrCpy $0 https://download.nullsoft.com/redist/wm/wmfdist9.exe
+ Goto function_end
+
+no_download:
+ StrCpy $0 ''
+ goto function_end
+
+function_end:
+ Pop $R5
+ Pop $R4
+ Pop $R3
+ Pop $R2
+ Pop $R1
+ Pop $R0
+ Exch $0
+
+FunctionEnd