diff options
Diffstat (limited to 'Src/installer/winamp/sections')
-rw-r--r-- | Src/installer/winamp/sections/directX.nsh | 190 | ||||
-rw-r--r-- | Src/installer/winamp/sections/extra.nsh | 27 | ||||
-rw-r--r-- | Src/installer/winamp/sections/frenchRadio.nsh | 154 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_mmedia.nsh | 33 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_mmedia_decaudio.nsh | 103 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_mmedia_decvideo.nsh | 167 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_mmedia_encaudio.nsh | 75 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_mmedia_output.nsh | 27 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_uiext.nsh | 64 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_vis.nsh | 145 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_walib.nsh | 198 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_walib_core.nsh | 62 | ||||
-rw-r--r-- | Src/installer/winamp/sections/grp_walib_pmp.nsh | 96 | ||||
-rw-r--r-- | Src/installer/winamp/sections/languages.nsh | 75 | ||||
-rw-r--r-- | Src/installer/winamp/sections/winamp.nsh | 510 | ||||
-rw-r--r-- | Src/installer/winamp/sections/wmfdist.nsh | 151 |
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 |