summaryrefslogtreecommitdiff
path: root/setup/smplayer-installer.nsi
diff options
context:
space:
mode:
authorMaia Kozheva <sikon@ubuntu.com>2010-05-09 21:22:23 +0700
committerMaia Kozheva <sikon@ubuntu.com>2010-05-09 21:22:23 +0700
commit99b53d44a60e3e934fc664152c115ae0d6e19920 (patch)
treee38698c486f6b4044125fa0d0bf33475d92e8f3a /setup/smplayer-installer.nsi
parent263b32f108c15cd1c55a8f4eb4704fac6553f1ac (diff)
Imported Upstream version 0.6.9
Diffstat (limited to 'setup/smplayer-installer.nsi')
-rw-r--r--setup/smplayer-installer.nsi888
1 files changed, 554 insertions, 334 deletions
diff --git a/setup/smplayer-installer.nsi b/setup/smplayer-installer.nsi
index 73a080a..d3b1257 100644
--- a/setup/smplayer-installer.nsi
+++ b/setup/smplayer-installer.nsi
@@ -1,5 +1,5 @@
; Installer script for win32 SMPlayer
-; Written by redxii <redxii1234@hotmail.com>
+; Written by redxii (redxii@users.sourceforge.net)
;--------------------------------
;Compressor
@@ -10,78 +10,74 @@
;--------------------------------
;Additional plugin folders
- !addplugindir plugins
+ !addplugindir .
;--------------------------------
-;Misc Defines
+;Defines
!ifdef VER_REVISION
- !define PRODUCT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}.${VER_REVISION}"
-!else
- !define PRODUCT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}"
+ !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
- !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SMPlayer"
- ; Fallback versions
+ !define SMPLAYER_APP_PATHS_KEY "Software\Microsoft\Windows\CurrentVersion\App Paths\smplayer.exe"
+ !define SMPLAYER_DEFPROGRAMS_KEY "Software\Clients\Media\SMPlayer\Capabilities"
+ !define SMPLAYER_REG_KEY "Software\SMPlayer"
+
+ !define SMPLAYER_UNINST_EXE "uninst.exe"
+ !define SMPLAYER_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SMPlayer"
+
+ ;Fallback versions
+ ;These can be changed in the compiler, otherwise
+ ;if not defined the values shown here will be used.
!ifndef DEFAULT_CODECS_VERSION
!define DEFAULT_CODECS_VERSION "windows-essential-20071007"
!endif
!ifndef WITH_MPLAYER
!ifndef DEFAULT_MPLAYER_VERSION
- !define DEFAULT_MPLAYER_VERSION "mplayer-svn-28311"
+ !define DEFAULT_MPLAYER_VERSION "mplayer-svn-28311-2"
!endif
!endif
;--------------------------------
-;Include Modern UI and functions
-
- !include MUI2.nsh
- !include Sections.nsh
- !include Memento.nsh
- !include WinVer.nsh
-
-;--------------------------------
;General
;Name and file
- Name "SMPlayer ${PRODUCT_VERSION}"
- BrandingText "SMPlayer for Windows v${PRODUCT_VERSION}"
+ Name "SMPlayer ${SMPLAYER_VERSION}"
+ BrandingText "SMPlayer for Windows v${SMPLAYER_VERSION}"
!ifdef WITH_MPLAYER
- OutFile "smplayer-${PRODUCT_VERSION}-win32.exe"
-!else
- OutFile "smplayer-${PRODUCT_VERSION}-win32-webdl.exe"
+ OutFile "smplayer-${SMPLAYER_VERSION}-win32.exe"
+!else ifndef WITH_MPLAYER
+ OutFile "smplayer-${SMPLAYER_VERSION}-win32-webdl.exe"
!endif
;Version tab properties
-!ifdef VER_REVISION
- VIProductVersion "${PRODUCT_VERSION}"
-!else
- VIProductVersion "${PRODUCT_VERSION}.0"
-!endif
+ VIProductVersion "${SMPLAYER_PRODUCT_VERSION}"
VIAddVersionKey "ProductName" "SMPlayer"
- VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}"
- VIAddVersionKey "Comments" "This installation was built with NSIS."
+ VIAddVersionKey "ProductVersion" "${SMPLAYER_VERSION}"
+ VIAddVersionKey "FileVersion" "${SMPLAYER_VERSION}"
+ VIAddVersionKey "LegalCopyright" ""
!ifdef WITH_MPLAYER
VIAddVersionKey "FileDescription" "SMPlayer Installer (w/ MPlayer)"
-!else
+!else ifndef WITH_MPLAYER
VIAddVersionKey "FileDescription" "SMPlayer Installer (MPlayer Web Downloader)"
!endif
- VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}"
- VIAddVersionKey "LegalCopyright" ""
;Default installation folder
InstallDir "$PROGRAMFILES\SMPlayer"
;Get installation folder from registry if available
- InstallDirRegKey HKLM "Software\SMPlayer" "Path"
-
- ;Show details
- ShowInstDetails show
- ShowUnInstDetails show
+ InstallDirRegKey HKLM "${SMPLAYER_REG_KEY}" "Path"
;Vista+ XML manifest, does not affect older OSes
RequestExecutionLevel admin
+ ShowInstDetails show
+ ShowUnInstDetails show
+
;--------------------------------
;Variables
@@ -90,22 +86,34 @@
!ifndef WITH_MPLAYER
Var MPLAYER_VERSION
!endif
+ Var PREVIOUS_VERSION
+ Var PREVIOUS_VERSION_STATE
+ Var REINSTALL_UNINSTALL
+ Var REINSTALL_UNINSTALLBUTTON
Var USERNAME
;--------------------------------
;Interface Settings
- !define MUI_ABORTWARNING
- !define MUI_COMPONENTSPAGE_SMALLDESC
+ ; License page
!define MUI_LICENSEPAGE_RADIOBUTTONS
+
+ ; Components page
+ !define MUI_COMPONENTSPAGE_SMALLDESC
+
+ ; Finish page
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
!define MUI_FINISHPAGE_RUN $INSTDIR\smplayer.exe
!define MUI_FINISHPAGE_RUN_NOTCHECKED
- !define MUI_FINISHPAGE_RUN_PARAMETERS http://88.191.30.130:8050
+ ;!define MUI_FINISHPAGE_RUN_PARAMETERS http://88.191.30.130:8050
!define MUI_FINISHPAGE_SHOWREADME $INSTDIR\Release_notes.txt
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME_TEXT "View Release Notes"
+
+ ; Misc
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
+ !define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp"
+ !define MUI_ABORTWARNING
;Installer/Uninstaller icons
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
@@ -113,12 +121,23 @@
;Language Selection Dialog Settings
!define MUI_LANGDLL_REGISTRY_ROOT HKLM
- !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
+ !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 Software\SMPlayer
+ !define MEMENTO_REGISTRY_KEY "${SMPLAYER_REG_KEY}"
+
+;--------------------------------
+;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
;--------------------------------
;Pages
@@ -126,22 +145,27 @@
;Install pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "smplayer-build\Copying.txt"
+ Page custom PageReinstall PageLeaveReinstall
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE PageComponentsPre
!insertmacro MUI_PAGE_COMPONENTS
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
!insertmacro MUI_PAGE_DIRECTORY
+ !define MUI_PAGE_CUSTOMFUNCTION_SHOW PageInstfilesShow
!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
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE un.FinishPagePre
+ !insertmacro MUI_UNPAGE_FINISH
;--------------------------------
-; Languages
+;Languages
!insertmacro MUI_LANGUAGE "Basque"
!insertmacro MUI_LANGUAGE "Catalan"
- !insertmacro MUI_LANGUAGE "SimpChinese"
- !insertmacro MUI_LANGUAGE "TradChinese"
!insertmacro MUI_LANGUAGE "Czech"
!insertmacro MUI_LANGUAGE "Danish"
!insertmacro MUI_LANGUAGE "Dutch"
@@ -152,7 +176,6 @@
!insertmacro MUI_LANGUAGE "Hebrew"
!insertmacro MUI_LANGUAGE "Hungarian"
!insertmacro MUI_LANGUAGE "Italian"
- !insertmacro MUI_LANGUAGE "Japanese"
!insertmacro MUI_LANGUAGE "Norwegian"
!insertmacro MUI_LANGUAGE "Polish"
!insertmacro MUI_LANGUAGE "Portuguese"
@@ -161,31 +184,27 @@
!insertmacro MUI_LANGUAGE "Slovenian"
!insertmacro MUI_LANGUAGE "Spanish"
-;--------------------------------
-; Translations for setup
-
- !include "translations\basque.nsh"
- !include "translations\catalan.nsh"
- !include "translations\chinese-simp.nsh"
- !include "translations\chinese-trad.nsh"
- !include "translations\czech.nsh"
- !include "translations\danish.nsh"
- !include "translations\dutch.nsh"
- !include "translations\english.nsh"
- !include "translations\finnish.nsh"
- !include "translations\french.nsh"
- !include "translations\german.nsh"
- !include "translations\hebrew.nsh"
- !include "translations\hungarian.nsh"
- !include "translations\italian.nsh"
- !include "translations\japanese.nsh"
- !include "translations\norwegian.nsh"
- !include "translations\polish.nsh"
- !include "translations\portuguese.nsh"
- !include "translations\russian.nsh"
- !include "translations\slovak.nsh"
- !include "translations\slovenian.nsh"
- !include "translations\spanish.nsh"
+; Custom translations for setup
+
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\basque.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\catalan.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\czech.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\danish.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\dutch.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\english.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\finnish.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\french.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\german.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\hebrew.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\hungarian.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\italian.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\norwegian.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\polish.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\portuguese.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\russian.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\slovak.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\slovenian.nsh"
+ !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\spanish.nsh"
;--------------------------------
;Reserve Files
@@ -200,43 +219,52 @@
;--------------------------------
;Installer Types
- InstType "Recommended"
- InstType "Minimum"
+ InstType "Typical"
+ InstType "Compact"
InstType "Full"
-;------------------------------------------------------------------------------------------------
+;--------------------------------
;Installer Sections
;--------------------------------
-; Main SMPlayer files
+;Main SMPlayer files
Section SMPlayer SMPlayer
SectionIn 1 2 3 RO
SetOutPath "$INSTDIR"
File "smplayer-build\*"
- File /r "smplayer-build\docs"
- File /r "smplayer-build\imageformats"
- File /r "smplayer-build\shortcuts"
+
+ ;SMPlayer docs
+ SetOutPath "$INSTDIR\docs"
+ File /r "smplayer-build\docs\*.*"
+
+ ;Qt imageformats
+ SetOutPath "$INSTDIR\imageformats"
+ File /r "smplayer-build\imageformats\*.*"
+
+ ;SMPlayer key shortcuts
+ SetOutPath "$INSTDIR\shortcuts"
+ File /r "smplayer-build\shortcuts\*.*"
+
+ SetOutPath "$PLUGINSDIR"
+ File 7za.exe
;Initialize to 0 if don't exist (based on error flag)
ClearErrors
- ReadRegDWORD $R0 HKLM Software\SMPlayer Installed_MPlayer
+ ReadRegDWORD $R0 HKLM "${SMPLAYER_REG_KEY}" Installed_MPlayer
${If} ${Errors}
- WriteRegDWORD HKLM Software\SMPlayer Installed_MPlayer 0x0
+ WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_MPlayer 0x0
${EndIf}
ClearErrors
- ReadRegDWORD $R0 HKLM Software\SMPlayer Installed_Codecs
+ ReadRegDWORD $R0 HKLM "${SMPLAYER_REG_KEY}" Installed_Codecs
${If} ${Errors}
- WriteRegDWORD HKLM Software\SMPlayer Installed_Codecs 0x0
+ WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_Codecs 0x0
${EndIf}
- SetOutPath "$PLUGINSDIR"
- File 7za.exe
-
SectionEnd
;--------------------------------
-; Desktop shortcut
+;Desktop shortcut
${MementoSection} "Desktop Shortcut" DesktopIcon
SectionIn 1 3
@@ -247,7 +275,7 @@ ${MementoSection} "Desktop Shortcut" DesktopIcon
${MementoSectionEnd}
;--------------------------------
-; Start menu shortcuts
+;Start menu shortcuts
${MementoSection} "Start Menu Shortcut" StartMenuIcon
SectionIn 1 3
@@ -256,83 +284,68 @@ ${MementoSection} "Start Menu Shortcut" StartMenuIcon
CreateDirectory "$SMPROGRAMS\SMPlayer"
CreateShortCut "$SMPROGRAMS\SMPlayer\SMPlayer.lnk" "$INSTDIR\smplayer.exe"
WriteINIStr "$SMPROGRAMS\SMPlayer\SMPlayer on the Web.url" "InternetShortcut" "URL" "http://smplayer.sf.net"
- CreateShortCut "$SMPROGRAMS\SMPlayer\Uninstall SMPlayer.lnk" "$INSTDIR\uninst.exe"
+ CreateShortCut "$SMPROGRAMS\SMPlayer\Uninstall SMPlayer.lnk" "$INSTDIR\${SMPLAYER_UNINST_EXE}"
${MementoSectionEnd}
;--------------------------------
-; MPlayer Components
+;MPlayer & MPlayer Codecs
SectionGroup /e "MPlayer Components"
-;--------------------------------
-; MPlayer
!ifdef WITH_MPLAYER
Section MPlayer MPlayer
SectionIn 1 2 3 RO
- SetOutPath "$INSTDIR"
- File /r "smplayer-build\mplayer"
+ SetOutPath "$INSTDIR\mplayer"
+ File /r "smplayer-build\mplayer\*.*"
- WriteRegDWORD HKLM Software\SMPlayer Installed_MPlayer 0x1
+ WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_MPlayer 0x1
SectionEnd
-!else
+!else ifndef WITH_MPLAYER
Section MPlayer MPlayer
SectionIn 1 2 3 RO
- AddSize 15300
-
- ReadRegDWORD $0 HKLM Software\SMPlayer Installed_MPlayer
-
- IntCmp $0 1 mplayerInstalled mplayerNotInstalled
- mplayerInstalled:
- MessageBox MB_YESNO $(MPLAYER_IS_INSTALLED) /SD IDNO IDYES mplayerNotInstalled IDNO done
- mplayerNotInstalled:
- ${IfNot} ${FileExists} "$PLUGINSDIR\version-info"
- Call getVerInfo
- ${EndIf}
+ AddSize 16800
- IfFileExists "$PLUGINSDIR\version-info" 0 noVerInfo
- ClearErrors
- ReadINIStr $MPLAYER_VERSION "$PLUGINSDIR\version-info" smplayer mplayer
+ Call GetVerInfo
- IfErrors 0 done_ver_info
- DetailPrint $(VERINFO_IS_MISSING)
- ;Default Value if version-info exists but version string is missing from version-info
- StrCpy $MPLAYER_VERSION ${DEFAULT_MPLAYER_VERSION}
- Goto done_ver_info
+ ;Read from version-info
+ ;If it was unable to download, set version to that defined in DEFAULT_MPLAYER_VERSION
+ ${If} ${FileExists} "$PLUGINSDIR\version-info"
+ ReadINIStr $MPLAYER_VERSION "$PLUGINSDIR\version-info" smplayer mplayer
+ ${Else}
+ StrCpy $MPLAYER_VERSION ${DEFAULT_MPLAYER_VERSION}
+ ${EndIf}
- noVerInfo:
- ;Default Value if version-info doesn't exist
- StrCpy $MPLAYER_VERSION ${DEFAULT_MPLAYER_VERSION}
+ retry_mplayer:
- done_ver_info:
+ DetailPrint $(MPLAYER_IS_DOWNLOADING)
+ inetc::get /timeout 30000 /resume "" /caption $(MPLAYER_IS_DOWNLOADING) /banner "Downloading $MPLAYER_VERSION.7z" \
+ "http://downloads.sourceforge.net/smplayer/$MPLAYER_VERSION.7z?big_mirror=0" \
+ "$PLUGINSDIR\$MPLAYER_VERSION.7z"
+ Pop $R0
+ StrCmp $R0 OK 0 check_mplayer
- DetailPrint $(MPLAYER_IS_DOWNLOADING)
- inetc::get /timeout 30000 /resume "" /caption $(MPLAYER_IS_DOWNLOADING) /banner "Downloading $MPLAYER_VERSION.7z" \
- "http://downloads.sourceforge.net/smplayer/$MPLAYER_VERSION.7z?big_mirror=0" \
- "$PLUGINSDIR\$MPLAYER_VERSION.7z"
- Pop $R0
- StrCmp $R0 OK 0 check_mplayer
+ ;Extract
+ nsExec::Exec '"$PLUGINSDIR\7za.exe" x "$PLUGINSDIR\$MPLAYER_VERSION.7z" -y -o"$PLUGINSDIR"'
- ;Extract
- nsExec::Exec '"$PLUGINSDIR\7za.exe" x "$PLUGINSDIR\$MPLAYER_VERSION.7z" -y -o"$PLUGINSDIR"'
-
- ;Copy
- CreateDirectory "$INSTDIR\mplayer"
- CopyFiles /SILENT "$PLUGINSDIR\$MPLAYER_VERSION\*" "$INSTDIR\mplayer"
+ ;Copy
+ CreateDirectory "$INSTDIR\mplayer"
+ CopyFiles /SILENT "$PLUGINSDIR\$MPLAYER_VERSION\*" "$INSTDIR\mplayer"
check_mplayer:
- ;This label does not necessarily mean there was a download error, so check first
- ${If} $R0 != "OK"
- DetailPrint "$(MPLAYER_DL_FAILED) $R0."
- ${EndIf}
-
- IfFileExists "$INSTDIR\mplayer\mplayer.exe" mplayerInstSuccess mplayerInstFailed
- mplayerInstSuccess:
- WriteRegDWORD HKLM Software\SMPlayer Installed_MPlayer 0x1
- Goto done
- mplayerInstFailed:
- Abort $(MPLAYER_INST_FAILED)
+ ;This label does not necessarily mean there was a download error, so check first
+ ${If} $R0 != "OK"
+ DetailPrint $(MPLAYER_DL_FAILED)
+ ${EndIf}
+
+ IfFileExists "$INSTDIR\mplayer\mplayer.exe" mplayerInstSuccess mplayerInstFailed
+ mplayerInstSuccess:
+ WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_MPlayer 0x1
+ Goto done
+ mplayerInstFailed:
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(MPLAYER_DL_RETRY) /SD IDCANCEL IDRETRY retry_mplayer
+ Abort $(MPLAYER_INST_FAILED)
done:
@@ -340,65 +353,52 @@ SectionGroup /e "MPlayer Components"
!endif
;--------------------------------
-; Binary codecs
- Section /o "Optional Codecs" Codecs
+;MPlayer codecs
+ Section /o "Binary Codecs" Codecs
SectionIn 3
AddSize 22300
- ReadRegDWORD $1 HKLM Software\SMPlayer Installed_Codecs
-
- IntCmp $1 1 mplayerCodecsInstalled mplayerCodecsNotInstalled
- mplayerCodecsInstalled:
- MessageBox MB_YESNO $(CODECS_IS_INSTALLED) /SD IDNO IDYES mplayerCodecsNotInstalled IDNO done
- mplayerCodecsNotInstalled:
- ${IfNot} ${FileExists} "$PLUGINSDIR\version-info"
- Call getVerInfo
- ${EndIf}
-
- IfFileExists "$PLUGINSDIR\version-info" 0 noVerInfo
- ClearErrors
- ReadINIStr $CODEC_VERSION "$PLUGINSDIR\version-info" smplayer mplayercodecs
+ Call GetVerInfo
- IfErrors 0 done_ver_info
- DetailPrint $(VERINFO_IS_MISSING)
- ;Default Value if version-info exists but version string is missing from version-info
- StrCpy $CODEC_VERSION ${DEFAULT_CODECS_VERSION}
- Goto done_ver_info
+ ;Read from version-info
+ ;If it was unable to download, set version to that defined in DEFAULT_CODECS_VERSION
+ ${If} ${FileExists} "$PLUGINSDIR\version-info"
+ ReadINIStr $CODEC_VERSION "$PLUGINSDIR\version-info" smplayer mplayercodecs
+ ${Else}
+ StrCpy $CODEC_VERSION ${DEFAULT_CODECS_VERSION}
+ ${EndIf}
- noVerInfo:
- ;Default Value if version-info doesn't exist
- StrCpy $CODEC_VERSION ${DEFAULT_CODECS_VERSION}
+ retry_codecs:
- done_ver_info:
+ DetailPrint $(CODECS_IS_DOWNLOADING)
+ inetc::get /timeout 30000 /resume "" /caption $(CODECS_IS_DOWNLOADING) /banner "Downloading $CODEC_VERSION.zip" \
+ "http://www.mplayerhq.hu/MPlayer/releases/codecs/$CODEC_VERSION.zip" \
+ "$PLUGINSDIR\$CODEC_VERSION.zip"
+ Pop $R0
+ StrCmp $R0 OK 0 check_codecs
- DetailPrint $(CODECS_IS_DOWNLOADING)
- inetc::get /timeout 30000 /resume "" /caption $(CODECS_IS_DOWNLOADING) /banner "Downloading $CODEC_VERSION.zip" \
- "http://www.mplayerhq.hu/MPlayer/releases/codecs/$CODEC_VERSION.zip" \
- "$PLUGINSDIR\$CODEC_VERSION.zip"
- Pop $R0
- StrCmp $R0 OK 0 check_codecs
+ ;Extract
+ nsExec::Exec '"$PLUGINSDIR\7za.exe" x "$PLUGINSDIR\$CODEC_VERSION.zip" -y -o"$PLUGINSDIR"'
- ;Extract
- nsExec::Exec '"$PLUGINSDIR\7za.exe" x "$PLUGINSDIR\$CODEC_VERSION.zip" -y -o"$PLUGINSDIR"'
-
- ;Copy
- CreateDirectory "$INSTDIR\mplayer\codecs"
- CopyFiles /SILENT "$PLUGINSDIR\$CODEC_VERSION\*" "$INSTDIR\mplayer\codecs"
+ ;Copy
+ CreateDirectory "$INSTDIR\mplayer\codecs"
+ CopyFiles /SILENT "$PLUGINSDIR\$CODEC_VERSION\*" "$INSTDIR\mplayer\codecs"
check_codecs:
- ;This label does not necessarily mean there was a download error, so check first
- ${If} $R0 != "OK"
- DetailPrint "$(CODECS_DL_FAILED) $R0."
- ${EndIf}
-
- IfFileExists "$INSTDIR\mplayer\codecs\*.dll" codecsInstSuccess codecsInstFailed
- codecsInstSuccess:
- WriteRegDWORD HKLM Software\SMPlayer Installed_Codecs 0x1
- Goto done
- codecsInstFailed:
- DetailPrint $(CODECS_INST_FAILED)
- WriteRegDWORD HKLM Software\SMPlayer Installed_Codecs 0x0
- Sleep 5000
+ ;This label does not necessarily mean there was a download error, so check first
+ ${If} $R0 != "OK"
+ DetailPrint $(CODECS_DL_FAILED)
+ ${EndIf}
+
+ IfFileExists "$INSTDIR\mplayer\codecs\*.dll" codecsInstSuccess codecsInstFailed
+ codecsInstSuccess:
+ WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_Codecs 0x1
+ Goto done
+ codecsInstFailed:
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(CODECS_DL_RETRY) /SD IDCANCEL IDRETRY retry_codecs
+ DetailPrint $(CODECS_INST_FAILED)
+ WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_Codecs 0x0
+ Sleep 5000
done:
@@ -407,112 +407,104 @@ SectionGroup /e "MPlayer Components"
SectionGroupEnd
;--------------------------------
-; Icon Themes
+;Icon themes
${MementoSection} "Icon Themes" Themes
SectionIn 1 3
- SetOutPath "$INSTDIR"
- File /r "smplayer-build\themes"
+ SetOutPath "$INSTDIR\themes"
+ File /r "smplayer-build\themes\*.*"
${MementoSectionEnd}
;--------------------------------
-; Translations
+;Translations
${MementoSection} Translations Translations
SectionIn 1 3
- SetOutPath "$INSTDIR"
- File /r "smplayer-build\translations"
+ SetOutPath "$INSTDIR\translations"
+ File /r "smplayer-build\translations\*.*"
${MementoSectionEnd}
+;--------------------------------
+;Install/Uninstall information
Section -Post
;Uninstall file
- WriteUninstaller "$INSTDIR\uninst.exe"
+ WriteUninstaller "$INSTDIR\${SMPLAYER_UNINST_EXE}"
- ;Store installed path
- WriteRegStr HKLM "Software\SMPlayer" "Path" "$INSTDIR"
- WriteRegStr HKLM "Software\SMPlayer" "Version" "${PRODUCT_VERSION}"
+ ;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"
+
+ ;Registry entries needed for Default Programs in Vista & later
${If} ${AtLeastWinVista}
- Call defaultProgramsReg
+ Call DefaultProgramsReg
${EndIf}
;Registry Uninstall information
- WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
- WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\smplayer.exe"
- WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
- WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "HelpLink" "http://smplayer.sourceforge.net/forums"
- WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "Publisher" "RVM"
- WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
- WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "http://smplayer.sf.net"
- WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "http://smplayer.sf.net"
- WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" "NoModify" "1"
- WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" "NoRepair" "1"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayName" "$(^Name)"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayIcon" "$INSTDIR\smplayer.exe"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayVersion" "${SMPLAYER_VERSION}"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "HelpLink" "http://smplayer.berlios.de/forum"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "Publisher" "RVM"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "UninstallString" "$INSTDIR\${SMPLAYER_UNINST_EXE}"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "URLInfoAbout" "http://smplayer.sf.net"
+ WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "URLUpdateInfo" "http://smplayer.sf.net"
+ WriteRegDWORD HKLM "${SMPLAYER_UNINST_KEY}" "NoModify" "1"
+ WriteRegDWORD HKLM "${SMPLAYER_UNINST_KEY}" "NoRepair" "1"
SectionEnd
${MementoSectionDone}
;--------------------------------
-; Section descriptions
+;Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SMPlayer} "SMPlayer, shared libraries, and documentation."
!insertmacro MUI_DESCRIPTION_TEXT ${DesktopIcon} "Creates a shortcut on the desktop."
!insertmacro MUI_DESCRIPTION_TEXT ${StartMenuIcon} "Creates start menu shortcuts."
!ifdef WITH_MPLAYER
!insertmacro MUI_DESCRIPTION_TEXT ${MPlayer} "The engine behind SMPlayer, required for playback."
-!else
- !insertmacro MUI_DESCRIPTION_TEXT ${MPlayer} "Downloads/installs mplayer; requires an active internet connection. Required for playback."
+!else ifndef WITH_MPLAYER
+ !insertmacro MUI_DESCRIPTION_TEXT ${MPlayer} "Downloads/installs MPlayer; requires an active internet connection. Required for playback."
!endif
- !insertmacro MUI_DESCRIPTION_TEXT ${Codecs} "Downloads/installs optional codecs for mplayer; requires an active internet connection."
- !insertmacro MUI_DESCRIPTION_TEXT ${Themes} "Stylish icon themes for SMPlayer."
- !insertmacro MUI_DESCRIPTION_TEXT ${Translations} "Translations for SMPlayer."
+ !insertmacro MUI_DESCRIPTION_TEXT ${Codecs} "Downloads/installs optional binary codecs for MPlayer; requires an active internet connection."
+ !insertmacro MUI_DESCRIPTION_TEXT ${Themes} "Additional icon themes for SMPlayer."
+ !insertmacro MUI_DESCRIPTION_TEXT ${Translations} "Translations for the SMPlayer interface && help into 30+ additional languages."
!insertmacro MUI_FUNCTION_DESCRIPTION_END
;--------------------------------
-;Installer Functions
+;Installer functions
Function .onInit
/* Check if setup is already running */
- System::Call 'kernel32::CreateMutexA(i 0, i 0, t "MPlayerSMPlayer") i .r1 ?e'
+ System::Call 'kernel32::CreateMutexW(i 0, i 0, t "MPlayerSMPlayer") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION $(SMPLAYER_INSTALLER_IS_RUNNING)
Abort
- /* Check unsupported Windows OSes */
- ${Unless} ${AtLeastWin2000}
- MessageBox MB_YESNO|MB_ICONSTOP $(SMPLAYER_INSTALLER_UNSUPPORTED_OS) /SD IDNO IDYES installonoldwindows
- Abort
- installonoldwindows:
- ${EndUnless}
-
/* Privileges Check */
Call CheckUserRights
- ;Check for admin (mimic old Inno Setup behavior... non-admin installation maybe later..)
+ ;Check for admin (mimic old Inno Setup behavior)
${If} $IS_ADMIN == 0
MessageBox MB_OK|MB_ICONSTOP $(SMPLAYER_INSTALLER_NO_ADMIN)
Abort
- ${EndIf}
-
- /* Uninstall previous version */
- ReadRegStr $R0 HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
- StrCmp $R0 "" nouninst
-
- MessageBox MB_YESNO|MB_ICONEXCLAMATION $(SMPLAYER_INSTALLER_PREV_VERSION) IDNO nouninst
-
- ClearErrors
- ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
- nouninst:
+ ${EndIf}
+ /* Ask for setup language */
!insertmacro MUI_LANGDLL_DISPLAY
- ${MementoSectionRestore}
+ Call CheckPreviousVersion
+
+ Call LoadPreviousSettings
FunctionEnd
@@ -526,7 +518,7 @@ Function .onInstFailed
Call UninstallSMPlayer
- Delete "$INSTDIR\uninst.exe"
+ Delete "$INSTDIR\${SMPLAYER_UNINST_EXE}"
RMDir "$INSTDIR"
FunctionEnd
@@ -544,76 +536,18 @@ Function .onSelChange
FunctionEnd
-Function defaultProgramsReg
+Function CheckPreviousVersion
- ;HKEY_CLASSES_ROOT ProgId registration
- 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"'
+ ReadRegStr $PREVIOUS_VERSION HKLM "${SMPLAYER_REG_KEY}" "Version"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities" "ApplicationDescription" "SMPlayer is a complete front-end for MPlayer, from basic features like playing videos, DVDs, VCDs to more advanced features like support for MPlayer filters, edl lists, and more."
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities" "ApplicationName" "SMPlayer"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".3gp" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".ac3" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".ape" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".asf" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".avi" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".bin" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".dat" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".divx" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".dv" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".dvr-ms" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".flv" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".iso" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".m1v" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".m2v" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".m4v" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".mkv" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".mov" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".mp3" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".mp4" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".mpeg" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".mpg" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".mpv" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".mqv" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".nsv" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".ogg" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".ogm" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".ra" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".ram" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".rmvb" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".ts" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".vcd" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".vfw" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".vob" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".wav" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".wma" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\Clients\Media\SMPlayer\Capabilities\FileAssociations" ".wmv" "MPlayerFileVideo"
- WriteRegStr HKLM "Software\RegisteredApplications" "SMPlayer" "Software\Clients\Media\SMPlayer\Capabilities"
+ ${VersionCompare} $PREVIOUS_VERSION ${SMPLAYER_VERSION} $PREVIOUS_VERSION_STATE
+ ;$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
FunctionEnd
-Function getVerInfo
-
- DetailPrint $(VERINFO_IS_DOWNLOADING)
- inetc::get /timeout 30000 /resume "" /silent "http://smplayer.sourceforge.net/mplayer-version-info" \
- "$PLUGINSDIR\version-info"
- Pop $R0
- StrCmp $R0 OK +2
- DetailPrint "$(VERINFO_DL_FAILED) $R0."
-
-FunctionEnd
-
-;End Installer Sections
-;------------------------------------------------------------------------------------------------
-
-/************************************************************************************************
-************************************** Shared Functions *****************************************
-************************************************************************************************/
-!macro CheckUserRightsMacro un
-Function ${un}CheckUserRights
+Function CheckUserRights
ClearErrors
UserInfo::GetName
@@ -636,23 +570,245 @@ Function ${un}CheckUserRights
${EndSwitch}
FunctionEnd
-!macroend
-!insertmacro CheckUserRightsMacro ""
-!insertmacro CheckUserRightsMacro "un."
-!macro UninstallSMPlayerMacro un
-Function ${un}UninstallSMPlayer
+Function DefaultProgramsReg
- ;Delete registry keys
- SetDetailsPrint textonly
- DetailPrint "Deleting Registry Keys..."
- SetDetailsPrint listonly
+ ;HKEY_CLASSES_ROOT ProgId registration
+ 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"'
- DeleteRegKey HKLM "${PRODUCT_UNINST_KEY}"
- DeleteRegKey HKCR "MPlayerFileVideo"
- DeleteRegKey HKLM "Software\Clients\Media\SMPlayer"
- DeleteRegValue HKLM "Software\RegisteredApplications" "SMPlayer"
- DeleteRegKey HKLM "Software\SMPlayer"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}" "ApplicationDescription" $(APPLICATION_DESCRIPTION)
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}" "ApplicationName" "SMPlayer"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".3gp" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ac3" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ape" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".asf" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".avi" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".bin" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".dat" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".divx" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".dv" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".dvr-ms" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".flac" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".flv" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".iso" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m1v" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m2t" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m2ts" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m2v" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m3u" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m3u8" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m4v" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mkv" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mov" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mp3" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mp4" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mpeg" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mpg" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mpv" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mqv" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".nsv" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ogg" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ogm" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ogv" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".pls" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ra" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ram" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".rec" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".rm" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".rmvb" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".swf" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ts" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".vcd" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".vfw" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".vob" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".wav" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".wma" "MPlayerFileVideo"
+ WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".wmv" "MPlayerFileVideo"
+ WriteRegStr HKLM "Software\RegisteredApplications" "SMPlayer" "${SMPLAYER_DEFPROGRAMS_KEY}"
+
+FunctionEnd
+
+Function GetVerInfo
+
+ IfFileExists "$PLUGINSDIR\version-info" end_dl_ver_info 0
+ DetailPrint $(VERINFO_IS_DOWNLOADING)
+ inetc::get /timeout 30000 /resume "" /silent "http://smplayer.sourceforge.net/mplayer-version-info" \
+ "$PLUGINSDIR\version-info"
+ Pop $R0
+ StrCmp $R0 OK +2
+ DetailPrint $(VERINFO_DL_FAILED)
+
+ end_dl_ver_info:
+
+FunctionEnd
+
+Function LoadPreviousSettings
+
+ ;MPlayer codecs section doesn't use Memento so we need to restore it manually
+ ReadRegStr $R0 HKLM "${SMPLAYER_REG_KEY}" "Installed_Codecs"
+ ${If} $R0 == 1
+ !insertmacro SelectSection ${Codecs}
+ ${EndIf}
+
+ ${MementoSectionRestore}
+
+FunctionEnd
+
+Function PageReinstall
+
+ ${If} $PREVIOUS_VERSION == ""
+ Abort
+ ${EndIf}
+
+ nsDialogs::Create /NOUNLOAD 1018
+ Pop $0
+
+ ${If} $PREVIOUS_VERSION_STATE == 2
+
+ !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install SMPlayer."
+ nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "An older version of SMPlayer is installed on your system. Select the operation you want to perform and click Next to continue."
+ Pop $R0
+ nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "Upgrade SMPlayer using previous settings (recommended)"
+ Pop $REINSTALL_UNINSTALLBUTTON
+ nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "Change settings (advanced)"
+ Pop $R0
+
+ ${If} $REINSTALL_UNINSTALL == ""
+ StrCpy $REINSTALL_UNINSTALL 1
+ ${EndIf}
+
+ ${ElseIf} $PREVIOUS_VERSION_STATE == 1
+
+ !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install SMPlayer."
+ nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "A newer version of SMPlayer is already installed! It is not recommended that you downgrade to an older version. Select the operation you want to perform and click Next to continue."
+ Pop $R0
+ nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "Downgrade SMPlayer using previous settings (recommended)"
+ Pop $REINSTALL_UNINSTALLBUTTON
+ nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "Change settings (advanced)"
+ Pop $R0
+
+ ${If} $REINSTALL_UNINSTALL == ""
+ StrCpy $REINSTALL_UNINSTALL 1
+ ${EndIf}
+
+ ${ElseIf} $PREVIOUS_VERSION_STATE == 0
+
+ !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
+ nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "SMPlayer ${SMPLAYER_VERSION} is already installed. Select the operation you want to perform and click Next to continue."
+ Pop $R0
+ nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "Add/Remove/Reinstall components"
+ Pop $R0
+ nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "Uninstall SMPlayer"
+ Pop $REINSTALL_UNINSTALLBUTTON
+
+ ${If} $REINSTALL_UNINSTALL == ""
+ StrCpy $REINSTALL_UNINSTALL 2
+ ${EndIf}
+
+ ${Else}
+
+ MessageBox MB_ICONSTOP "Unknown value of PREVIOUS_VERSION_STATE, aborting" /SD IDOK
+ Abort
+
+ ${EndIf}
+
+ ${If} $REINSTALL_UNINSTALL == 1
+ SendMessage $REINSTALL_UNINSTALLBUTTON ${BM_SETCHECK} 1 0
+ ${Else}
+ SendMessage $R0 ${BM_SETCHECK} 1 0
+ ${EndIf}
+
+ nsDialogs::Show
+
+FunctionEnd
+
+Function PageComponentsPre
+
+ ${If} $REINSTALL_UNINSTALL == 1
+ Abort
+ ${EndIf}
+
+FunctionEnd
+
+Function PageDirectoryPre
+
+ ${If} $REINSTALL_UNINSTALL == 1
+ Abort
+ ${EndIf}
+
+FunctionEnd
+
+Function PageInstfilesShow
+
+ ${If} $REINSTALL_UNINSTALL != ""
+ Call RunUninstaller
+ BringToFront
+ ${EndIf}
+
+FunctionEnd
+
+Function PageLeaveReinstall
+
+ SendMessage $REINSTALL_UNINSTALLBUTTON ${BM_GETCHECK} 0 0 $R0
+ ${If} $R0 == 1
+ ; Option to uninstall old version selected
+ StrCpy $REINSTALL_UNINSTALL 1
+ ${Else}
+ ; Custom up/downgrade or add/remove/reinstall
+ StrCpy $REINSTALL_UNINSTALL 2
+ ${EndIf}
+
+ ${If} $REINSTALL_UNINSTALL == 1
+ ${If} $PREVIOUS_VERSION_STATE == 0
+ Call RunUninstaller
+ Quit
+ ${Else}
+ ${EndIf}
+
+ ${EndIf}
+
+FunctionEnd
+
+Function RunUninstaller
+
+ ReadRegStr $R1 HKLM "${SMPLAYER_UNINST_KEY}" "UninstallString"
+
+ ${If} $R1 == ""
+ Return
+ ${EndIf}
+
+ ;Run uninstaller
+ HideWindow
+
+ ClearErrors
+
+ ${If} $PREVIOUS_VERSION_STATE == 0
+ ${AndIf} $REINSTALL_UNINSTALL == 1
+ ExecWait '$R1 _?=$INSTDIR'
+ ${Else}
+ ExecWait '$R1 /frominstall _?=$INSTDIR'
+ ${EndIf}
+
+ IfErrors no_remove_uninstaller
+
+ IfFileExists "$INSTDIR\${SMPLAYER_UNINST_EXE}" 0 no_remove_uninstaller
+
+ Delete "$R1"
+ RMDir $INSTDIR
+
+ no_remove_uninstaller:
+
+FunctionEnd
+
+;--------------------------------
+;Shared functions
+
+!macro UninstallSMPlayerMacro un
+Function ${un}UninstallSMPlayer
;Delete desktop and start menu shortcuts
SetDetailsPrint textonly
@@ -661,7 +817,10 @@ Function ${un}UninstallSMPlayer
SetShellVarContext all
Delete "$DESKTOP\SMPlayer.lnk"
- RMDir /r "$SMPROGRAMS\SMPlayer"
+ Delete "$SMPROGRAMS\SMPlayer\SMPlayer.lnk"
+ Delete "$SMPROGRAMS\SMPlayer\SMPlayer on the Web.url"
+ Delete "$SMPROGRAMS\SMPlayer\Uninstall SMPlayer.lnk"
+ RMDir "$SMPROGRAMS\SMPlayer"
;Delete directories recursively except for main directory
;Do not recursively delete $INSTDIR
@@ -681,6 +840,18 @@ Function ${un}UninstallSMPlayer
Delete "$INSTDIR\smplayer.exe"
Delete "$INSTDIR\dxlist.exe"
+ ;Delete registry keys
+ SetDetailsPrint textonly
+ DetailPrint "Deleting Registry Keys..."
+ SetDetailsPrint listonly
+
+ DeleteRegKey HKLM "${SMPLAYER_REG_KEY}"
+ DeleteRegKey HKLM "${SMPLAYER_APP_PATHS_KEY}"
+ DeleteRegKey HKLM "${SMPLAYER_UNINST_KEY}"
+ DeleteRegKey HKCR "MPlayerFileVideo"
+ DeleteRegKey HKLM "Software\Clients\Media\SMPlayer"
+ DeleteRegValue HKLM "Software\RegisteredApplications" "SMPlayer"
+
SetDetailsPrint both
FunctionEnd
@@ -688,22 +859,14 @@ FunctionEnd
!insertmacro UninstallSMPlayerMacro ""
!insertmacro UninstallSMPlayerMacro "un."
-;End Shared Functions
-;------------------------------------------------------------------------------------------------
-
-/************************************************************************************************
-**************************************** Uninstaller ********************************************
-************************************************************************************************/
-
-;--------------------------------
-;UnInstaller Sections
+/*************************************** Uninstaller *******************************************/
Section Uninstall
;Make sure SMPlayer is installed from where the uninstaller is being executed.
IfFileExists $INSTDIR\smplayer.exe smplayer_installed
- MessageBox MB_YESNO $(SMPLAYER_NOT_INSTALLED) IDYES smplayer_installed
- Abort "Uninstall aborted by user."
+ MessageBox MB_YESNO $(SMPLAYER_NOT_INSTALLED) /SD IDNO IDYES smplayer_installed
+ Abort $(UNINSTALL_ABORTED)
smplayer_installed:
@@ -711,23 +874,34 @@ Section Uninstall
DetailPrint "Restoring file associations..."
SetDetailsPrint listonly
+ ;Don't restore file associations if reinstalling
+ ${un.GetParameters} $R0
+ ${un.GetOptions} $R0 "/frominstall" $R1
+
+ IfErrors 0 +2
ExecWait '"$INSTDIR\smplayer.exe" -uninstall'
Call un.UninstallSMPlayer
- Delete "$INSTDIR\uninst.exe"
+ Delete "$INSTDIR\${SMPLAYER_UNINST_EXE}"
RMDir "$INSTDIR"
SectionEnd
;--------------------------------
-;UnInstaller Functions
+;Required functions
+
+!insertmacro un.GetParameters
+!insertmacro un.GetOptions
+
+;--------------------------------
+;Uninstaller functions
Function un.onInit
Call un.CheckUserRights
- ;Check for admin (mimic old Inno Setup behavior... non-admin installation maybe later..)
+ ;Check for admin (mimic old Inno Setup behavior)
${If} $IS_ADMIN == 0
MessageBox MB_OK|MB_ICONSTOP $(UNINSTALL_NO_ADMIN)
Abort
@@ -736,4 +910,50 @@ Function un.onInit
;Get the stored language preference
!insertmacro MUI_UNGETLANGUAGE
+FunctionEnd
+
+Function un.CheckUserRights
+
+ ClearErrors
+ UserInfo::GetName
+ ${If} ${Errors}
+ StrCpy $IS_ADMIN 1
+ Return
+ ${EndIf}
+
+ Pop $USERNAME
+ UserInfo::GetAccountType
+ Pop $R0
+ ${Switch} $R0
+ ${Case} "Admin"
+ ${Case} "Power"
+ StrCpy $IS_ADMIN 1
+ ${Break}
+ ${Default}
+ StrCpy $IS_ADMIN 0
+ ${Break}
+ ${EndSwitch}
+
+FunctionEnd
+
+Function un.ConfirmPagePre
+
+ ${un.GetParameters} $R0
+
+ ${un.GetOptions} $R0 "/frominstall" $R1
+ ${Unless} ${Errors}
+ Abort
+ ${EndUnless}
+
+FunctionEnd
+
+Function un.FinishPagePre
+
+ ${un.GetParameters} $R0
+
+ ${un.GetOptions} $R0 "/frominstall" $R1
+ ${Unless} ${Errors}
+ Abort
+ ${EndUnless}
+
FunctionEnd \ No newline at end of file