summaryrefslogtreecommitdiff
path: root/setup/smplayer.nsi
diff options
context:
space:
mode:
authorMateusz Łukasik <mati75@linuxmint.pl>2018-03-12 05:45:30 -0400
committerMateusz Łukasik <mati75@linuxmint.pl>2018-03-12 05:45:30 -0400
commitddef07cab834612d6470fbb4483afde40cd2d708 (patch)
tree183ca1da081ae14e3e05d7ae4374c484e0ff9def /setup/smplayer.nsi
Import smplayer_18.2.2~ds0.orig.tar.bz2
[dgit import orig smplayer_18.2.2~ds0.orig.tar.bz2]
Diffstat (limited to 'setup/smplayer.nsi')
-rw-r--r--setup/smplayer.nsi1354
1 files changed, 1354 insertions, 0 deletions
diff --git a/setup/smplayer.nsi b/setup/smplayer.nsi
new file mode 100644
index 0000000..f906895
--- /dev/null
+++ b/setup/smplayer.nsi
@@ -0,0 +1,1354 @@
+;Installer script for win32/win64 SMPlayer
+;Written by redxii (redxii@users.sourceforge.net)
+;Tested/Developed with Unicode NSIS 2.46.5/3.01
+
+; See http://nsis.sourceforge.net/Check_if_a_file_exists_at_compile_time for documentation
+!macro !defineifexist _VAR_NAME _FILE_NAME
+ !tempfile _TEMPFILE
+ !ifdef NSIS_WIN32_MAKENSIS
+ ; Windows - cmd.exe
+ !system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"'
+ !else
+ ; Posix - sh
+ !system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi'
+ !endif
+ !include '${_TEMPFILE}'
+ !delfile '${_TEMPFILE}'
+ !undef _TEMPFILE
+!macroend
+!define !defineifexist "!insertmacro !defineifexist"
+
+!ifndef VER_MAJOR | VER_MINOR | VER_BUILD
+ !error "Version information not defined (or incomplete). You must define: VER_MAJOR, VER_MINOR, VER_BUILD."
+!endif
+
+;Use this to make 3.0+ mandatory
+;!if 0x2999999 >= "${NSIS_PACKEDVERSION}"
+;!error "NSIS 3.0 or higher required"
+;!endif
+
+!if ${NSIS_PACKEDVERSION} > 0x2999999
+ Unicode true
+!endif
+
+;--------------------------------
+;Compressor
+
+ SetCompressor /SOLID lzma
+ SetCompressorDictSize 32
+
+;--------------------------------
+;Additional plugin folders
+
+ !addplugindir .
+ !addincludedir .
+
+;--------------------------------
+;Defines
+
+!ifdef VER_REVISION
+ !define SMPLAYER_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}.${VER_REVISION}"
+ !define SMPLAYER_PRODUCT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}.${VER_REVISION}"
+!else ifndef VER_REVISION
+ !define SMPLAYER_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}"
+ !define SMPLAYER_PRODUCT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}.0"
+!endif
+
+!ifdef WIN64
+ !define SMPLAYER_BUILD_DIR "smplayer-build64"
+!else
+ !define SMPLAYER_BUILD_DIR "smplayer-build"
+!endif
+
+ !define SMPLAYER_REG_KEY "Software\SMPlayer"
+ !define SMPLAYER_APP_PATHS_KEY "Software\Microsoft\Windows\CurrentVersion\App Paths\smplayer.exe"
+ !define SMPLAYER_DEF_PROGS_KEY "Software\Clients\Media\SMPlayer"
+
+ !define SMPLAYER_UNINST_EXE "uninst.exe"
+ !define SMPLAYER_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SMPlayer"
+
+ !define STATUS_DLL_NOT_FOUND "-1073741515"
+
+ ${!defineifexist} COMPILED_WITH_QT4 ${SMPLAYER_BUILD_DIR}\QtCore4.dll
+
+ ; Not the same as Qt, check file properties of the webkit dll if unsure
+!ifndef QT_WEBKIT_VERSION
+ !ifdef COMPILED_WITH_QT4
+ ; Qt Webkit version in 4.8.7
+ !define QT_WEBKIT_VERSION "4.9.4.0"
+ !else
+ !define QT_WEBKIT_VERSION "5.6.1.0"
+ !endif
+!endif
+
+;--------------------------------
+;General
+
+ ;Name and file
+ Name "SMPlayer ${SMPLAYER_VERSION}"
+ BrandingText "SMPlayer for Windows v${SMPLAYER_VERSION}"
+!ifdef WIN64
+ !ifdef COMPILED_WITH_QT4
+ OutFile "output\smplayer-${SMPLAYER_VERSION}-x64-Qt4.exe"
+ !else
+ OutFile "output\smplayer-${SMPLAYER_VERSION}-x64.exe"
+ !endif
+!else
+ !ifdef COMPILED_WITH_QT4
+ OutFile "output\smplayer-${SMPLAYER_VERSION}-win32-Qt4.exe"
+ !else
+ OutFile "output\smplayer-${SMPLAYER_VERSION}-win32.exe"
+ !endif
+!endif
+
+ ;Version tab properties
+ VIProductVersion "${SMPLAYER_PRODUCT_VERSION}"
+ VIAddVersionKey "ProductName" "SMPlayer"
+ VIAddVersionKey "ProductVersion" "${SMPLAYER_VERSION}"
+ VIAddVersionKey "FileVersion" "${SMPLAYER_VERSION}"
+ VIAddVersionKey "LegalCopyright" ""
+!ifdef WIN64
+ VIAddVersionKey "FileDescription" "SMPlayer Installer (64-bit)"
+!else
+ VIAddVersionKey "FileDescription" "SMPlayer Installer (32-bit)"
+!endif
+
+ ;Default installation folder
+!ifdef WIN64
+ InstallDir "$PROGRAMFILES64\SMPlayer"
+!else
+ InstallDir "$PROGRAMFILES\SMPlayer"
+!endif
+
+ ;Get installation folder from registry if available
+ InstallDirRegKey HKLM "${SMPLAYER_REG_KEY}" "Path"
+
+ ;Vista+ XML manifest, does not affect older OSes
+ RequestExecutionLevel admin
+
+ ShowInstDetails show
+ ShowUnInstDetails show
+
+;--------------------------------
+;Variables
+
+ Var Dialog_Reinstall
+ Var Inst_Type
+ Var Previous_Version
+ Var Previous_Version_State
+ Var Reinstall_ChgSettings
+ Var Reinstall_ChgSettings_State
+ Var Reinstall_Message
+ Var Reinstall_OverwriteButton
+ Var Reinstall_OverwriteButton_State
+ Var Reinstall_RemoveSettings
+ Var Reinstall_RemoveSettings_State
+ Var Reinstall_Uninstall
+ Var Reinstall_UninstallButton
+ Var Reinstall_UninstallButton_State
+!ifndef WIN64
+ Var Restore_Codecs
+!endif
+ Var Restore_YTDL
+ Var Restore_SMTube
+ Var SMPlayer_Path
+ Var SMPlayer_UnStrPath
+ Var SMPlayer_StartMenuFolder
+
+ Var Qt_Core_Source_Version
+ Var Qt_Core_Installed_Version
+ Var Qt_WebKit_Installed_Version
+
+ Var YTDL_Exit_Code
+
+ Var MMEngineFlags
+
+;--------------------------------
+;Interface Settings
+
+ ;Installer/Uninstaller icons
+ !define MUI_ICON "smplayer-orange-installer.ico"
+ !define MUI_UNICON "smplayer-orange-uninstaller.ico"
+
+ ;Misc
+ !define MUI_WELCOMEFINISHPAGE_BITMAP "smplayer-orange-wizard.bmp"
+ !define MUI_UNWELCOMEFINISHPAGE_BITMAP "smplayer-orange-wizard-un.bmp"
+ !define MUI_ABORTWARNING
+
+ ;Welcome page
+ !define MUI_WELCOMEPAGE_TITLE $(WelcomePage_Title)
+ !define MUI_WELCOMEPAGE_TEXT $(WelcomePage_Text)
+
+ ;License page
+ !define MUI_LICENSEPAGE_RADIOBUTTONS
+
+ ;Components page
+ !define MUI_COMPONENTSPAGE_SMALLDESC
+
+ ;Finish page
+ !define MUI_FINISHPAGE_LINK "http://www.smplayer.info"
+ !define MUI_FINISHPAGE_LINK_LOCATION "http://www.smplayer.info"
+ !define MUI_FINISHPAGE_NOREBOOTSUPPORT
+ !define MUI_FINISHPAGE_RUN $INSTDIR\smplayer.exe
+ !define MUI_FINISHPAGE_RUN_NOTCHECKED
+ !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\Release_notes.txt
+ !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+
+ ;Language Selection Dialog Settings
+ !define MUI_LANGDLL_REGISTRY_ROOT HKLM
+ !define MUI_LANGDLL_REGISTRY_KEY "${SMPLAYER_UNINST_KEY}"
+ !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
+
+ ;Memento Settings
+ !define MEMENTO_REGISTRY_ROOT HKLM
+ !define MEMENTO_REGISTRY_KEY "${SMPLAYER_REG_KEY}"
+
+ ;Start Menu Settings
+ !define MUI_STARTMENUPAGE_DEFAULTFOLDER "SMPlayer"
+ !define MUI_STARTMENUPAGE_NODISABLE
+ !define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
+ !define MUI_STARTMENUPAGE_REGISTRY_KEY "${SMPLAYER_UNINST_KEY}"
+ !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "NSIS:StartMenu"
+
+;--------------------------------
+;Include Modern UI and functions
+
+ !include MUI2.nsh
+ !include FileFunc.nsh
+ !include Memento.nsh
+ !include nsDialogs.nsh
+ !include Sections.nsh
+ !include WinVer.nsh
+ !include WordFunc.nsh
+ !include x64.nsh
+
+;--------------------------------
+;Pages
+
+ ;Install pages
+ #Welcome
+ !insertmacro MUI_PAGE_WELCOME
+
+ #License
+ !insertmacro MUI_PAGE_LICENSE "license.txt"
+
+ #Upgrade/Reinstall
+ Page custom PageReinstall PageReinstallLeave
+
+ #Components
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE PageComponentsPre
+ !insertmacro MUI_PAGE_COMPONENTS
+
+ #Install Directory
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
+ !insertmacro MUI_PAGE_DIRECTORY
+
+ #Start Menu
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE PageStartMenuPre
+ !insertmacro MUI_PAGE_STARTMENU "SMP_SMenu" $SMPlayer_StartMenuFolder
+
+ !insertmacro MUI_PAGE_INSTFILES
+ !insertmacro MUI_PAGE_FINISH
+
+ ;Uninstall pages
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE un.ConfirmPagePre
+ !insertmacro MUI_UNPAGE_CONFIRM
+ !insertmacro MUI_UNPAGE_INSTFILES
+ !insertmacro MUI_UNPAGE_FINISH
+
+;--------------------------------
+;Languages
+
+ !insertmacro MUI_LANGUAGE "English"
+ !insertmacro MUI_LANGUAGE "Albanian"
+ ;!insertmacro MUI_LANGUAGE "Amharic"
+ !insertmacro MUI_LANGUAGE "Arabic"
+ !insertmacro MUI_LANGUAGE "Basque"
+ !insertmacro MUI_LANGUAGE "Bulgarian"
+ !insertmacro MUI_LANGUAGE "Catalan"
+ !insertmacro MUI_LANGUAGE "Croatian"
+ !insertmacro MUI_LANGUAGE "Czech"
+ !insertmacro MUI_LANGUAGE "Danish"
+ !insertmacro MUI_LANGUAGE "Dutch"
+ !insertmacro MUI_LANGUAGE "Farsi"
+ !insertmacro MUI_LANGUAGE "Finnish"
+ !insertmacro MUI_LANGUAGE "French"
+ !insertmacro MUI_LANGUAGE "German"
+ !insertmacro MUI_LANGUAGE "Greek"
+ !insertmacro MUI_LANGUAGE "Hebrew"
+ !insertmacro MUI_LANGUAGE "Hungarian"
+ !insertmacro MUI_LANGUAGE "Italian"
+ !insertmacro MUI_LANGUAGE "Japanese"
+ !insertmacro MUI_LANGUAGE "Korean"
+ !insertmacro MUI_LANGUAGE "Malay"
+ !insertmacro MUI_LANGUAGE "Norwegian"
+ !insertmacro MUI_LANGUAGE "NorwegianNynorsk"
+ !insertmacro MUI_LANGUAGE "Polish"
+ !insertmacro MUI_LANGUAGE "Portuguese"
+ !insertmacro MUI_LANGUAGE "PortugueseBR"
+ !insertmacro MUI_LANGUAGE "Romanian"
+ !insertmacro MUI_LANGUAGE "Russian"
+ !insertmacro MUI_LANGUAGE "Serbian"
+ !insertmacro MUI_LANGUAGE "SimpChinese"
+ !insertmacro MUI_LANGUAGE "Slovak"
+ !insertmacro MUI_LANGUAGE "Slovenian"
+ !insertmacro MUI_LANGUAGE "Spanish"
+ !insertmacro MUI_LANGUAGE "Thai"
+ !insertmacro MUI_LANGUAGE "TradChinese"
+ !insertmacro MUI_LANGUAGE "Ukrainian"
+ !insertmacro MUI_LANGUAGE "Galician"
+ !insertmacro MUI_LANGUAGE "Indonesian"
+ !insertmacro MUI_LANGUAGE "Turkish"
+ !insertmacro MUI_LANGUAGE "Vietnamese"
+
+;Custom translations for setup
+
+ !insertmacro LANGFILE_INCLUDE "translations\english.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\albanian.nsh"
+ ;!insertmacro LANGFILE_INCLUDE "translations\amharic.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\arabic.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\basque.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\bulgarian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\catalan.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\croatian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\czech.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\danish.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\dutch.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\farsi.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\finnish.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\french.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\german.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\greek.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\hebrew.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\hungarian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\italian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\japanese.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\korean.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\malay.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\norwegian_nb.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\norwegian_nn.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\polish.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\portuguese.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\portuguesebrazil.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\romanian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\russian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\serbian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\simpchinese.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\slovak.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\slovenian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\spanish.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\thai.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\tradchinese.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\ukrainian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\galician.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\indonesian.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\turkish.nsh"
+ !insertmacro LANGFILE_INCLUDE "translations\vietnamese.nsh"
+
+;--------------------------------
+;Reserve Files
+
+ ;These files should be inserted before other files in the data block
+ ;Keep these lines before any File command
+ ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
+
+ !insertmacro MUI_RESERVEFILE_LANGDLL
+!if ! ${NSIS_PACKEDVERSION} > 0x2999999
+ ReserveFile /nonfatal "${NSISDIR}\Plugins\UserInfo.dll"
+!else
+ ReserveFile /nonfatal "${NSISDIR}\Plugins\x86-unicode\UserInfo.dll"
+!endif
+
+;--------------------------------
+;Installer Sections
+
+;--------------------------------
+;Main SMPlayer files
+Section $(Section_SMPlayer) SecSMPlayer
+
+ SectionIn RO
+
+ ${If} $Reinstall_Uninstall == 1
+
+ ${If} $Reinstall_UninstallButton_State == 1
+ Exec '"$SMPlayer_UnStrPath" /X'
+ Quit
+ ${ElseIf} $Reinstall_OverwriteButton_State == 1
+
+!ifndef WIN64
+ Call Backup_Codecs
+!endif
+ Call Backup_YTDL
+ Call Backup_SMTube
+
+ ${If} "$INSTDIR" == "$SMPlayer_Path"
+ ExecWait '"$SMPlayer_UnStrPath" /S /R _?=$SMPlayer_Path'
+ ${Else}
+ ExecWait '"$SMPlayer_UnStrPath" /S /R'
+ ${EndIf}
+
+ Sleep 2500
+
+ ${EndIf}
+
+ ${EndIf}
+
+ SetOutPath "$INSTDIR"
+ File "${SMPLAYER_BUILD_DIR}\*"
+
+ ;SMPlayer docs
+ SetOutPath "$INSTDIR\docs"
+ File /r "${SMPLAYER_BUILD_DIR}\docs\*.*"
+
+ ;Qt imageformats
+ SetOutPath "$INSTDIR\imageformats"
+ File /nonfatal /r "${SMPLAYER_BUILD_DIR}\imageformats\*.*"
+
+ ;Open fonts
+ ; SetOutPath "$INSTDIR\open-fonts"
+ ; File /r "${SMPLAYER_BUILD_DIR}\open-fonts\*.*"
+
+ ;Qt platforms (Qt 5+)
+!ifndef COMPILED_WITH_QT4
+ SetOutPath "$INSTDIR\platforms"
+ File /nonfatal /r "${SMPLAYER_BUILD_DIR}\platforms\*.*"
+!endif
+
+ ;SMPlayer key shortcuts
+ SetOutPath "$INSTDIR\shortcuts"
+ File /r "${SMPLAYER_BUILD_DIR}\shortcuts\*.*"
+
+SectionEnd
+
+;--------------------------------
+;Shortcuts
+SectionGroup $(ShortcutGroupTitle)
+
+ ${MementoSection} $(Section_DesktopShortcut) SecDesktopShortcut
+
+ SetOutPath "$INSTDIR"
+ CreateShortCut "$DESKTOP\SMPlayer.lnk" "$INSTDIR\smplayer.exe"
+
+ ${MementoSectionEnd}
+
+ ${MementoSection} $(Section_StartMenu) SecStartMenuShortcut
+
+ SetOutPath "$INSTDIR"
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN SMP_SMenu
+ CreateDirectory "$SMPROGRAMS\$SMPlayer_StartMenuFolder"
+ CreateShortCut "$SMPROGRAMS\$SMPlayer_StartMenuFolder\SMPlayer.lnk" "$INSTDIR\smplayer.exe"
+ ${If} $Restore_SMTube == 1
+ CreateShortCut "$SMPROGRAMS\$SMPlayer_StartMenuFolder\SMTube.lnk" "$INSTDIR\smtube.exe"
+ ${EndIf}
+ WriteINIStr "$SMPROGRAMS\$SMPlayer_StartMenuFolder\SMPlayer on the Web.url" "InternetShortcut" "URL" "http://www.smplayer.info"
+ CreateShortCut "$SMPROGRAMS\$SMPlayer_StartMenuFolder\Uninstall SMPlayer.lnk" "$INSTDIR\${SMPLAYER_UNINST_EXE}"
+ !insertmacro MUI_STARTMENU_WRITE_END
+
+ ${MementoSectionEnd}
+
+SectionGroupEnd
+
+;--------------------------------
+;MPlayer & MPV
+SectionGroup $(MPlayerMPVGroupTitle)
+
+ ${MementoSection} "MPlayer" SecMPlayer
+
+ SetOutPath "$INSTDIR\mplayer"
+ File /r /x mplayer.exe /x mencoder.exe /x mplayer64.exe /x mencoder64.exe /x *.exe.debug /x gdb.exe /x gdb64.exe /x vfw2menc.exe /x buildinfo /x buildinfo64 /x buildinfo-mencoder-32 /x buildinfo-mencoder-debug-32 /x buildinfo-mplayer-32 /x buildinfo-mplayer-debug-32 /x buildinfo-mencoder-64 /x buildinfo-mencoder-debug-64 /x buildinfo-mplayer-64 /x buildinfo-mplayer-debug-64 /x libaacs.dll /x libaacs64.dll /x libbdplus.dll /x libbdplus64.dll "${SMPLAYER_BUILD_DIR}\mplayer\*.*"
+!ifdef WIN64
+ File /oname=mplayer.exe "${SMPLAYER_BUILD_DIR}\mplayer\mplayer64.exe"
+ File /nonfatal /oname=libaacs.dll "${SMPLAYER_BUILD_DIR}\mplayer\libaacs64.dll"
+ File /nonfatal /oname=libbdplus.dll "${SMPLAYER_BUILD_DIR}\mplayer\libbdplus64.dll"
+ RMDir "$INSTDIR\mplayer\codecs"
+!else
+ File "${SMPLAYER_BUILD_DIR}\mplayer\mplayer.exe"
+ File /nonfatal "${SMPLAYER_BUILD_DIR}\mplayer\libaacs.dll"
+ File /nonfatal "${SMPLAYER_BUILD_DIR}\mplayer\libbdplus.dll"
+!endif
+
+ ${MementoSectionEnd}
+
+ ${MementoSection} "MPV" SecMPV
+
+ SetOutPath "$INSTDIR\mpv"
+!ifdef WIN64
+ File /r /x mpv.exe /x mpv.com /x mpv64.exe /x mpv64.com /x d3dcompiler_43.dll /x d3dcompiler_43-64.dll "${SMPLAYER_BUILD_DIR}\mpv\*.*"
+ File /oname=d3dcompiler_43.dll "${SMPLAYER_BUILD_DIR}\mpv\d3dcompiler_43-64.dll"
+ File /oname=mpv.exe "${SMPLAYER_BUILD_DIR}\mpv\mpv64.exe"
+ File /oname=mpv.com "${SMPLAYER_BUILD_DIR}\mpv\mpv64.com"
+!else
+ File /r /x mpv64.exe /x mpv64.com /x d3dcompiler_43-64.dll "${SMPLAYER_BUILD_DIR}\mpv\*.*"
+!endif
+
+ IfFileExists "$PLUGINSDIR\youtube-dl.exe" 0 YTDL
+ CopyFiles /SILENT "$PLUGINSDIR\youtube-dl.exe" "$INSTDIR\mpv"
+
+ ;DetailPrint $(YTDL_Update_Check)
+ NsExec::ExecToLog '"$INSTDIR\mpv\youtube-dl.exe" -U'
+
+ Goto check_ytdl
+
+ YTDL:
+ INetC::get /CONNECTTIMEOUT 30000 /POPUP "" "https://yt-dl.org/latest/youtube-dl.exe" "$INSTDIR\mpv\youtube-dl.exe" /END
+ Pop $R0
+ StrCmp $R0 "OK" +3 0
+ DetailPrint $(YTDL_DL_Failed)
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(YTDL_DL_Retry) /SD IDCANCEL IDRETRY YTDL IDCANCEL skip_ytdl
+
+ check_ytdl:
+ NsExec::Exec '"$INSTDIR\mpv\youtube-dl.exe" --version'
+ Pop $YTDL_Exit_Code
+
+ ${If} $YTDL_Exit_Code != "0"
+ DetailPrint $(YTDL_Error_Msg1)
+ ${If} $YTDL_Exit_Code == "${STATUS_DLL_NOT_FOUND}"
+ DetailPrint $(YTDL_Error_Msg2)
+ ${EndIf}
+
+ Sleep 5000
+ ${EndIf}
+
+ skip_ytdl:
+
+ ${MementoSectionEnd}
+
+SectionGroupEnd
+
+;--------------------------------
+;Icon themes
+${MementoSection} $(Section_IconThemes) SecThemes
+
+ SetOutPath "$INSTDIR\themes"
+ File /r "${SMPLAYER_BUILD_DIR}\themes\*.*"
+
+${MementoSectionEnd}
+
+;--------------------------------
+;Translations
+${MementoSection} $(Section_Translations) SecTranslations
+
+ SetOutPath "$INSTDIR\translations"
+ File /r "${SMPLAYER_BUILD_DIR}\translations\*.*"
+
+${MementoSectionEnd}
+
+Section -RestorePrograms
+
+ ${If} $Restore_SMTube == 1
+ DetailPrint $(Info_SMTube_Restore)
+ CreateDirectory "$INSTDIR\docs\smtube"
+ CreateDirectory "$INSTDIR\translations"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\smtube.exe" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\docs\smtube\*" "$INSTDIR\docs\smtube"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\translations\*" "$INSTDIR\translations"
+!ifdef COMPILED_WITH_QT4
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\QtWebKit4.dll" "$INSTDIR"
+!else
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\icuin*.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\icuuc*.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\icudt*.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5WebKit.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5Sql.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5Qml.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5Quick.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5Positioning.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5Multimedia.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5Sensors.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5WebChannel.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5WebKitWidgets.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5OpenGL.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5PrintSupport.dll" "$INSTDIR"
+ CopyFiles /SILENT "$PLUGINSDIR\smtubebak\Qt5MultimediaWidgets.dll" "$INSTDIR"
+!endif
+ ${EndIf}
+
+!ifndef WIN64
+ ${If} $Restore_Codecs == 1
+ DetailPrint $(Info_Codecs_Restore)
+ CopyFiles /SILENT "$PLUGINSDIR\codecbak\*" "$INSTDIR\mplayer\codecs"
+ ${EndIf}
+!endif
+
+SectionEnd
+
+;--------------------------------
+;Install/Uninstall information
+Section -Post
+
+ ;Uninstall file
+ WriteUninstaller "$INSTDIR\${SMPLAYER_UNINST_EXE}"
+
+ ;Store installed path & version
+ WriteRegStr HKLM "${SMPLAYER_REG_KEY}" "Path" "$INSTDIR"
+ WriteRegStr HKLM "${SMPLAYER_REG_KEY}" "Version" "${SMPLAYER_VERSION}"
+
+ ;Allows user to use 'start smplayer.exe'
+ WriteRegStr HKLM "${SMPLAYER_APP_PATHS_KEY}" "" "$INSTDIR\smplayer.exe"
+ WriteRegStr HKLM "${SMPLAYER_APP_PATHS_KEY}" "Path" "$INSTDIR"
+
+ ;Default Programs Registration (Vista & later)
+ ${If} ${AtLeastWinVista}
+ Call RegisterDefaultPrograms
+ ${EndIf}
+
+ ;Registry Uninstall information
+!ifdef WIN64
+ !ifdef COMPILED_WITH_QT4
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayName" "$(^Name) (x64) (Qt4)"
+ !else
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayName" "$(^Name) (x64)"
+ !endif
+!else
+ !ifdef COMPILED_WITH_QT4
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayName" "$(^Name) (Qt4)"
+ !else
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayName" "$(^Name)"
+ !endif
+!endif
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayIcon" "$INSTDIR\smplayer.exe"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayVersion" "${SMPLAYER_VERSION}"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "HelpLink" "http://www.smplayer.info/forum"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "Publisher" "Ricardo Villalba"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "UninstallString" "$INSTDIR\${SMPLAYER_UNINST_EXE}"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "URLInfoAbout" "http://www.smplayer.info"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "URLUpdateInfo" "http://www.smplayer.info"
+ WriteRegDWORD HKLM "${SMPLAYER_UNINST_KEY}" "NoModify" "1"
+ WriteRegDWORD HKLM "${SMPLAYER_UNINST_KEY}" "NoRepair" "1"
+
+ DetailPrint $(Info_Cleaning_Fontconfig)
+ SetDetailsPrint none
+ Delete "$LOCALAPPDATA\fontconfig\cache\CACHEDIR.TAG"
+ Delete "$LOCALAPPDATA\fontconfig\cache\*.cache*"
+ RMDir "$LOCALAPPDATA\fontconfig\cache"
+ RMDir "$LOCALAPPDATA\fontconfig"
+ SetDetailsPrint both
+
+ ${If} $Reinstall_RemoveSettings_State == 1
+ DetailPrint $(Info_Cleaning_SMPlayer)
+ SetDetailsPrint none
+ NsExec::Exec '"$INSTDIR\smplayer.exe" -delete-config'
+ SetDetailsPrint both
+ ${EndIf}
+
+ Sleep 2500
+
+!ifdef VER_REVISION
+ SetAutoClose false
+!endif
+
+SectionEnd
+
+${MementoSectionDone}
+
+;--------------------------------
+;Section descriptions
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecSMPlayer} $(Section_SMPlayer_Desc)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktopShortcut} $(Section_DesktopShortcut_Desc)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenuShortcut} $(Section_StartMenu_Desc)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecMPlayer} $(Section_MPlayer_Desc)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecMPV} $(Section_MPV_Desc)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecThemes} $(Section_IconThemes_Desc)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecTranslations} $(Section_Translations_Desc)
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
+;Macros
+
+!macro MacroAllExtensions _action
+ !insertmacro ${_action} ".3gp"
+ !insertmacro ${_action} ".aac"
+ !insertmacro ${_action} ".ac3"
+ !insertmacro ${_action} ".ape"
+ !insertmacro ${_action} ".asf"
+ !insertmacro ${_action} ".avi"
+ !insertmacro ${_action} ".bik"
+ !insertmacro ${_action} ".bin"
+ !insertmacro ${_action} ".dat"
+ !insertmacro ${_action} ".divx"
+ !insertmacro ${_action} ".dts"
+ !insertmacro ${_action} ".dv"
+ !insertmacro ${_action} ".dvr-ms"
+ !insertmacro ${_action} ".f4v"
+ !insertmacro ${_action} ".flac"
+ !insertmacro ${_action} ".flv"
+ !insertmacro ${_action} ".hdmov"
+ !insertmacro ${_action} ".iso"
+ !insertmacro ${_action} ".m1v"
+ !insertmacro ${_action} ".m2t"
+ !insertmacro ${_action} ".m2ts"
+ !insertmacro ${_action} ".mts"
+ !insertmacro ${_action} ".m2v"
+ !insertmacro ${_action} ".m3u"
+ !insertmacro ${_action} ".m3u8"
+ !insertmacro ${_action} ".m4a"
+ !insertmacro ${_action} ".m4v"
+ !insertmacro ${_action} ".mka"
+ !insertmacro ${_action} ".mkv"
+ !insertmacro ${_action} ".mov"
+ !insertmacro ${_action} ".mp3"
+ !insertmacro ${_action} ".mp4"
+ !insertmacro ${_action} ".mpeg"
+ !insertmacro ${_action} ".mpg"
+ !insertmacro ${_action} ".mpv"
+ !insertmacro ${_action} ".mqv"
+ !insertmacro ${_action} ".nsv"
+ !insertmacro ${_action} ".oga"
+ !insertmacro ${_action} ".ogg"
+ !insertmacro ${_action} ".ogm"
+ !insertmacro ${_action} ".ogv"
+ !insertmacro ${_action} ".ogx"
+ !insertmacro ${_action} ".pls"
+ !insertmacro ${_action} ".ra"
+ !insertmacro ${_action} ".ram"
+ !insertmacro ${_action} ".rec"
+ !insertmacro ${_action} ".rm"
+ !insertmacro ${_action} ".rmvb"
+ !insertmacro ${_action} ".smk"
+ !insertmacro ${_action} ".swf"
+ !insertmacro ${_action} ".thd"
+ !insertmacro ${_action} ".ts"
+ !insertmacro ${_action} ".vcd"
+ !insertmacro ${_action} ".vfw"
+ !insertmacro ${_action} ".vob"
+ !insertmacro ${_action} ".vp8"
+ !insertmacro ${_action} ".wav"
+ !insertmacro ${_action} ".webm"
+ !insertmacro ${_action} ".wma"
+ !insertmacro ${_action} ".wmv"
+ !insertmacro ${_action} ".wtv"
+!macroend
+
+!macro WriteRegStrSupportedTypes EXT
+ WriteRegStr HKLM "${SMPLAYER_DEF_PROGS_KEY}\Capabilities\FileAssociations" ${EXT} "MPlayerFileVideo"
+!macroend
+
+!macro MacroRemoveSMPlayer
+ ;Delete desktop and start menu shortcuts
+ SetDetailsPrint textonly
+ DetailPrint $(Info_Del_Shortcuts)
+ SetDetailsPrint listonly
+
+ SetShellVarContext all
+ Delete "$DESKTOP\SMPlayer.lnk"
+ Delete "$SMPROGRAMS\$SMPlayer_StartMenuFolder\SMPlayer.lnk"
+ Delete "$SMPROGRAMS\$SMPlayer_StartMenuFolder\SMTube.lnk"
+ Delete "$SMPROGRAMS\$SMPlayer_StartMenuFolder\SMPlayer on the Web.url"
+ Delete "$SMPROGRAMS\$SMPlayer_StartMenuFolder\Uninstall SMPlayer.lnk"
+ RMDir "$SMPROGRAMS\$SMPlayer_StartMenuFolder"
+
+ ;Delete directories recursively except for main directory
+ ;Do not recursively delete $INSTDIR
+ SetDetailsPrint textonly
+ DetailPrint $(Info_Del_Files)
+ SetDetailsPrint listonly
+
+ RMDir /r "$INSTDIR\docs"
+ RMDir /r "$INSTDIR\imageformats"
+ RMDir /r "$INSTDIR\mplayer"
+ RMDir /r "$INSTDIR\mpv"
+ ; RMDir /r "$INSTDIR\open-fonts"
+ RMDir /r "$INSTDIR\platforms"
+ RMDir /r "$INSTDIR\shortcuts"
+ RMDir /r "$INSTDIR\themes"
+ RMDir /r "$INSTDIR\translations"
+
+ ;Txt
+ Delete "$INSTDIR\Copying.txt"
+ Delete "$INSTDIR\Copying_BSD.txt"
+ Delete "$INSTDIR\Copying_libmaia.txt"
+ Delete "$INSTDIR\Copying_openssl.txt"
+ Delete "$INSTDIR\dvdmenus.txt"
+ Delete "$INSTDIR\Finding_subtitles.txt"
+ Delete "$INSTDIR\Install.txt"
+ Delete "$INSTDIR\Notes_about_mpv.txt"
+ Delete "$INSTDIR\Not_so_obvious_things.txt"
+ Delete "$INSTDIR\Portable_Edition.txt"
+ Delete "$INSTDIR\Readme.txt"
+ Delete "$INSTDIR\Release_notes.txt"
+ Delete "$INSTDIR\Watching_TV.txt"
+
+ ;Binaries
+ Delete "$INSTDIR\smplayer.exe"
+ Delete "$INSTDIR\smtube.exe"
+ Delete "$INSTDIR\dxlist.exe"
+ Delete "$INSTDIR\simple_web_server.exe"
+ Delete "$INSTDIR\icudt*.dll"
+ Delete "$INSTDIR\icuin*.dll"
+ Delete "$INSTDIR\icuuc*.dll"
+ Delete "$INSTDIR\libgcc_s_*.dll"
+ Delete "$INSTDIR\libstdc++-6.dll"
+ Delete "$INSTDIR\libwinpthread-1.dll"
+ Delete "$INSTDIR\mingwm10.dll"
+ Delete "$INSTDIR\zlib1.dll"
+ Delete "$INSTDIR\Qt*.dll"
+ Delete "$INSTDIR\libeay32.dll"
+ Delete "$INSTDIR\ssleay32.dll"
+ Delete "$INSTDIR\sample.avi"
+
+ ;Delete registry keys
+ SetDetailsPrint textonly
+ DetailPrint $(Info_Del_Registry)
+ SetDetailsPrint listonly
+
+ DeleteRegKey HKLM "${SMPLAYER_REG_KEY}"
+ DeleteRegKey HKLM "${SMPLAYER_APP_PATHS_KEY}"
+ DeleteRegKey HKLM "${SMPLAYER_DEF_PROGS_KEY}"
+ DeleteRegKey HKLM "${SMPLAYER_UNINST_KEY}"
+ DeleteRegKey HKCR "MPlayerFileVideo"
+ DeleteRegValue HKLM "Software\RegisteredApplications" "SMPlayer"
+
+ SetDetailsPrint both
+!macroend
+
+;--------------------------------
+;Shared functions
+
+!ifdef USE_RUNCHECK
+!macro RunCheckMacro UN
+Function ${UN}RunCheck
+
+ retry_runcheck:
+ FindWindow $0 "QWidget" "SMPlayer"
+ StrCmp $0 0 notRunning
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(SMPlayer_Is_Running) /SD IDCANCEL IDRETRY retry_runcheck
+ Abort
+ notrunning:
+
+FunctionEnd
+!macroend
+!insertmacro RunCheckMacro ""
+!insertmacro RunCheckMacro "un."
+!endif
+
+;--------------------------------
+;Installer functions
+
+Function .onInit
+
+!ifdef COMPILED_WITH_QT4
+ MessageBox MB_YESNO|MB_ICONEXCLAMATION "This build is compiled with Qt4 and is provided for compatibility with legacy CPUs (those without SSE2 or later instruction set support). If you do not meet these requirements, it is recommended to use the normal Qt5 releases.$\r$\n$\r$\nProceed with the installation?" /SD IDYES IDYES installoldcpu
+ Abort
+ installoldcpu:
+!endif
+
+ ${Unless} ${AtLeastWinVista}
+ ${AndUnless} ${AtLeastServicePack} 2
+ MessageBox MB_YESNO|MB_ICONSTOP $(OS_Not_Supported_VistaRequired) /SD IDNO IDYES installonoldwindows
+ Abort
+ installonoldwindows:
+ ${EndIf}
+
+!ifdef WIN64
+ ${IfNot} ${RunningX64}
+ MessageBox MB_OK|MB_ICONSTOP $(Win64_Required)
+ Abort
+ ${EndIf}
+
+ SetRegView 32
+ ClearErrors
+ ReadRegStr $R0 HKLM "${SMPLAYER_UNINST_KEY}" "UninstallString"
+
+ IfErrors +3 0
+ MessageBox MB_OK|MB_ICONSTOP $(Existing_32bitInst)
+ Abort
+
+ SetRegView 64
+!else
+ ${If} ${RunningX64}
+ SetRegView 64
+ ClearErrors
+ ReadRegStr $R0 HKLM "${SMPLAYER_UNINST_KEY}" "UninstallString"
+
+ IfErrors +3 0
+ MessageBox MB_OK|MB_ICONSTOP $(Existing_64bitInst)
+ Abort
+
+ SetRegView 32
+ ${EndIf}
+!endif
+
+ ;Check if setup is already running
+ System::Call 'kernel32::CreateMutexW(i 0, i 0, t "SMPlayerSetup") i .r1 ?e'
+ Pop $R0
+
+ StrCmp $R0 0 +3
+ MessageBox MB_OK|MB_ICONEXCLAMATION $(Installer_Is_Running)
+ Abort
+
+!ifdef USE_RUNCHECK
+ ;Check if SMPlayer is running
+ ;Allow skipping check using /NORUNCHECK
+ ${GetParameters} $R0
+ ${GetOptions} $R0 "/NORUNCHECK" $R1
+ IfErrors 0 +2
+ Call RunCheck
+!endif
+
+ ;Check for admin on < Vista
+ UserInfo::GetAccountType
+ Pop $R0
+ ${If} $R0 != "admin"
+ MessageBox MB_OK|MB_ICONSTOP $(Installer_No_Admin)
+ Abort
+ ${EndIf}
+
+ ;Setup language selection
+ !insertmacro MUI_LANGDLL_DISPLAY
+
+ Call LoadPreviousSettings
+
+ Call CheckPreviousVersion
+
+ SetShellVarContext all
+
+FunctionEnd
+
+Function .onInstSuccess
+
+ ${MementoSectionSave}
+
+ ExecShell "open" "http://www.smplayer.info/post-install.php?version=${SMPLAYER_VERSION}"
+
+FunctionEnd
+
+Function .onInstFailed
+
+ SetDetailsPrint textonly
+ DetailPrint $(Info_RollBack)
+ SetDetailsPrint listonly
+
+ !insertmacro MacroRemoveSMPlayer
+
+ Delete "$INSTDIR\${SMPLAYER_UNINST_EXE}"
+ RMDir "$INSTDIR"
+
+FunctionEnd
+
+Function .onSelChange
+
+ ${Unless} ${SectionIsSelected} ${SecMPlayer}
+ ${AndUnless} ${SectionIsSelected} ${SecMPV}
+ !insertmacro SelectSection ${SecMPlayer}
+ ${EndUnless}
+
+FunctionEnd
+
+Function CheckPreviousVersion
+
+ ClearErrors
+ ReadRegStr $Previous_Version HKLM "${SMPLAYER_REG_KEY}" "Version"
+ ReadRegStr $SMPlayer_UnStrPath HKLM "${SMPLAYER_UNINST_KEY}" "UninstallString"
+ ReadRegStr $SMPlayer_Path HKLM "${SMPLAYER_REG_KEY}" "Path"
+
+ ${IfNot} ${Errors}
+ StrCpy $Reinstall_Uninstall 1
+ !ifdef WIN64
+ ;Workaround for InstallDirRegKey on 64-bit
+ StrCpy $INSTDIR $SMPlayer_Path
+ !endif
+
+ ;Since we can't get input from a silent install to initialize the variables, prefer upgrading
+ ${If} ${Silent}
+ StrCpy $Reinstall_UninstallButton_State 0
+ StrCpy $Reinstall_OverwriteButton_State 1
+ ${EndIf}
+
+ Call RetrieveQtVersions
+ ${EndIf}
+
+ /* $Previous_Version_State Assignments:
+ $Previous_Version_State=0 This installer is the same version as the installed copy
+ $Previous_Version_State=1 A newer version than this installer is already installed
+ $Previous_Version_State=2 An older version than this installer is already installed */
+ ${VersionCompare} $Previous_Version ${SMPLAYER_VERSION} $Previous_Version_State
+
+ ${If} $Previous_Version_State == 0
+ StrCpy $Inst_Type $(Type_Reinstall)
+ ${ElseIf} $Previous_Version_State == 1
+ StrCpy $Inst_Type $(Type_Downgrade)
+ ${ElseIf} $Previous_Version_State == 2
+ StrCpy $Inst_Type $(Type_Upgrade)
+ ${EndIf}
+
+FunctionEnd
+
+!ifndef WIN64
+Function Backup_Codecs
+
+ ${IfNot} ${SectionIsSelected} ${SecMPlayer}
+ Return
+ ${EndIf}
+
+ IfFileExists "$SMPlayer_Path\mplayer\codecs\*.dll" 0 NoBackup
+ DetailPrint $(Info_Codecs_Backup)
+ CreateDirectory "$PLUGINSDIR\codecbak"
+ CopyFiles /SILENT "$SMPlayer_Path\mplayer\codecs\*" "$PLUGINSDIR\codecbak"
+ StrCpy $Restore_Codecs 1
+ Return
+ NoBackup:
+ StrCpy $Restore_Codecs 0
+
+FunctionEnd
+!endif
+
+Function Backup_YTDL
+
+ ${IfNot} ${SectionIsSelected} ${SecMPV}
+ Return
+ ${EndIf}
+
+ IfFileExists "$SMPlayer_Path\mpv\youtube-dl.exe" 0 NoBackup
+ CopyFiles /SILENT "$SMPlayer_Path\mpv\youtube-dl.exe" "$PLUGINSDIR\youtube-dl.exe"
+
+ StrCpy $Restore_YTDL 1
+ Return
+ NoBackup:
+ StrCpy $Restore_YTDL 0
+
+FunctionEnd
+
+Function Backup_SMTube
+
+ IfFileExists "$SMPlayer_Path\smtube.exe" 0 NoBackup
+ StrCmp "${QT_WEBKIT_VERSION}" "$Qt_WebKit_Installed_Version" 0 QtVerMismatch
+ DetailPrint $(Info_SMTube_Backup)
+ CreateDirectory "$PLUGINSDIR\smtubebak\translations"
+ CreateDirectory "$PLUGINSDIR\smtubebak\docs\smtube"
+ CopyFiles /SILENT "$SMPlayer_Path\smtube.exe" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\docs\smtube\*" "$PLUGINSDIR\smtubebak\docs\smtube"
+ CopyFiles /SILENT "$SMPlayer_Path\translations\smtube*.qm" "$PLUGINSDIR\smtubebak\translations"
+!ifdef COMPILED_WITH_QT4
+ CopyFiles /SILENT "$SMPlayer_Path\QtWebKit4.dll" "$PLUGINSDIR\smtubebak"
+!else
+ CopyFiles /SILENT "$SMPlayer_Path\icuin*.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\icuuc*.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\icudt*.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5WebKit.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5Sql.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5Qml.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5Quick.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5Positioning.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5Multimedia.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5Sensors.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5WebChannel.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5WebKitWidgets.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5OpenGL.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5PrintSupport.dll" "$PLUGINSDIR\smtubebak"
+ CopyFiles /SILENT "$SMPlayer_Path\Qt5MultimediaWidgets.dll" "$PLUGINSDIR\smtubebak"
+!endif
+ StrCpy $Restore_SMTube 1
+ Return
+ QtVerMismatch:
+ DetailPrint $(SMTube_Incompatible_Msg1)
+ ;DetailPrint $(SMTube_Incompatible_Msg2)
+ Sleep 15000
+ NoBackup:
+ StrCpy $Restore_SMTube 0
+
+FunctionEnd
+
+Function LoadPreviousSettings
+
+ ;Gets previous start menu folder name
+ !insertmacro MUI_STARTMENU_GETFOLDER "SMP_SMenu" $SMPlayer_StartMenuFolder
+
+ ${MementoSectionRestore}
+
+ ${If} ${AtMostWinXP}
+ IntOp $MMEngineFlags ${SF_SELECTED} | ${SF_RO}
+ !insertmacro UnSelectSection ${SecMPV}
+ SectionSetFlags ${SecMPlayer} $MMEngineFlags
+ SectionSetFlags ${SecMPV} ${SF_RO}
+ ${EndIf}
+
+FunctionEnd
+
+Function PageReinstall
+
+ ${If} $Reinstall_Uninstall != 1
+ Abort
+ ${EndIf}
+
+ nsDialogs::Create /NOUNLOAD 1018
+ Pop $Dialog_Reinstall
+
+ nsDialogs::SetRTL $(^RTL)
+
+ !insertmacro MUI_HEADER_TEXT $(Reinstall_Header_Text) $(Reinstall_Header_SubText)
+
+ ${NSD_CreateLabel} 0 0 225u 8u $(Reinstall_Msg1)
+
+ ${NSD_CreateText} 10u 15u 290u 14u "$SMPlayer_Path"
+ Pop $R0
+
+ ${NSD_CreateLabel} 0 40u 100u 8u $(Reinstall_Msg2)
+
+ ${NSD_CreateRadioButton} 10u 58u 200u 8u $(Reinstall_Overwrite)
+ Pop $Reinstall_OverwriteButton
+ ${NSD_CreateRadioButton} 10u 73u 200u 8u $(Reinstall_Uninstall)
+ Pop $Reinstall_UninstallButton
+
+ ${NSD_CreateCheckBox} 0 90u 100% 8u $(Reinstall_Msg4)
+ Pop $Reinstall_ChgSettings
+
+ ${NSD_CreateCheckBox} 0 102u 100% 8u $(Reinstall_Msg5)
+ Pop $Reinstall_RemoveSettings
+
+ ${NSD_CreateLabel} 0 121u 100% 16u
+ Pop $Reinstall_Message
+
+ SendMessage $Reinstall_OverwriteButton ${BM_SETCHECK} 1 0
+ EnableWindow $R0 0
+
+ ${If} $Reinstall_ChgSettings_State == 1
+ SendMessage $Reinstall_ChgSettings ${BM_SETCHECK} 1 0
+ ${Endif}
+
+ ${If} $Reinstall_RemoveSettings_State == 1
+ SendMessage $Reinstall_RemoveSettings ${BM_SETCHECK} 1 0
+ ${Endif}
+
+ ${NSD_OnClick} $Reinstall_OverwriteButton PageReinstallUpdate
+ ${NSD_OnClick} $Reinstall_UninstallButton PageReinstallUpdate
+ ${NSD_OnClick} $Reinstall_ChgSettings PageReinstallUpdate
+ ${NSD_OnClick} $Reinstall_RemoveSettings RemoveSettingsUpdate
+
+ Call PageReinstallUpdate
+
+ nsDialogs::Show
+
+FunctionEnd
+
+Function PageReinstallLeave
+
+ ${NSD_GetState} $Reinstall_OverwriteButton $Reinstall_OverwriteButton_State
+ ${NSD_GetState} $Reinstall_UninstallButton $Reinstall_UninstallButton_State
+ ${NSD_GetState} $Reinstall_ChgSettings $Reinstall_ChgSettings_State
+ ${NSD_GetState} $Reinstall_RemoveSettings $Reinstall_RemoveSettings_State
+
+FunctionEnd
+
+Function RemoveSettingsUpdate
+
+ ${NSD_GetState} $Reinstall_RemoveSettings $Reinstall_RemoveSettings_State
+
+ ${If} $Reinstall_RemoveSettings_State == 1
+ MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 $(Remove_Settings_Confirmation) /SD IDNO IDYES reset_done
+ ${NSD_SetState} $Reinstall_RemoveSettings 0
+ reset_done:
+ ${EndIf}
+
+FunctionEnd
+
+Function PageReinstallUpdate
+
+ ${NSD_GetState} $Reinstall_OverwriteButton $Reinstall_OverwriteButton_State
+ ${NSD_GetState} $Reinstall_UninstallButton $Reinstall_UninstallButton_State
+ ${NSD_GetState} $Reinstall_ChgSettings $Reinstall_ChgSettings_State
+
+ ${If} $Reinstall_OverwriteButton_State == 1
+
+ EnableWindow $Reinstall_ChgSettings 1
+ EnableWindow $Reinstall_RemoveSettings 1
+
+ GetDlgItem $R0 $HWNDPARENT 1
+ ${If} $Reinstall_ChgSettings_State != 1
+ SendMessage $R0 ${WM_SETTEXT} 0 "STR:$(StartBtn)"
+ ${NSD_SetText} $Reinstall_Message $(Reinstall_Msg3_1)
+ ${ElseIf} $Reinstall_ChgSettings_State == 1
+ SendMessage $R0 ${WM_SETTEXT} 0 "STR:$(^NextBtn)"
+ ${NSD_SetText} $Reinstall_Message $(Reinstall_Msg3_2)
+ ${EndIf}
+
+ ${ElseIf} $Reinstall_UninstallButton_State == 1
+
+ EnableWindow $Reinstall_ChgSettings 0
+ ${NSD_SetState} $Reinstall_ChgSettings 0
+
+ EnableWindow $Reinstall_RemoveSettings 0
+ ${NSD_SetState} $Reinstall_RemoveSettings 0
+
+ GetDlgItem $R0 $HWNDPARENT 1
+ SendMessage $R0 ${WM_SETTEXT} 0 "STR:$(^UninstallBtn)"
+
+ ${NSD_SetText} $Reinstall_Message $(Reinstall_Msg3_3)
+
+ ${EndIf}
+
+FunctionEnd
+
+Function PageComponentsPre
+
+ ${If} $Reinstall_Uninstall == 1
+ ${AndIf} $Reinstall_ChgSettings_State != 1
+ Abort
+ ${EndIf}
+
+FunctionEnd
+
+Function PageDirectoryPre
+
+ ${If} $Reinstall_Uninstall == 1
+ ${AndIf} $Reinstall_ChgSettings_State != 1
+ Abort
+ ${EndIf}
+
+FunctionEnd
+
+Function PageStartMenuPre
+
+ ${If} $Reinstall_Uninstall == 1
+ ${AndIf} $Reinstall_ChgSettings_State != 1
+ Abort
+ ${EndIf}
+
+ ${IfNot} ${SectionIsSelected} ${SecStartMenuShortcut}
+ Abort
+ ${EndIf}
+
+FunctionEnd
+
+Function RetrieveQtVersions
+
+ ; Get version of Qt5Core.dll from the build sources (smplayer-build/smplayer-build64)
+ ClearErrors
+!ifdef COMPILED_WITH_QT4
+ GetDLLVersionLocal ${SMPLAYER_BUILD_DIR}\QtCore4.dll $R0 $R1
+!else
+ GetDLLVersionLocal ${SMPLAYER_BUILD_DIR}\Qt5Core.dll $R0 $R1
+!endif
+ IntOp $R2 $R0 / 0x00010000
+ IntOp $R3 $R0 & 0x0000FFFF
+ IntOp $R4 $R1 / 0x00010000
+ IntOp $R5 $R1 & 0x0000FFFF
+ StrCpy $Qt_Core_Source_Version "$R2.$R3.$R4.$R5"
+ ;MessageBox MB_OK "Qt Core source version: $Qt_Core_Source_Version"
+
+ ; Get version of Qt Core.dll that is already installed
+ ClearErrors
+ GetDLLVersion "$INSTDIR\Qt5Core.dll" $R0 $R1
+ IfErrors 0 +2
+ GetDLLVersion "$INSTDIR\QtCore4.dll" $R0 $R1
+
+ IntOp $R2 $R0 / 0x00010000
+ IntOp $R3 $R0 & 0x0000FFFF
+ IntOp $R4 $R1 / 0x00010000
+ IntOp $R5 $R1 & 0x0000FFFF
+ StrCpy $Qt_Core_Installed_Version "$R2.$R3.$R4.$R5"
+ ;MessageBox MB_OK "Qt Core installed version: $Qt_Core_Installed_Version"
+
+ ; Get version of Qt WebKit.dll that is already installed
+ ClearErrors
+ GetDLLVersion "$INSTDIR\Qt5WebKit.dll" $R0 $R1
+ IfErrors 0 +2
+ GetDLLVersion "$INSTDIR\QtWebKit4.dll" $R0 $R1
+
+ IntOp $R2 $R0 / 0x00010000
+ IntOp $R3 $R0 & 0x0000FFFF
+ IntOp $R4 $R1 / 0x00010000
+ IntOp $R5 $R1 & 0x0000FFFF
+ StrCpy $Qt_WebKit_Installed_Version "$R2.$R3.$R4.$R5"
+ ;MessageBox MB_OK "Qt WebKit installed version: $Qt_WebKit_Installed_Version"
+
+FunctionEnd
+
+Function RegisterDefaultPrograms
+
+ WriteRegStr HKCR "MPlayerFileVideo\DefaultIcon" "" '"$INSTDIR\smplayer.exe",1'
+ WriteRegStr HKCR "MPlayerFileVideo\shell\enqueue" "" "Enqueue in SMPlayer"
+ WriteRegStr HKCR "MPlayerFileVideo\shell\enqueue\command" "" '"$INSTDIR\smplayer.exe" -add-to-playlist "%1"'
+ WriteRegStr HKCR "MPlayerFileVideo\shell\open" "FriendlyAppName" "SMPlayer Media Player"
+ WriteRegStr HKCR "MPlayerFileVideo\shell\open\command" "" '"$INSTDIR\smplayer.exe" "%1"'
+
+ ;Modify the list of extensions added in the MacroAllExtensions macro
+ WriteRegStr HKLM "${SMPLAYER_DEF_PROGS_KEY}" "" "SMPlayer"
+ WriteRegStr HKLM "${SMPLAYER_DEF_PROGS_KEY}\Capabilities" "ApplicationDescription" $(Application_Description)
+ WriteRegStr HKLM "${SMPLAYER_DEF_PROGS_KEY}\Capabilities" "ApplicationName" "SMPlayer"
+ WriteRegStr HKLM "Software\RegisteredApplications" "SMPlayer" "${SMPLAYER_DEF_PROGS_KEY}\Capabilities"
+ !insertmacro MacroAllExtensions WriteRegStrSupportedTypes
+
+FunctionEnd
+
+/*************************************** Uninstaller *******************************************/
+
+Section Uninstall
+
+ ;Make sure SMPlayer is installed from where the uninstaller is being executed.
+ IfFileExists "$INSTDIR\smplayer.exe" +2
+ Abort $(Uninstaller_InvalidDirectory)
+
+ SetDetailsPrint textonly
+ DetailPrint $(Info_Rest_Assoc)
+ SetDetailsPrint listonly
+
+ ;Don't restore file associations if reinstalling
+ ${un.GetParameters} $R0
+ ${un.GetOptionsS} $R0 "/R" $R1
+
+ IfErrors 0 +2
+ ExecWait '"$INSTDIR\smplayer.exe" -uninstall'
+
+ !insertmacro MacroRemoveSMPlayer
+
+ Delete "$INSTDIR\${SMPLAYER_UNINST_EXE}"
+ RMDir "$INSTDIR"
+
+SectionEnd
+
+;--------------------------------
+;Required functions
+
+!insertmacro un.GetParameters
+!insertmacro un.GetOptions
+
+;--------------------------------
+;Uninstaller functions
+
+Function un.onInit
+
+!ifdef WIN64
+ ${IfNot} ${RunningX64}
+ MessageBox MB_OK|MB_ICONSTOP $(Uninstaller_64bitOnly)
+ Abort
+ ${EndIf}
+
+ SetRegView 64
+!endif
+
+ ;Check for admin on < Vista
+ UserInfo::GetAccountType
+ Pop $R0
+ ${If} $R0 != "admin"
+ MessageBox MB_OK|MB_ICONSTOP $(Uninstaller_No_Admin)
+ Abort
+ ${EndIf}
+
+!ifdef USE_RUNCHECK
+ ;Check if SMPlayer is running
+ ;Allow skipping check using /NORUNCHECK
+ ${un.GetParameters} $R0
+ ${un.GetOptions} $R0 "/NORUNCHECK" $R1
+ IfErrors 0 +2
+ Call un.RunCheck
+!endif
+
+ ;Gets start menu folder name
+ !insertmacro MUI_STARTMENU_GETFOLDER "SMP_SMenu" $SMPlayer_StartMenuFolder
+
+ ;Get the stored language preference
+ !insertmacro MUI_UNGETLANGUAGE
+
+FunctionEnd
+
+Function un.ConfirmPagePre
+
+ ${un.GetParameters} $R0
+
+ ${un.GetOptionsS} $R0 "/X" $R1
+ ${Unless} ${Errors}
+ Abort
+ ${EndUnless}
+
+FunctionEnd