!if "@ARCH@" == x86
  !define arch_x86
!endif

!if "@ARCH@" == i686-w64-mingw32.shared
  !define arch_x86
!endif

!if "@ARCH@" == x86_64
  !define arch_x64
!endif

!if "@ARCH@" == x86_64-w64-mingw32.shared
  !define arch_x64
!endif

!if "@CMAKE_BUILD_TYPE@" == Debug
  !define debug
!endif

!if "@BUILD_WITH_QT6@" == "ON"
  !define with_qt6
!endif

!ifdef debug
  !define PRODUCT_NAME "Strawberry Music Player Debug"
  !define PRODUCT_NAME_SHORT "Strawberry"
  !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME_SHORT}Debug"
  !ifdef arch_x86
    !define PRODUCT_INSTALL_DIR "$PROGRAMFILES\Strawberry Music Player Debug"
  !endif
  !ifdef arch_x64
    !define PRODUCT_INSTALL_DIR "$PROGRAMFILES64\Strawberry Music Player Debug"
  !endif
!else
  !define PRODUCT_NAME "Strawberry Music Player"
  !define PRODUCT_NAME_SHORT "Strawberry"
  !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME_SHORT}"
  !ifdef arch_x86
    !define PRODUCT_INSTALL_DIR "$PROGRAMFILES\Strawberry Music Player"
  !endif
  !ifdef arch_x64
    !define PRODUCT_INSTALL_DIR "$PROGRAMFILES64\Strawberry Music Player"
  !endif
!endif

!define PRODUCT_VERSION_MAJOR @STRAWBERRY_VERSION_MAJOR@
!define PRODUCT_VERSION_MINOR @STRAWBERRY_VERSION_MINOR@
!define PRODUCT_VERSION_PATCH @STRAWBERRY_VERSION_PATCH@
!define PRODUCT_DISPLAY_VERSION "@STRAWBERRY_VERSION_PACKAGE@"
!define PRODUCT_DISPLAY_VERSION_SHORT "@STRAWBERRY_VERSION_PACKAGE@"

!define PRODUCT_PUBLISHER "Jonas Kvinge"
!define PRODUCT_WEB_SITE "https://www.strawberrymusicplayer.org/"

!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; Set Application Capabilities info
!define CAPABILITIES_NAME "Strawberry Music Player"
!define CAPABILITIES_LOCAL_NAME "Strawberry"
!define CAPABILITIES_PROGID "Strawberry Music Player"
!define CAPABILITIES_PATH "Software\Clients\Media\Strawberry"
!define CAPABILITIES_DESCRIPTION "Strawberry Music Player"
!define CAPABILITIES_ICON "$INSTDIR\strawberry.ico"
!define CAPABILITIES_REINSTALL "Command to reinstall"
!define CAPABILITIES_HIDE_ICONS "Command to hide icons"
!define CAPABILITIES_SHOW_ICONS "Command to show icons"

Unicode True

SetCompressor /SOLID lzma

!include "MUI2.nsh"
!include "FileAssociation.nsh"
!include "Capabilities.nsh"
!include LogicLib.nsh
!include x64.nsh

!define MUI_ICON "strawberry.ico"

!define MUI_COMPONENTSPAGE_SMALLDESC

ReserveFile "${NSISDIR}/Plugins/x86-unicode/LockedList.dll"
ReserveFile "${NSISDIR}/Plugins/LockedList64.dll"
!define LockedListPATH	$InstallDir

; Installer pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE COPYING
Page Custom LockedListPageShow
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_CONFIRM
UninstPage custom un.LockedListPageShow
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "English" ;first language is the default language

Name "${PRODUCT_NAME}"
!ifdef arch_x86
  !ifdef debug
    !ifdef with_qt6
      OutFile "${PRODUCT_NAME_SHORT}Setup-${PRODUCT_DISPLAY_VERSION}-Qt6-Debug-x86.exe"
    !else
      OutFile "${PRODUCT_NAME_SHORT}Setup-${PRODUCT_DISPLAY_VERSION}-Qt5-Debug-x86.exe"
    !endif
  !else
    !ifdef with_qt6
      OutFile "${PRODUCT_NAME_SHORT}Setup-${PRODUCT_DISPLAY_VERSION}-Qt6-x86.exe"
    !else
      OutFile "${PRODUCT_NAME_SHORT}Setup-${PRODUCT_DISPLAY_VERSION}-Qt5-x86.exe"
    !endif
  !endif
!endif

!ifdef arch_x64
  !ifdef debug
    !ifdef with_qt6
      OutFile "${PRODUCT_NAME_SHORT}Setup-${PRODUCT_DISPLAY_VERSION}-Qt6-Debug-x64.exe"
    !else
      OutFile "${PRODUCT_NAME_SHORT}Setup-${PRODUCT_DISPLAY_VERSION}-Qt5-Debug-x64.exe"
    !endif
  !else
    !ifdef with_qt6
      OutFile "${PRODUCT_NAME_SHORT}Setup-${PRODUCT_DISPLAY_VERSION}-Qt6-x64.exe"
    !else
      OutFile "${PRODUCT_NAME_SHORT}Setup-${PRODUCT_DISPLAY_VERSION}-Qt5-x64.exe"
    !endif
  !endif
!endif

InstallDir "${PRODUCT_INSTALL_DIR}"

; Get the path where Strawberry was installed previously and set it as default path
InstallDirRegKey ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString"

ShowInstDetails show
ShowUnInstDetails show
RequestExecutionLevel admin

Function LockedListPageShow
  LockedList::AddModule /NOUNLOAD \strawberry.exe
  LockedList::Dialog /heading "Checking for running programs:" /noprograms "No programs need to close." /searching "Searching for running programs..."
FunctionEnd

Function un.LockedListPageShow
  LockedList::AddModule /NOUNLOAD \strawberry.exe
  LockedList::Dialog /heading "Checking for running programs:" /noprograms "No programs need to close." /searching "Searching for running programs..."
FunctionEnd

; Check for previous installation, and call the uninstaller if any
Function CheckPreviousInstall

  ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString"
  StrCmp $R0 "" done

  MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
  "${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \
  previous version or `Cancel` to cancel this upgrade." \
  IDOK uninst
  Abort
; Run the uninstaller
uninst:
  ClearErrors
  ExecWait '$R0' ; Do not copy the uninstaller to a temp file

done:

FunctionEnd

Function .onInit

  !insertmacro MUI_LANGDLL_DISPLAY

  Call CheckPreviousInstall

FunctionEnd

Section "Delete old files" oldfiles
SectionEnd

Section "Strawberry" Strawberry
  SetOutPath "$INSTDIR"

  File "strawberry.exe"
  File "strawberry-tagreader.exe"
  File "strawberry.ico"
  File "sqlite3.exe"
  File "gst-launch-1.0.exe"
  File "gst-discoverer-1.0.exe"

!ifdef arch_x86
  File "libgcc_s_sjlj-1.dll"
  File "libcrypto-3.dll"
  File "libssl-3.dll"
!endif

!ifdef arch_x64
  File "libgcc_s_seh-1.dll"
  File "libcrypto-3-x64.dll"
  File "libssl-3-x64.dll"
!endif

  File "avcodec-58.dll"
  File "avfilter-7.dll"
  File "avformat-58.dll"
  File "avutil-56.dll"
  File "libbrotlicommon.dll"
  File "libbrotlidec.dll"
  File "libbz2.dll"
  File "libcdio-19.dll"
  File "libchromaprint.dll"
  File "libdl.dll"
  File "libffi-8.dll"
  File "libfftw3-3.dll"
  File "libFLAC-8.dll"
  File "libfreetype-6.dll"
  File "libfaac-0.dll"
  File "libfaad-2.dll"
  File "libgio-2.0-0.dll"
  File "libglib-2.0-0.dll"
  File "libgmodule-2.0-0.dll"
  File "libgmp-10.dll"
  File "libgnutls-30.dll"
  File "libgobject-2.0-0.dll"
  File "libgstadaptivedemux-1.0-0.dll"
  File "libgstapp-1.0-0.dll"
  File "libgstaudio-1.0-0.dll"
  File "libgstbadaudio-1.0-0.dll"
  File "libgstbase-1.0-0.dll"
  File "libgstfft-1.0-0.dll"
  File "libgstisoff-1.0-0.dll"
  File "libgstnet-1.0-0.dll"
  File "libgstpbutils-1.0-0.dll"
  File "libgstreamer-1.0-0.dll"
  File "libgstriff-1.0-0.dll"
  File "libgstrtp-1.0-0.dll"
  File "libgstrtsp-1.0-0.dll"
  File "libgstsdp-1.0-0.dll"
  File "libgsttag-1.0-0.dll"
  File "libgsturidownloader-1.0-0.dll"
  File "libgstvideo-1.0-0.dll"
  File "libharfbuzz-0.dll"
  File "libhogweed-6.dll"
  File "libiconv-2.dll"
  File "libidn2-0.dll"
  File "libintl-8.dll"
  File "libjpeg-9.dll"
  File "liblzma-5.dll"
  File "libmp3lame-0.dll"
  File "libnettle-8.dll"
  File "libogg-0.dll"
  File "libopenmpt-0.dll"
  File "libopus-0.dll"
  File "liborc-0.4-0.dll"
  File "libpcre-1.dll"
  File "libpcre2-16-0.dll"
  File "libpng16-16.dll"
  File "libpsl-5.dll"
  File "libprotobuf-30.dll"
  File "libspeex-1.dll"
  File "libsqlite3-0.dll"
  File "libssp-0.dll"
  File "libstdc++-6.dll"
  File "libsoup-2.4-1.dll"
  File "libtag.dll"
  File "libtasn1-6.dll"
  File "libunistring-2.dll"
  File "libvorbis-0.dll"
  File "libvorbisenc-2.dll"
  File "libvorbisfile-3.dll"
  File "libwavpack-1.dll"
  File "libwinpthread-1.dll"
  File "libxml2-2.dll"
  File "libzstd.dll"
  File "postproc-55.dll"
  File "swresample-3.dll"
  File "swscale-5.dll"
  File "zlib1.dll"

!ifdef with_qt6
  File "Qt6Concurrent.dll"
  File "Qt6Core.dll"
  File "Qt6Gui.dll"
  File "Qt6Network.dll"
  File "Qt6Sql.dll"
  File "Qt6Widgets.dll"
  File "libqtsparkle-qt6.dll"
!else
  File "Qt5Concurrent.dll"
  File "Qt5Core.dll"
  File "Qt5Gui.dll"
  File "Qt5Network.dll"
  File "Qt5Sql.dll"
  File "Qt5Widgets.dll"
  File "libqtsparkle-qt5.dll"
!endif

!ifdef debug
  File "gdb.exe"
  File "libexpat-1.dll"
  File "libmman.dll"
  File "libmpfr-6.dll"
  File "libreadline8.dll"
  File "libtermcap.dll"
!endif

  ; Register Strawberry with Default Programs
  Var /GLOBAL AppIcon
  Var /GLOBAL AppExe
  StrCpy $AppExe "$INSTDIR\strawberry.exe"
  StrCpy $AppIcon "$INSTDIR\strawberry.ico"

  ${RegisterCapabilities}

  ${RegisterMediaType} ".mp3" $AppExe $AppIcon "MP3 Audio File"
  ${RegisterMediaType} ".flac" $AppExe $AppIcon "FLAC Audio File"
  ${RegisterMediaType} ".ogg" $AppExe $AppIcon "OGG Audio File"
  ${RegisterMediaType} ".spx" $AppExe $AppIcon "OGG Speex Audio File"
  ${RegisterMediaType} ".m4a" $AppExe $AppIcon "MP4 Audio File"
  ${RegisterMediaType} ".aac" $AppExe $AppIcon "AAC Audio File"
  ${RegisterMediaType} ".wma" $AppExe $AppIcon "WMA Audio File"
  ${RegisterMediaType} ".wav" $AppExe $AppIcon "WAV Audio File"

  ${RegisterMediaType} ".pls" $AppExe $AppIcon "PLS Audio File"
  ${RegisterMediaType} ".m3u" $AppExe $AppIcon "M3U Audio File"
  ${RegisterMediaType} ".xspf" $AppExe $AppIcon "XSPF Audio File"
  ${RegisterMediaType} ".asx" $AppExe $AppIcon "Windows Media Audio/Video playlist"

  ${RegisterMimeType} "audio/mp3" "mp3" "{cd3afa76-b84f-48f0-9393-7edc34128127}"
  ${RegisterMimeType} "audio/mp4" "m4a" "{cd3afa7c-b84f-48f0-9393-7edc34128127}"
  ${RegisterMimeType} "audio/x-ms-wma" "wma" "{cd3afa84-b84f-48f0-9393-7edc34128127}"
  ${RegisterMimeType} "audio/wav" "wav" "{cd3afa7b-b84f-48f0-9393-7edc34128127}"

  ${RegisterMimeType} "audio/mpegurl" "m3u" "{cd3afa78-b84f-48f0-9393-7edc34128127}"
  ${RegisterMimeType} "application/x-wmplayer" "asx" "{cd3afa96-b84f-48f0-9393-7edc34128127}"

SectionEnd

Section "GIO modules" gio-modules
  SetOutPath "$INSTDIR\gio-modules"
  File "/oname=libgiognutls.dll" "gio-modules\libgiognutls.dll"
SectionEnd

Section "Qt Platform plugins" platforms
  SetOutPath "$INSTDIR\platforms"
  File "/oname=qwindows.dll" "platforms\qwindows.dll"
SectionEnd

Section "Qt styles" styles
  SetOutPath "$INSTDIR\styles"
  File "/oname=qwindowsvistastyle.dll" "styles\qwindowsvistastyle.dll"
SectionEnd

!ifdef with_qt6
Section "Qt TLS plugins" tls
  SetOutPath "$INSTDIR\tls"
  File "/oname=qopensslbackend.dll" "tls\qopensslbackend.dll"
SectionEnd
!endif

Section "Qt SQL Drivers" sqldrivers
  SetOutPath "$INSTDIR\sqldrivers"
  File "/oname=qsqlite.dll" "sqldrivers\qsqlite.dll"
SectionEnd

Section "Qt imageformats" imageformats
  SetOutPath "$INSTDIR\imageformats"
  File "/oname=qgif.dll" "imageformats\qgif.dll"
  File "/oname=qico.dll" "imageformats\qico.dll"
  File "/oname=qjpeg.dll" "imageformats\qjpeg.dll"
SectionEnd

Section "Gstreamer plugins" gstreamer-plugins
  SetOutPath "$INSTDIR\gstreamer-plugins"

  File "/oname=libgstaiff.dll" "gstreamer-plugins\libgstaiff.dll"
  File "/oname=libgstapetag.dll" "gstreamer-plugins\libgstapetag.dll"
  File "/oname=libgstapp.dll" "gstreamer-plugins\libgstapp.dll"
  File "/oname=libgstasf.dll" "gstreamer-plugins\libgstasf.dll"
  File "/oname=libgstasfmux.dll" "gstreamer-plugins\libgstasfmux.dll"
  File "/oname=libgstaudioconvert.dll" "gstreamer-plugins\libgstaudioconvert.dll"
  File "/oname=libgstaudiofx.dll" "gstreamer-plugins\libgstaudiofx.dll"
  File "/oname=libgstaudiomixer.dll" "gstreamer-plugins\libgstaudiomixer.dll"
  File "/oname=libgstaudioparsers.dll" "gstreamer-plugins\libgstaudioparsers.dll"
  File "/oname=libgstaudiorate.dll" "gstreamer-plugins\libgstaudiorate.dll"
  File "/oname=libgstaudioresample.dll" "gstreamer-plugins\libgstaudioresample.dll"
  File "/oname=libgstaudiotestsrc.dll" "gstreamer-plugins\libgstaudiotestsrc.dll"
  File "/oname=libgstautodetect.dll" "gstreamer-plugins\libgstautodetect.dll"
  File "/oname=libgstcdio.dll" "gstreamer-plugins\libgstcdio.dll"
  File "/oname=libgstcoreelements.dll" "gstreamer-plugins\libgstcoreelements.dll"
  File "/oname=libgstdash.dll" "gstreamer-plugins\libgstdash.dll"
  File "/oname=libgstdirectsound.dll" "gstreamer-plugins\libgstdirectsound.dll"
  File "/oname=libgstequalizer.dll" "gstreamer-plugins\libgstequalizer.dll"
  File "/oname=libgstflac.dll" "gstreamer-plugins\libgstflac.dll"
  File "/oname=libgstfaac.dll" "gstreamer-plugins\libgstfaac.dll"
  File "/oname=libgstfaad.dll" "gstreamer-plugins\libgstfaad.dll"
  File "/oname=libgstgio.dll" "gstreamer-plugins\libgstgio.dll"
  File "/oname=libgsticydemux.dll" "gstreamer-plugins\libgsticydemux.dll"
  File "/oname=libgstid3demux.dll" "gstreamer-plugins\libgstid3demux.dll"
  File "/oname=libgstisomp4.dll" "gstreamer-plugins\libgstisomp4.dll"
  File "/oname=libgstlame.dll" "gstreamer-plugins\libgstlame.dll"
  File "/oname=libgstlibav.dll" "gstreamer-plugins\libgstlibav.dll"
  File "/oname=libgstogg.dll" "gstreamer-plugins\libgstogg.dll"
  File "/oname=libgstopenmpt.dll" "gstreamer-plugins\libgstopenmpt.dll"
  File "/oname=libgstopus.dll" "gstreamer-plugins\libgstopus.dll"
  File "/oname=libgstopusparse.dll" "gstreamer-plugins\libgstopusparse.dll"
  File "/oname=libgstpbtypes.dll" "gstreamer-plugins\libgstpbtypes.dll"
  File "/oname=libgstplayback.dll" "gstreamer-plugins\libgstplayback.dll"
  File "/oname=libgstreplaygain.dll" "gstreamer-plugins\libgstreplaygain.dll"
  File "/oname=libgstrtp.dll" "gstreamer-plugins\libgstrtp.dll"
  File "/oname=libgstrtsp.dll" "gstreamer-plugins\libgstrtsp.dll"
  File "/oname=libgstsoup.dll" "gstreamer-plugins\libgstsoup.dll"
  File "/oname=libgstspectrum.dll" "gstreamer-plugins\libgstspectrum.dll"
  File "/oname=libgstspeex.dll" "gstreamer-plugins\libgstspeex.dll"
  File "/oname=libgsttaglib.dll" "gstreamer-plugins\libgsttaglib.dll"
  File "/oname=libgsttcp.dll" "gstreamer-plugins\libgsttcp.dll"
  File "/oname=libgsttypefindfunctions.dll" "gstreamer-plugins\libgsttypefindfunctions.dll"
  File "/oname=libgstudp.dll" "gstreamer-plugins\libgstudp.dll"
  File "/oname=libgstvolume.dll" "gstreamer-plugins\libgstvolume.dll"
  File "/oname=libgstvorbis.dll" "gstreamer-plugins\libgstvorbis.dll"
  File "/oname=libgstwasapi.dll" "gstreamer-plugins\libgstwasapi.dll"
  File "/oname=libgstwavpack.dll" "gstreamer-plugins\libgstwavpack.dll"
  File "/oname=libgstwavparse.dll" "gstreamer-plugins\libgstwavparse.dll"

SectionEnd

Section "Start menu items" startmenu
  ; Create Start Menu folders and shortcuts.
  SetShellVarContext all

  CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\strawberry.exe"
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe"

SectionEnd

Section "Tidal URL Scheme"
  WriteRegStr HKCR "tidal" "URL Protocol" ""
  WriteRegStr HKCR "tidal" "" "URL:tidal"
  WriteRegStr HKCR 'tidal\shell\open\command' '' '"${PRODUCT_INSTALL_DIR}\strawberry.exe" "%1"'
SectionEnd

Section "Uninstaller"
  ; Create uninstaller
  WriteUninstaller "$INSTDIR\Uninstall.exe"

  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\strawberry.ico"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_DISPLAY_VERSION}"
  WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "VersionMajor" "${PRODUCT_VERSION_MAJOR}"
  WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "VersionMinor" "${PRODUCT_VERSION_MINOR}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"

SectionEnd

Section "Uninstall"

  ; Delete all the files

  Delete "$INSTDIR\strawberry.exe"
  Delete "$INSTDIR\strawberry-tagreader.exe"
  Delete "$INSTDIR\strawberry.ico"
  Delete "$INSTDIR\sqlite3.exe"
  Delete "$INSTDIR\gst-launch-1.0.exe"
  Delete "$INSTDIR\gst-discoverer-1.0.exe"

!ifdef arch_x86
  Delete "$INSTDIR\libgcc_s_sjlj-1.dll"
  Delete "$INSTDIR\libcrypto-3.dll"
  Delete "$INSTDIR\libssl-3.dll"
!endif

!ifdef arch_x64
  Delete "$INSTDIR\libgcc_s_seh-1.dll"
  Delete "$INSTDIR\libcrypto-3-x64.dll"
  Delete "$INSTDIR\libssl-3-x64.dll"
!endif

  Delete "$INSTDIR\avcodec-58.dll"
  Delete "$INSTDIR\avfilter-7.dll"
  Delete "$INSTDIR\avformat-58.dll"
  Delete "$INSTDIR\avutil-56.dll"
  Delete "$INSTDIR\libbrotlicommon.dll"
  Delete "$INSTDIR\libbrotlidec.dll"
  Delete "$INSTDIR\libbz2.dll"
  Delete "$INSTDIR\libcdio-19.dll"
  Delete "$INSTDIR\libchromaprint.dll"
  Delete "$INSTDIR\libdl.dll"
  Delete "$INSTDIR\libffi-8.dll"
  Delete "$INSTDIR\libfftw3-3.dll"
  Delete "$INSTDIR\libFLAC-8.dll"
  Delete "$INSTDIR\libfreetype-6.dll"
  Delete "$INSTDIR\libfaac-0.dll"
  Delete "$INSTDIR\libfaad-2.dll"
  Delete "$INSTDIR\libgio-2.0-0.dll"
  Delete "$INSTDIR\libglib-2.0-0.dll"
  Delete "$INSTDIR\libgmodule-2.0-0.dll"
  Delete "$INSTDIR\libgmp-10.dll"
  Delete "$INSTDIR\libgnutls-30.dll"
  Delete "$INSTDIR\libgobject-2.0-0.dll"
  Delete "$INSTDIR\libgstadaptivedemux-1.0-0.dll"
  Delete "$INSTDIR\libgstapp-1.0-0.dll"
  Delete "$INSTDIR\libgstaudio-1.0-0.dll"
  Delete "$INSTDIR\libgstbadaudio-1.0-0.dll"
  Delete "$INSTDIR\libgstbase-1.0-0.dll"
  Delete "$INSTDIR\libgstfft-1.0-0.dll"
  Delete "$INSTDIR\libgstisoff-1.0-0.dll"
  Delete "$INSTDIR\libgstnet-1.0-0.dll"
  Delete "$INSTDIR\libgstpbutils-1.0-0.dll"
  Delete "$INSTDIR\libgstreamer-1.0-0.dll"
  Delete "$INSTDIR\libgstriff-1.0-0.dll"
  Delete "$INSTDIR\libgstrtp-1.0-0.dll"
  Delete "$INSTDIR\libgstrtsp-1.0-0.dll"
  Delete "$INSTDIR\libgstsdp-1.0-0.dll"
  Delete "$INSTDIR\libgsttag-1.0-0.dll"
  Delete "$INSTDIR\libgsturidownloader-1.0-0.dll"
  Delete "$INSTDIR\libgstvideo-1.0-0.dll"
  Delete "$INSTDIR\libharfbuzz-0.dll"
  Delete "$INSTDIR\libhogweed-6.dll"
  Delete "$INSTDIR\libiconv-2.dll"
  Delete "$INSTDIR\libidn2-0.dll"
  Delete "$INSTDIR\libintl-8.dll"
  Delete "$INSTDIR\libjpeg-9.dll"
  Delete "$INSTDIR\liblzma-5.dll"
  Delete "$INSTDIR\libmp3lame-0.dll"
  Delete "$INSTDIR\libnettle-8.dll"
  Delete "$INSTDIR\libogg-0.dll"
  Delete "$INSTDIR\libopenmpt-0.dll"
  Delete "$INSTDIR\libopus-0.dll"
  Delete "$INSTDIR\liborc-0.4-0.dll"
  Delete "$INSTDIR\libpcre-1.dll"
  Delete "$INSTDIR\libpcre2-16-0.dll"
  Delete "$INSTDIR\libpng16-16.dll"
  Delete "$INSTDIR\libpsl-5.dll"
  Delete "$INSTDIR\libprotobuf-30.dll"
  Delete "$INSTDIR\libqtsparkle-qt5.dll"
  Delete "$INSTDIR\libqtsparkle-qt6.dll"
  Delete "$INSTDIR\libspeex-1.dll"
  Delete "$INSTDIR\libsqlite3-0.dll"
  Delete "$INSTDIR\libssp-0.dll"
  Delete "$INSTDIR\libstdc++-6.dll"
  Delete "$INSTDIR\libsoup-2.4-1.dll"
  Delete "$INSTDIR\libtag.dll"
  Delete "$INSTDIR\libtasn1-6.dll"
  Delete "$INSTDIR\libunistring-2.dll"
  Delete "$INSTDIR\libvorbis-0.dll"
  Delete "$INSTDIR\libvorbisenc-2.dll"
  Delete "$INSTDIR\libvorbisfile-3.dll"
  Delete "$INSTDIR\libwavpack-1.dll"
  Delete "$INSTDIR\libwinpthread-1.dll"
  Delete "$INSTDIR\libxml2-2.dll"
  Delete "$INSTDIR\libzstd.dll"
  Delete "$INSTDIR\postproc-55.dll"
  Delete "$INSTDIR\Qt5Concurrent.dll"
  Delete "$INSTDIR\Qt5Core.dll"
  Delete "$INSTDIR\Qt5Gui.dll"
  Delete "$INSTDIR\Qt5Network.dll"
  Delete "$INSTDIR\Qt5Sql.dll"
  Delete "$INSTDIR\Qt5Widgets.dll"
  Delete "$INSTDIR\Qt6Concurrent.dll"
  Delete "$INSTDIR\Qt6Core.dll"
  Delete "$INSTDIR\Qt6Gui.dll"
  Delete "$INSTDIR\Qt6Network.dll"
  Delete "$INSTDIR\Qt6Sql.dll"
  Delete "$INSTDIR\Qt6Widgets.dll"
  Delete "$INSTDIR\swresample-3.dll"
  Delete "$INSTDIR\swscale-5.dll"
  Delete "$INSTDIR\zlib1.dll"

!ifdef debug
  Delete "$INSTDIR\gdb.exe"
  Delete "$INSTDIR\libexpat-1.dll"
  Delete "$INSTDIR\libmman.dll"
  Delete "$INSTDIR\libmpfr-6.dll"
  Delete "$INSTDIR\libreadline8.dll"
  Delete "$INSTDIR\libtermcap.dll"
!endif

  Delete "$INSTDIR\gio-modules\libgiognutls.dll"
  Delete "$INSTDIR\platforms\qwindows.dll"
  Delete "$INSTDIR\styles\qwindowsvistastyle.dll"
!ifdef with_qt6
  Delete "$INSTDIR\tls\qopensslbackend.dll"
!endif
  Delete "$INSTDIR\sqldrivers\qsqlite.dll"

  Delete "$INSTDIR\imageformats\qgif.dll"
  Delete "$INSTDIR\imageformats\qico.dll"
  Delete "$INSTDIR\imageformats\qjpeg.dll"

  Delete $INSTDIR\gstreamer-plugins\libgstaiff.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstapetag.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstapp.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstasf.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstasfmux.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstaudioconvert.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstaudiofx.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstaudiomixer.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstaudioparsers.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstaudiorate.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstaudioresample.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstaudiotestsrc.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstautodetect.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstcdio.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstcoreelements.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstdash.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstdirectsound.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstequalizer.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstflac.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstfaac.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstfaad.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstgio.dll"
  Delete $INSTDIR\gstreamer-plugins\libgsticydemux.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstid3demux.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstisomp4.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstlame.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstlibav.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstogg.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstopenmpt.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstopus.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstopusparse.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstpbtypes.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstplayback.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstreplaygain.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstrtp.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstrtsp.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstsoup.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstspectrum.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstspeex.dll"
  Delete $INSTDIR\gstreamer-plugins\libgsttaglib.dll"
  Delete $INSTDIR\gstreamer-plugins\libgsttcp.dll"
  Delete $INSTDIR\gstreamer-plugins\libgsttypefindfunctions.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstudp.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstvolume.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstvorbis.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstwasapi.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstwavpack.dll"
  Delete $INSTDIR\gstreamer-plugins\libgstwavparse.dll"

  Delete $INSTDIR\Uninstall.exe"

  ; Remove the installation folders.
  RMDir "$INSTDIR\platforms"
  RMDir "$INSTDIR\styles"
  RMDir "$INSTDIR\tls"
  RMDir "$INSTDIR\sqldrivers"
  RMDir "$INSTDIR\imageformats"
  RMDir "$INSTDIR\gio-modules"
  RMDir "$INSTDIR\gstreamer-plugins"
  RMDir "$INSTDIR"

  ; Remove the Shortcuts
  SetShellVarContext all

  Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk"
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
  RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"

  ; Remove the entry from 'installed programs list'
  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"

  ; Unregister from Default Programs
  ${UnRegisterCapabilities}

SectionEnd
