]> git.sesse.net Git - vlc/blobdiff - extras/package/win32/vlc.win32.nsi.in
Win32 installer: split the macros from the file
[vlc] / extras / package / win32 / vlc.win32.nsi.in
index 566f159e37edf9632db482458090821ee19afb42..a2624ea4b90eeaed86b960893ba9581f8d1d5b1f 100644 (file)
@@ -9,8 +9,8 @@
 !define VERSION @VERSION@
 !define PRODUCT_VERSION @VERSION@
 !define PRODUCT_GROUP "VideoLAN"
 !define VERSION @VERSION@
 !define PRODUCT_VERSION @VERSION@
 !define PRODUCT_GROUP "VideoLAN"
-!define PRODUCT_PUBLISHER "VideoLAN Team"
-!define PRODUCT_WEB_SITE "http://www.videolan.org"
+!define PRODUCT_PUBLISHER "VideoLAN"
+!define PRODUCT_WEB_SITE "http://www.videolan.org/"
 !define PRODUCT_DIR_REGKEY "Software\VideoLAN\VLC"
 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
 !define PRODUCT_DIR_REGKEY "Software\VideoLAN\VLC"
 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}"
 !define MUI_LANGDLL_REGISTRY_VALUENAME "Language"
 
 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}"
 !define MUI_LANGDLL_REGISTRY_VALUENAME "Language"
 
-@FILE_LIBVLCCORE_DLL@
-@FILE_LIBVLC_DLL@
+!define INSTALL_ACTIVEX
+!define INSTALL_MOZILLA
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;
 ; General configuration ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;
 
 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;
 ; General configuration ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;
 
 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
-OutFile ..\vlc-${VERSION}-win32.exe
-InstallDir "$PROGRAMFILES\VideoLAN\VLC"
-InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
+@HAVE_WIN64_FALSE@ OutFile ..\vlc-${VERSION}-win32.exe
+@HAVE_WIN64_TRUE@  OutFile ..\vlc-${VERSION}-win64.exe
+InstallDir "$@PROGRAMFILES@\VideoLAN\VLC"
 !ifdef NSIS_LZMA_COMPRESS_WHOLE
 SetCompressor lzma
 !else
 SetCompressor /SOLID lzma
 !endif
 
 !ifdef NSIS_LZMA_COMPRESS_WHOLE
 SetCompressor lzma
 !else
 SetCompressor /SOLID lzma
 !endif
 
-;ShowInstDetails show
-;ShowUnInstDetails show
 SetOverwrite ifnewer
 CRCCheck on
 BrandingText "${PRODUCT_GROUP} ${PRODUCT_NAME}"
 SetOverwrite ifnewer
 CRCCheck on
 BrandingText "${PRODUCT_GROUP} ${PRODUCT_NAME}"
@@ -47,6 +45,11 @@ InstType $Name_InstTypeRecommended
 InstType $Name_InstTypeMinimum
 InstType $Name_InstTypeFull
 
 InstType $Name_InstTypeMinimum
 InstType $Name_InstTypeFull
 
+RequestExecutionLevel user
+!addincludedir NSIS
+!addplugindir NSIS
+!include UAC.nsh
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; NSIS Modern User Interface configuration ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; NSIS Modern User Interface configuration ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -56,8 +59,8 @@ InstType $Name_InstTypeFull
 
 ; MUI Settings
   !define MUI_ABORTWARNING
 
 ; MUI Settings
   !define MUI_ABORTWARNING
-  !define MUI_ICON "vlc48x48.ico"
-  !define MUI_UNICON "vlc48x48.ico"
+  !define MUI_ICON "vlc.ico"
+  !define MUI_UNICON "vlc.ico"
   !define MUI_COMPONENTSPAGE_SMALLDESC
 
 ; Installer pages
   !define MUI_COMPONENTSPAGE_SMALLDESC
 
 ; Installer pages
@@ -65,6 +68,8 @@ InstType $Name_InstTypeFull
     !define MUI_WELCOMEPAGE_TITLE_3LINES
     !insertmacro MUI_PAGE_WELCOME
   ; License page
     !define MUI_WELCOMEPAGE_TITLE_3LINES
     !insertmacro MUI_PAGE_WELCOME
   ; License page
+    !define MUI_LICENSEPAGE_BUTTON $(^NextBtn)
+    !define MUI_LICENSEPAGE_TEXT_BOTTOM $License_NextText
     !insertmacro MUI_PAGE_LICENSE "COPYING.txt"
   ; Components page
     !insertmacro MUI_PAGE_COMPONENTS
     !insertmacro MUI_PAGE_LICENSE "COPYING.txt"
   ; Components page
     !insertmacro MUI_PAGE_COMPONENTS
@@ -73,9 +78,6 @@ InstType $Name_InstTypeFull
   ; Instfiles page
     !insertmacro MUI_PAGE_INSTFILES
   ; Finish page
   ; Instfiles page
     !insertmacro MUI_PAGE_INSTFILES
   ; Finish page
-    !define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe"
-    !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"
-    !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
     !define MUI_FINISHPAGE_LINK $Link_VisitWebsite
     !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/"
     !define MUI_FINISHPAGE_NOREBOOTSUPPORT
     !define MUI_FINISHPAGE_LINK $Link_VisitWebsite
     !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/"
     !define MUI_FINISHPAGE_NOREBOOTSUPPORT
@@ -105,11 +107,19 @@ InstType $Name_InstTypeFull
   !insertmacro MUI_LANGUAGE "Greek"
   !insertmacro MUI_LANGUAGE "Russian"
   !insertmacro MUI_LANGUAGE "Portuguese"
   !insertmacro MUI_LANGUAGE "Greek"
   !insertmacro MUI_LANGUAGE "Russian"
   !insertmacro MUI_LANGUAGE "Portuguese"
+  !insertmacro MUI_LANGUAGE "PortugueseBR"
   !insertmacro MUI_LANGUAGE "Arabic"
   !insertmacro MUI_LANGUAGE "Polish"
   !insertmacro MUI_LANGUAGE "Romanian"
   !insertmacro MUI_LANGUAGE "Slovak"
   !insertmacro MUI_LANGUAGE "Arabic"
   !insertmacro MUI_LANGUAGE "Polish"
   !insertmacro MUI_LANGUAGE "Romanian"
   !insertmacro MUI_LANGUAGE "Slovak"
+  !insertmacro MUI_LANGUAGE "Serbian"
   !insertmacro MUI_LANGUAGE "Czech"
   !insertmacro MUI_LANGUAGE "Czech"
+  !insertmacro MUI_LANGUAGE "Hungarian"
+  !insertmacro MUI_LANGUAGE "Catalan"
+  !insertmacro MUI_LANGUAGE "Bulgarian"
+  !insertmacro MUI_LANGUAGE "Estonian"
+  !insertmacro MUI_LANGUAGE "Lithuanian"
+  !insertmacro MUI_LANGUAGE "Basque"
 
 ; Reserve files for solid compression
   !insertmacro MUI_RESERVEFILE_LANGDLL
 
 ; Reserve files for solid compression
   !insertmacro MUI_RESERVEFILE_LANGDLL
@@ -121,184 +131,12 @@ InstType $Name_InstTypeFull
 ; Macro and Functions ;
 ;;;;;;;;;;;;;;;;;;;;;;;
 
 ; Macro and Functions ;
 ;;;;;;;;;;;;;;;;;;;;;;;
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; 1. File type associations ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Function that register one extension for VLC
-Function RegisterExtension
-  ; back up old value for extension $R0 (eg. ".opt")
-  ReadRegStr $1 HKCR "$R0" ""
-  StrCmp $1 "" NoBackup
-    StrCmp $1 "VLC$R0" "NoBackup"
-    WriteRegStr HKCR "$R0" "VLC.backup" $1
-NoBackup:
-  WriteRegStr HKCR "$R0" "" "VLC$R0"
-  ReadRegStr $0 HKCR "VLC$R0" ""
-  WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"
-  WriteRegStr HKCR "VLC$R0\shell" "" "Play"
-  WriteRegStr HKCR "VLC$R0\shell\Play" "" $ShellAssociation_Play
-  WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
-  WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
-
-;;; Vista Only part
-  ; Vista detection
-  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  StrCpy $R2 $R1 3
-  StrCmp $R2 '6.0' ForVista ToEnd
-ForVista:
-  WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
-
-ToEnd:
-FunctionEnd
-
-;; Function that removes one extension that VLC owns.
-Function un.RegisterExtension
-  ;start of restore script
-  ReadRegStr $1 HKCR "$R0" ""
-  StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it
-    ; Read the old value from Backup
-    ReadRegStr $1 HKCR "$R0" "VLC.backup"
-    StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
-      DeleteRegKey HKCR "$R0"
-    Goto NoOwn
-Restore:
-      WriteRegStr HKCR "$R0" "" $1
-      DeleteRegValue HKCR "$R0" "VLC.backup"
-NoOwn:
-    DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings
-    DeleteRegKey HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations\VLC$R0" ; for vista
-FunctionEnd
-
-!macro RegisterExtensionSection EXT
-  Section ${EXT}
-    SectionIn 1 3
-    Push $R0
-    StrCpy $R0 ${EXT}
-    Call RegisterExtension
-    Pop $R0
-  SectionEnd
-!macroend
-
-!macro UnRegisterExtensionSection EXT
-  Push $R0
-  StrCpy $R0 ${EXT}
-  Call un.RegisterExtension
-  Pop $R0
-!macroend
-
-!macro WriteRegStrSupportedTypes EXT
-  WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""
-!macroend
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Extension lists  Macros                    ;
-; Those macros calls the previous functions  ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-!macro MacroAudioExtensions _action
-  !insertmacro ${_action} ".a52"
-  !insertmacro ${_action} ".aac"
-  !insertmacro ${_action} ".ac3"
-  !insertmacro ${_action} ".dts"
-  !insertmacro ${_action} ".flac"
-  !insertmacro ${_action} ".m4a"
-  !insertmacro ${_action} ".m4p"
-  !insertmacro ${_action} ".mka"
-  !insertmacro ${_action} ".mod"
-  !insertmacro ${_action} ".mp1"
-  !insertmacro ${_action} ".mp2"
-  !insertmacro ${_action} ".mp3"
-  !insertmacro ${_action} ".oma"
-  !insertmacro ${_action} ".oga"
-  !insertmacro ${_action} ".spx"
-  !insertmacro ${_action} ".wav"
-  !insertmacro ${_action} ".wma"
-  !insertmacro ${_action} ".xm"
-!macroend
-
-!macro MacroVideoExtensions _action
-  !insertmacro ${_action} ".asf"
-  !insertmacro ${_action} ".avi"
-  !insertmacro ${_action} ".divx"
-  !insertmacro ${_action} ".dv"
-  !insertmacro ${_action} ".flv"
-  !insertmacro ${_action} ".gxf"
-  !insertmacro ${_action} ".m1v"
-  !insertmacro ${_action} ".m2v"
-  !insertmacro ${_action} ".m2ts"
-  !insertmacro ${_action} ".m4v"
-  !insertmacro ${_action} ".mkv"
-  !insertmacro ${_action} ".mov"
-  !insertmacro ${_action} ".mp4"
-  !insertmacro ${_action} ".mpeg"
-  !insertmacro ${_action} ".mpeg1"
-  !insertmacro ${_action} ".mpeg2"
-  !insertmacro ${_action} ".mpeg4"
-  !insertmacro ${_action} ".mpg"
-  !insertmacro ${_action} ".mts"
-  !insertmacro ${_action} ".mxf"
-  !insertmacro ${_action} ".nuv"
-  !insertmacro ${_action} ".ogg"
-  !insertmacro ${_action} ".ogm"
-  !insertmacro ${_action} ".ogx"
-  !insertmacro ${_action} ".ogv"
-  !insertmacro ${_action} ".ts"
-  !insertmacro ${_action} ".vob"
-  !insertmacro ${_action} ".wmv"
-!macroend
-
-!macro MacroOtherExtensions _action
-  !insertmacro ${_action} ".asx"
-  !insertmacro ${_action} ".bin"
-  !insertmacro ${_action} ".cue"
-  !insertmacro ${_action} ".m3u"
-  !insertmacro ${_action} ".pls"
-  !insertmacro ${_action} ".vlc"
-  !insertmacro ${_action} ".xspf"
-!macroend
-
-; One macro to rule them all
-!macro MacroAllExtensions _action
-  !insertmacro MacroAudioExtensions ${_action}
-  !insertmacro MacroVideoExtensions ${_action}
-  !insertmacro MacroOtherExtensions ${_action}
-!macroend
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; 2. Context menu entries ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; Generic function for adding the context menu for one ext.
-!macro AddContextMenuExt EXT
-  WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" $ContextMenuEntry_PlayWith
-  WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --no-playlist-enqueue "%1"'
-
-  WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" $ContextMenuEntry_AddToPlaylist
-  WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --playlist-enqueue "%1"'
-!macroend
-
-!macro AddContextMenu EXT
-  Push $R0
-  ReadRegStr $R0 HKCR ${EXT} ""
-  !insertmacro AddContextMenuExt $R0
-  Pop $R0
-!macroend
-
-!macro DeleteContextMenuExt EXT
-  DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC
-  DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC
-!macroend
-
-!macro DeleteContextMenu EXT
-  Push $R0
-  ReadRegStr $R0 HKCR ${EXT} ""
-  !insertmacro DeleteContextMenuExt $R0
-  Pop $R0
-!macroend
+!include helpers/extensions.nsh
+Var UninstallLog
+!include helpers/install.nsh
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; 3. Delete prefs and cache ;
+; Delete prefs Macro        ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 !macro delprefs
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 !macro delprefs
@@ -320,77 +158,12 @@ FunctionEnd
   !undef Index
 !macroend
 
   !undef Index
 !macroend
 
-;;;;;;;;;;;;;;;
-; 4. Logging  ;
-;;;;;;;;;;;;;;;
-Var UninstallLog
-!macro OpenUninstallLog
-  FileOpen $UninstallLog "$INSTDIR\uninstall.log" a
-  FileSeek $UninstallLog 0 END
-!macroend
-
-!macro CloseUninstallLog
-  FileClose $UninstallLog
-  SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN
-!macroend
-
-;;;;;;;;;;;;;;;;;;;;
-; 5. Installations ;
-;;;;;;;;;;;;;;;;;;;;
-!macro InstallFile FILEREGEX
-  File "${FILEREGEX}"
-  !define Index 'Line${__LINE__}'
-  FindFirst $0 $1 "$INSTDIR\${FILEREGEX}"
-  StrCmp $0 "" "${Index}-End"
-  "${Index}-Loop:"
-    StrCmp $1 "" "${Index}-End"
-    FileWrite $UninstallLog "$1$\r$\n"
-    FindNext $0 $1
-    Goto "${Index}-Loop"
-  "${Index}-End:"
-  !undef Index
-!macroend
-
-!macro InstallFolder FOLDER
-  File /r "${FOLDER}"
-  Push "${FOLDER}"
-  Call InstallFolderInternal
-!macroend
-
-Function InstallFolderInternal
-  Pop $9
-  !define Index 'Line${__LINE__}'
-  FindFirst $0 $1 "$INSTDIR\$9\*"
-  StrCmp $0 "" "${Index}-End"
-  "${Index}-Loop:"
-    StrCmp $1 "" "${Index}-End"
-    StrCmp $1 "." "${Index}-Next"
-    StrCmp $1 ".." "${Index}-Next"
-    IfFileExists "$9\$1\*" 0 "${Index}-Write"
-      Push $0
-      Push $9
-      Push "$9\$1"
-      Call InstallFolderInternal
-      Pop $9
-      Pop $0
-      Goto "${Index}-Next"
-    "${Index}-Write:"
-    FileWrite $UninstallLog "$9\$1$\r$\n"
-    "${Index}-Next:"
-    FindNext $0 $1
-    Goto "${Index}-Loop"
-  "${Index}-End:"
-  !undef Index
-FunctionEnd
-;;; End of Macros
-
-
 ;;;;;;;;;;;;;;;;;;;;;;
 ; Installer sections ;
 ; The CORE of the    ;
 ; installer          ;
 ;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;
 ; Installer sections ;
 ; The CORE of the    ;
 ; installer          ;
 ;;;;;;;;;;;;;;;;;;;;;;
-  
+
 Section $Name_Section01 SEC01
   SectionIn 1 2 3 RO
   SetShellVarContext all
 Section $Name_Section01 SEC01
   SectionIn 1 2 3 RO
   SetShellVarContext all
@@ -401,12 +174,10 @@ Section $Name_Section01 SEC01
   ; VLC.exe, libvlc.dll
   !insertmacro InstallFile vlc.exe
   !insertmacro InstallFile vlc.exe.manifest
   ; VLC.exe, libvlc.dll
   !insertmacro InstallFile vlc.exe
   !insertmacro InstallFile vlc.exe.manifest
-  !ifdef LIBVLCCORE_DLL
-      !insertmacro InstallFile ${LIBVLCCORE_DLL}
-  !endif
-  !ifdef LIBVLC_DLL
-      !insertmacro InstallFile ${LIBVLC_DLL}
-  !endif
+  !insertmacro InstallFile vlc-cache-gen.exe
+
+  ; All dlls
+  !insertmacro InstallFile *.dll
 
   ; Text files
   !insertmacro InstallFile *.txt
 
   ; Text files
   !insertmacro InstallFile *.txt
@@ -414,42 +185,50 @@ Section $Name_Section01 SEC01
   ; Subfolders
   !insertmacro InstallFolder plugins
   !insertmacro InstallFolder locale
   ; Subfolders
   !insertmacro InstallFolder plugins
   !insertmacro InstallFolder locale
-  !insertmacro InstallFolder osdmenu
-  !insertmacro InstallFolder skins
-  !insertmacro InstallFolder http
-  !insertmacro InstallFolder lua
+  !insertmacro InstallFolder sdk
+@BUILD_OSDMENU_TRUE@ !insertmacro InstallFolder osdmenu
+@BUILD_SKINS_TRUE@   !insertmacro InstallFolder skins
+@BUILD_LUA_TRUE@     !insertmacro InstallFolder lua
+
+  ; Generate the cache and add it to uninstall.log
+  ExecWait "$INSTDIR\vlc-cache-gen.exe $INSTDIR\plugins"
+  FindFirst $0 $1 "$INSTDIR\plugins\*.dat"
+  FileWrite $UninstallLog "plugins\$1$\r$\n"
+  FindClose $0
+
 
   ; URLs
 
   ; URLs
-  WriteIniStr "$INSTDIR\${PRODUCT_GROUP} Website.url" "InternetShortcut" "URL" \
-    "${PRODUCT_WEB_SITE}"
+  WriteIniStr "$INSTDIR\${PRODUCT_GROUP} Website.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
   FileWrite $UninstallLog "${PRODUCT_GROUP} Website.url$\r$\n"
   FileWrite $UninstallLog "${PRODUCT_GROUP} Website.url$\r$\n"
-  WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" \
-    "${PRODUCT_WEB_SITE}/doc/"
+  WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}/doc/"
   FileWrite $UninstallLog "Documentation.url$\r$\n"
   FileWrite $UninstallLog "Documentation.url$\r$\n"
-  WriteIniStr "$INSTDIR\New_Skins.url" "InternetShortcut" "URL" \
-    "${PRODUCT_WEB_SITE}/vlc/skins.php"
+  WriteIniStr "$INSTDIR\New_Skins.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}/vlc/skins.php"
   FileWrite $UninstallLog "New_Skins.url$\r$\n"
 
   !insertmacro CloseUninstallLog
 
   FileWrite $UninstallLog "New_Skins.url$\r$\n"
 
   !insertmacro CloseUninstallLog
 
-  ; Add VLC to "recomended programs" for the following extensions
+  ; Add VLC to "recommended programs" for the following extensions
   WriteRegStr HKCR Applications\vlc.exe "" ""
   WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player"
   WriteRegStr HKCR Applications\vlc.exe "" ""
   WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player"
-  WriteRegStr HKCR Applications\vlc.exe\shell\Play "" $ContextMenuEntry_PlayWith
-  WriteRegStr HKCR Applications\vlc.exe\shell\Play\command "" \
-    '"$INSTDIR\vlc.exe" --started-from-file "%1"'
+  WriteRegStr HKCR Applications\vlc.exe\shell\Open "" $ContextMenuEntry_PlayWith
+  WriteRegStr HKCR Applications\vlc.exe\shell\Open\command "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
   !insertmacro MacroAllExtensions WriteRegStrSupportedTypes
 
   !insertmacro MacroAllExtensions WriteRegStrSupportedTypes
 
-; Vista Registration
-  ; Vista detection
+; Windows default programs Registration
+  ; Vista and above detection
   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  StrCpy $R1 $R0 3
-  StrCmp $R1 '6.0' lbl_vista lbl_done
+  StrCpy $R1 $R0 1
+  StrCmp $R1 '6' lbl_vista lbl_done
 
   lbl_vista:
   WriteRegStr HKLM "Software\RegisteredApplications" "VLC" "Software\Clients\Media\VLC\Capabilities"
   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationName" "VLC media player"
   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationDescription" "VLC - The video swiss knife"
 
   lbl_vista:
   WriteRegStr HKLM "Software\RegisteredApplications" "VLC" "Software\Clients\Media\VLC\Capabilities"
   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationName" "VLC media player"
   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationDescription" "VLC - The video swiss knife"
+  WriteRegStr HKLM "Software\Clients\Media\VLC" "" "VLC media player"
+  WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "HideIconsCommand" "$\"$INSTDIR\spad-setup.exe$\" /HideIcons /S"
+  WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "ShowIconsCommand" "$\"$INSTDIR\spad-setup.exe$\" /ShowIcons /S"
+  WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "ReinstallCommand" "$\"$INSTDIR\spad-setup.exe$\" /Reinstall /S"
+  WriteRegDWORD HKLM "Software\Clients\Media\VLC\InstallInfo" "IconsVisible" 0x001
 
   lbl_done:
 SectionEnd
 
   lbl_done:
 SectionEnd
@@ -457,41 +236,18 @@ SectionEnd
 Section $Name_Section02a SEC02a
   SectionIn 1 2 3
   CreateDirectory "$SMPROGRAMS\VideoLAN"
 Section $Name_Section02a SEC02a
   SectionIn 1 2 3
   CreateDirectory "$SMPROGRAMS\VideoLAN"
-  CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings"
-  CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Audio"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Audio\Set Audio mode to DirectX (default).lnk" \
-    "$INSTDIR\vlc.exe" "--aout aout_directx --save-config vlc://quit"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Audio\Set Audio mode to Waveout.lnk" \
-    "$INSTDIR\vlc.exe" "--aout waveout --save-config vlc://quit"
-  CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Interface"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Interface\Set Main Interface to Skinnable.lnk" \
-    "$INSTDIR\vlc.exe" "-I skins --save-config vlc://quit"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Interface\Set Main Interface to Qt (default).lnk" \
-    "$INSTDIR\vlc.exe" "-I qt --save-config vlc://quit"
-  CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Video"
-  ; FIXME add detection for Vista. Direct3D will be default there, for all others it's DirectX
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to Direct3D.lnk" \
-    "$INSTDIR\vlc.exe" "--vout direct3d --overlay --directx-hw-yuv --save-config vlc://quit"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to Direct3D (no hardware acceleration).lnk" \
-    "$INSTDIR\vlc.exe" "--vout direct3d --overlay --no-directx-hw-yuv --save-config vlc://quit"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to DirectX.lnk" \
-    "$INSTDIR\vlc.exe" "--vout directx --overlay --directx-hw-yuv --save-config vlc://quit"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to DirectX (no hardware acceleration).lnk" \
-    "$INSTDIR\vlc.exe" "--vout directx --no-overlay --no-directx-hw-yuv --save-config vlc://quit"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to DirectX (no video overlay).lnk" \
-    "$INSTDIR\vlc.exe" "--vout directx --no-overlay --directx-hw-yuv --save-config vlc://quit"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to OpenGL.lnk" \
-    "$INSTDIR\vlc.exe" "--vout opengl --overlay --save-config vlc://quit"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Reset VLC media player preferences and cache files.lnk" \
-    "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache vlc://quit"
+  CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \
+    "$INSTDIR\vlc.exe" ""
+  CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player skinned.lnk" \
+    "$INSTDIR\vlc.exe" "-Iskins"
   CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \
     "$INSTDIR\Documentation.url"
   CreateShortCut "$SMPROGRAMS\VideoLAN\Release Notes.lnk" \
     "$INSTDIR\NEWS.txt" ""
   CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_GROUP} Website.lnk" \
     "$INSTDIR\${PRODUCT_GROUP} Website.url"
   CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \
     "$INSTDIR\Documentation.url"
   CreateShortCut "$SMPROGRAMS\VideoLAN\Release Notes.lnk" \
     "$INSTDIR\NEWS.txt" ""
   CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_GROUP} Website.lnk" \
     "$INSTDIR\${PRODUCT_GROUP} Website.url"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \
-    "$INSTDIR\vlc.exe" ""
+  CreateShortCut "$SMPROGRAMS\VideoLAN\Reset VLC media player preferences and cache files.lnk" \
+    "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache vlc://quit"
 SectionEnd
 
 Section $Name_Section02b SEC02b
 SectionEnd
 
 Section $Name_Section02b SEC02b
@@ -500,13 +256,14 @@ Section $Name_Section02b SEC02b
     "$INSTDIR\vlc.exe" ""
 SectionEnd
 
     "$INSTDIR\vlc.exe" ""
 SectionEnd
 
-Section /o $Name_Section03 SEC03
-  SectionIn 3
+!ifdef INSTALL_MOZILLA
+Section $Name_Section03 SEC03
+  SectionIn 1 3
 
   SetOutPath "$INSTDIR"
   !insertmacro OpenUninstallLog
 
   SetOutPath "$INSTDIR"
   !insertmacro OpenUninstallLog
-  !insertmacro InstallFile mozilla\npvlc.dll
-  !insertmacro InstallFile mozilla\npvlc.dll.manifest
+  !insertmacro InstallFile npvlc.dll
+  !insertmacro InstallFile npvlc.dll.manifest
   !insertmacro CloseUninstallLog
 
   !define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
   !insertmacro CloseUninstallLog
 
   !define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
@@ -515,103 +272,134 @@ Section /o $Name_Section03 SEC03
   WriteRegStr HKLM ${Moz} "Product" "VLC media player"
   WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN"
   WriteRegStr HKLM ${Moz} "Version" "${VERSION}"
   WriteRegStr HKLM ${Moz} "Product" "VLC media player"
   WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN"
   WriteRegStr HKLM ${Moz} "Version" "${VERSION}"
-
- ; for very old version of mozilla, these lines may be needed
- ;Push $R0
- ;Push $R1
- ;Push $R2
-
- ;!define Index 'Line${__LINE__}'
- ;StrCpy $R1 "0"
-
- ;"${Index}-Loop:"
-
- ;  ; Check for Key
- ;  EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"
- ;  StrCmp $R0 "" "${Index}-End"
- ;  IntOp $R1 $R1 + 1
- ;  ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"
- ;  StrCmp $R2 "" "${Index}-Loop" ""
-
- ;  CopyFiles "$INSTDIR\npvlc.dll" "$R2"
- ;  !ifdef LIBVLC_DLL
- ;  CopyFiles ${LIBVLC_DLL} "$R2"
- ;  !endif
- ;  !ifdef LIBVLC_CONTROL_DLL
- ;  CopyFiles ${LIBVLC_CONTROL_DLL} "$R2"
- ;  !endif
- ;  Goto "${Index}-Loop"
-
- ;"${Index}-End:"
- ;!undef Index
-
 SectionEnd
 SectionEnd
+!endif
+
+!ifdef INSTALL_ACTIVEX
+Section $Name_Section04 SEC04
+  SectionIn 1 3
 
 
-Section /o $Name_Section04 SEC04
-  SectionIn 3
   SetOutPath "$INSTDIR"
   !insertmacro OpenUninstallLog
   SetOutPath "$INSTDIR"
   !insertmacro OpenUninstallLog
-  !insertmacro InstallFile activex\axvlc.dll
-  !insertmacro InstallFile activex\axvlc.dll.manifest
+  !insertmacro InstallFile axvlc.dll
+  !insertmacro InstallFile axvlc.dll.manifest
   !insertmacro CloseUninstallLog
   RegDLL "$INSTDIR\axvlc.dll"
 SectionEnd
   !insertmacro CloseUninstallLog
   RegDLL "$INSTDIR\axvlc.dll"
 SectionEnd
-
-SectionGroup /e !$Name_Section06 SEC05
-  SectionGroup $Name_SectionGroupAudio
-    !insertmacro MacroAudioExtensions RegisterExtensionSection
-  SectionGroupEnd
-  SectionGroup $Name_SectionGroupVideo
-    !insertmacro MacroVideoExtensions RegisterExtensionSection
-  SectionGroupEnd
-  SectionGroup $Name_SectionGroupOther
-    !insertmacro MacroOtherExtensions RegisterExtensionSection
-  SectionGroupEnd
-SectionGroupEnd
+!endif
 
 
 
 
-Section $Name_Section05 SEC06
+Section $Name_Section05 SEC05
   SectionIn 1 2 3
   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" $ContextMenuEntry_PlayWith
   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \
   SectionIn 1 2 3
   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" $ContextMenuEntry_PlayWith
   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \
-    '"$INSTDIR\vlc.exe" --started-from-file "cdda://%1"'
+    '"$INSTDIR\vlc.exe" --started-from-file cdda:///%1'
   WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" $ContextMenuEntry_PlayWith
   WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \
   WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" $ContextMenuEntry_PlayWith
   WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \
-    '"$INSTDIR\vlc.exe" --started-from-file "dvd://%1"'
+    '"$INSTDIR\vlc.exe" --started-from-file dvd:///%1'
 
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" ""
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" $Action_OnArrivalDVD
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeProgID" "VLC.DVDMovie"
 
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" ""
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" $Action_OnArrivalDVD
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeProgID" "VLC.DVDMovie"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeVerb" "play"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeVerb" "Open"
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "VideoLAN VLC media player"
 
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" ""
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" $Action_OnArrivalAudioCD
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeProgID" "VLC.CDAudio"
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "VideoLAN VLC media player"
 
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" ""
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" $Action_OnArrivalAudioCD
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeProgID" "VLC.CDAudio"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeVerb" "play"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeVerb" "Open"
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Provider" "VideoLAN VLC media player"
   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Provider" "VideoLAN VLC media player"
+
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoCDMovieOnArrival" "VLCPlayVCDMovieOnArrival" ""
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "Action" $Action_OnArrivalVCDMovie
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "InvokeProgID" "VLC.VCDMovie"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "InvokeVerb" "Open"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "Provider" "VideoLAN VLC media player"
+
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlaySuperVideoCDMovieOnArrival" "VLCPlaySVCDMovieOnArrival" ""
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "Action" $Action_OnArrivalSVCDMovie
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "InvokeProgID" "VLC.SVCDMovie"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "InvokeVerb" "Open"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "Provider" "VideoLAN VLC media player"
+
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDAudioOnArrival" "VLCPlayDVDAudioOnArrival" ""
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "Action" $Action_OnArrivalDVDAudio
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "InvokeProgID" "VLC.OPENFolder"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "InvokeVerb" "Open"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "Provider" "VideoLAN VLC media player"
+
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "VLCPlayVideoFilesOnArrival" ""
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "Action" $Action_OnArrivalVideoFiles
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "InvokeProgID" "VLC.OPENFolder"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "InvokeVerb" "Open"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "Provider" "VideoLAN VLC media player"
+
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "VLCPlayMusicFilesOnArrival" ""
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "Action" $Action_OnArrivalMusicFiles
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "InvokeProgID" "VLC.OPENFolder"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "InvokeVerb" "Open"
+  WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "Provider" "VideoLAN VLC media player"
+
   WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie"
   WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie"
-  WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Play"
-  WriteRegStr HKCR "VLC.DVDMovie\shell\Play\command" "" \
-    '"$INSTDIR\vlc.exe" --started-from-file "dvd://%1"'
+  WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Open"
+  WriteRegStr HKCR "VLC.DVDMovie\shell\Open\command" "" \
+    '"$INSTDIR\vlc.exe" --started-from-file dvd:///%1'
   WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
   WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
+
   WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio"
   WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio"
-  WriteRegStr HKCR "VLC.CDAudio\shell" "" "Play"
-  WriteRegStr HKCR "VLC.CDAudio\shell\Play\command" "" \
-    '"$INSTDIR\vlc.exe" --started-from-file "cdda://%1"'
+  WriteRegStr HKCR "VLC.CDAudio\shell" "" "Open"
+  WriteRegStr HKCR "VLC.CDAudio\shell\Open\command" "" \
+    '"$INSTDIR\vlc.exe" --started-from-file cdda:///%1'
   WriteRegStr HKCR "VLC.CDAudio\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
 
   WriteRegStr HKCR "VLC.CDAudio\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
 
+  WriteRegStr HKCR "VLC.VCDMovie" "" "VLC VCD Movie"
+  WriteRegStr HKCR "VLC.VCDMovie\shell" "" "Open"
+  WriteRegStr HKCR "VLC.VCDMovie\shell\Open\command" "" \
+     '"$INSTDIR\vlc.exe" --started-from-file vcd:///%1'
+  WriteRegStr HKCR "VLC.VCDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
+
+  WriteRegStr HKCR "VLC.SVCDMovie" "" "VLC SVCD Movie"
+  WriteRegStr HKCR "VLC.SVCDMovie\shell" "" "Open"
+  WriteRegStr HKCR "VLC.SVCDMovie\shell\Open\command" "" \
+     '"$INSTDIR\vlc.exe" --started-from-file vcd:///%1'
+  WriteRegStr HKCR "VLC.SVCDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
+
+  WriteRegStr HKCR "VLC.OPENFolder" "" "VLC Play content"
+  WriteRegStr HKCR "VLC.OPENFolder\shell" "" "Open"
+  WriteRegStr HKCR "VLC.OPENFolder\shell\Open\command" "" \
+     '"$INSTDIR\vlc.exe" %1'
+  WriteRegStr HKCR "VLC.OPENFolder\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
+
 SectionEnd
 
 SectionEnd
 
+
+SectionGroup /e !$Name_Section06 SEC06
+  SectionGroup $Name_SectionGroupAudio
+    !insertmacro MacroAudioExtensions RegisterExtensionSection
+  SectionGroupEnd
+  SectionGroup $Name_SectionGroupVideo
+    !insertmacro MacroVideoExtensions RegisterExtensionSection
+  SectionGroupEnd
+  SectionGroup $Name_SectionGroupOther
+    !insertmacro MacroOtherExtensions RegisterExtensionSection
+    !insertmacro MacroSkinExtensions RegisterSkinExtensionSection
+  SectionGroupEnd
+SectionGroupEnd
+
 Section $Name_Section07 SEC07
   SectionIn 1 3
   !insertmacro MacroAllExtensions AddContextMenu
   !insertmacro AddContextMenuExt "Directory"
 SectionEnd
 
 Section $Name_Section07 SEC07
   SectionIn 1 3
   !insertmacro MacroAllExtensions AddContextMenu
   !insertmacro AddContextMenuExt "Directory"
 SectionEnd
 
-Section $Name_Section08 SEC08
+Section /o $Name_Section08 SEC08
   !insertmacro delprefs
 SectionEnd
 
   !insertmacro delprefs
 SectionEnd
 
@@ -620,8 +408,12 @@ SectionEnd
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $Desc_Section01
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} $Desc_Section02a
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} $Desc_Section02b
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $Desc_Section01
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} $Desc_Section02a
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} $Desc_Section02b
+!ifdef INSTALL_MOZILLA
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $Desc_Section03
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $Desc_Section03
+!endif
+!ifdef INSTALL_ACTIVEX
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $Desc_Section04
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $Desc_Section04
+!endif
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $Desc_Section05
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $Desc_Section06
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $Desc_Section07
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $Desc_Section05
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $Desc_Section06
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $Desc_Section07
@@ -630,19 +422,156 @@ SectionEnd
 
 ;;; Start function
 Function .onInit
 
 ;;; Start function
 Function .onInit
+
+@HAVE_WIN64_TRUE@ !include "x64.nsh"
+@HAVE_WIN64_TRUE@ ${If} ${RunningX64}
+@HAVE_WIN64_TRUE@ ${Else}
+@HAVE_WIN64_TRUE@    MessageBox MB_OK|MB_ICONSTOP "This version of VLC only runs on 64bits operating systems.$\nYour operating system is 32bits.$\n$\nPlease get the 32 BITS version."
+@HAVE_WIN64_TRUE@    Quit
+@HAVE_WIN64_TRUE@ ${Endif}
+
+@HAVE_WIN64_TRUE@ SetRegView 64
+ReadRegStr $INSTDIR HKLM "${PRODUCT_DIR_REGKEY}" ""
+StrCmp $INSTDIR "" 0 +1
+StrCpy $INSTDIR "$@PROGRAMFILES@\VideoLAN\VLC"
+
+UAC_Elevate:
+    UAC::RunElevated
+    StrCmp 1223 $0 UAC_ElevationAborted
+    StrCmp 0 $0 0 UAC_Err
+    StrCmp 1 $1 0 UAC_Success
+    Quit
+
+UAC_Err:
+    MessageBox mb_iconstop "Unable to elevate, error $0"
+    Abort
+
+UAC_ElevationAborted:
+    MessageBox mb_iconstop "This installer requires admin access, aborting!"
+    Abort
+
+UAC_Success:
+    StrCmp 1 $3 +4
+    StrCmp 3 $1 0 UAC_ElevationAborted
+    MessageBox mb_iconstop "This installer requires admin access, try again"
+    goto UAC_Elevate
   !insertmacro MUI_LANGDLL_DISPLAY
 
   !include "languages\english.nsh"
   !insertmacro MUI_LANGDLL_DISPLAY
 
   !include "languages\english.nsh"
-  StrCmp $LANGUAGE ${LANG_FRENCH} French EndLanguageCmp
+  StrCmp $LANGUAGE ${LANG_FRENCH} French 0
+  StrCmp $LANGUAGE ${LANG_GERMAN} German 0
+  StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
+  StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
+  StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
+  StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
+  StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
+  StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
+  StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
+  StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
+  StrCmp $LANGUAGE ${LANG_DANISH} Danish 0
+  StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
+  StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
+  StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
+;  StrCmp $LANGUAGE ${LANG_BENGALI} Bengali 0
+;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
+;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
+  StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
+  StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0
+  StrCmp $LANGUAGE ${LANG_LITHUANIAN} Lithuanian 0
+  StrCmp $LANGUAGE ${LANG_BASQUE} Basque 0
+  StrCmp $LANGUAGE ${LANG_SERBIAN} Serbian 0
+  StrCmp $LANGUAGE ${LANG_RUSSIAN} Russian 0
+  StrCmp $LANGUAGE ${LANG_HEBREW} Hebrew 0
+  StrCmp $LANGUAGE ${LANG_GALICIAN} Galician 0
+  StrCmp $LANGUAGE ${LANG_SWEDISH} Swedish 0
+  StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
   French:
   !include "languages\french.nsh"
   French:
   !include "languages\french.nsh"
+  Goto EndLanguageCmp
+  German:
+  !include "languages\german.nsh"
+  Goto EndLanguageCmp
+  Italian:
+  !include "languages\italian.nsh"
+  Goto EndLanguageCmp
+  Hungarian:
+  !include "languages\hungarian.nsh"
+  Goto EndLanguageCmp
+  Romanian:
+  !include "languages\romanian.nsh"
+  Goto EndLanguageCmp
+  Catalan:
+  !include "languages\catalan.nsh"
+  Goto EndLanguageCmp
+  Bulgarian:
+  !include "languages\bulgarian.nsh"
+  Goto EndLanguageCmp
+  Slovak:
+  !include "languages\slovak.nsh"
+  Goto EndLanguageCmp
+  Polish:
+  !include "languages\polish.nsh"
+  Goto EndLanguageCmp
+  Dutch:
+  !include "languages\dutch.nsh"
+  Goto EndLanguageCmp
+  Danish:
+  !include "languages\danish.nsh"
+  Goto EndLanguageCmp
+  Schinese:
+  !include "languages\schinese.nsh"
+  Goto EndLanguageCmp
+  Finnish:
+  !include "languages\finnish.nsh"
+  Goto EndLanguageCmp
+  Japanese:
+  !include "languages\japanese.nsh"
+  Goto EndLanguageCmp
+  Bengali:
+  !include "languages\bengali.nsh"
+  Goto EndLanguageCmp
+  Punjabi:
+  !include "languages\punjabi.nsh"
+  Goto EndLanguageCmp
+  Slovenian:
+  !include "languages\slovenian.nsh"
+  Goto EndLanguageCmp
+  Spanish:
+  !include "languages\spanish.nsh"
+  Goto EndLanguageCmp
+  Estonian:
+  !include "languages\estonian.nsh"
+  Goto EndLanguageCmp
+  Lithuanian:
+  !include "languages\lithuanian.nsh"
+  Goto EndLanguageCmp
+  Basque:
+  !include "languages\basque.nsh"
+  Goto EndLanguageCmp
+  Serbian:
+  !include "languages\serbian.nsh"
+  Goto EndLanguageCmp
+  Russian:
+  !include "languages\Russian.nsh"
+  Goto EndLanguageCmp
+  Hebrew:
+  !include "languages\hebrew.nsh"
+  Goto EndLanguageCmp
+  Galician:
+  !include "languages\galician.nsh"
+  Goto EndLanguageCmp
+  Swedish:
+  !include "languages\swedish.nsh"
+  Goto EndLanguageCmp
+  Brazilian:
+  !include "languages\brazilian_portuguese.nsh"
   EndLanguageCmp:
 
   ReadRegStr $R0  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
   "UninstallString"
   StrCmp $R0 "" done
 
   EndLanguageCmp:
 
   ReadRegStr $R0  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
   "UninstallString"
   StrCmp $R0 "" done
 
-  MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled IDNO done
+  MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled /SD IDNO IDNO done
 
   ;Run the uninstaller
   ;uninst:
 
   ;Run the uninstaller
   ;uninst:
@@ -652,6 +581,14 @@ Function .onInit
 
 FunctionEnd
 
 
 FunctionEnd
 
+Function .OnInstFailed
+    UAC::Unload
+FunctionEnd
+
+Function .OnInstSuccess
+    UAC::Unload
+FunctionEnd
+
 ;; End function
 Section -Post
   WriteUninstaller "$INSTDIR\uninstall.exe"
 ;; End function
 Section -Post
   WriteUninstaller "$INSTDIR\uninstall.exe"
@@ -663,6 +600,8 @@ Section -Post
     "DisplayName" "$(^Name)"
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
     "UninstallString" "$INSTDIR\uninstall.exe"
     "DisplayName" "$(^Name)"
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
     "UninstallString" "$INSTDIR\uninstall.exe"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
+    "InstallLocation" "$INSTDIR"
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
     "DisplayIcon" "$INSTDIR\vlc.exe"
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
     "DisplayIcon" "$INSTDIR\vlc.exe"
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
@@ -671,6 +610,10 @@ Section -Post
     "URLInfoAbout" "${PRODUCT_WEB_SITE}"
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
     "Publisher" "${PRODUCT_PUBLISHER}"
     "URLInfoAbout" "${PRODUCT_WEB_SITE}"
   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
     "Publisher" "${PRODUCT_PUBLISHER}"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
+    "VersionMajor"  "@VERSION_MAJOR@"
+  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
+    "VersionMinor" "@VERSION_MINOR@"
 SectionEnd
 
 ;;;;;;;;;;;;;;;;;;;;;;;;
 SectionEnd
 
 ;;;;;;;;;;;;;;;;;;;;;;;;
@@ -736,11 +679,13 @@ Section "un.$Name_Section91" SEC91
 
   !insertmacro MacroAllExtensions DeleteContextMenu
   !insertmacro MacroAllExtensions UnRegisterExtensionSection
 
   !insertmacro MacroAllExtensions DeleteContextMenu
   !insertmacro MacroAllExtensions UnRegisterExtensionSection
+  !insertmacro MacroSkinExtensions UnRegisterExtensionSection
   !insertmacro DeleteContextMenuExt "Directory"
 
   ;remove activex plugin
   UnRegDLL "$INSTDIR\axvlc.dll"
   Delete /REBOOTOK "$INSTDIR\axvlc.dll"
   !insertmacro DeleteContextMenuExt "Directory"
 
   ;remove activex plugin
   UnRegDLL "$INSTDIR\axvlc.dll"
   Delete /REBOOTOK "$INSTDIR\axvlc.dll"
+  Delete /REBOOTOK "$INSTDIR\axvlc.dll.manifest"
 
   ;remove mozilla plugin
   Push $R0
 
   ;remove mozilla plugin
   Push $R0
@@ -768,6 +713,7 @@ Section "un.$Name_Section91" SEC91
   "${Index}-End:"
   !undef Index
   Delete /REBOOTOK "$INSTDIR\npvlc.dll"
   "${Index}-End:"
   !undef Index
   Delete /REBOOTOK "$INSTDIR\npvlc.dll"
+  Delete /REBOOTOK "$INSTDIR\npvlc.dll.manifest"
 
   RMDir "$SMPROGRAMS\VideoLAN"
   RMDir /r $SMPROGRAMS\VideoLAN
 
   RMDir "$SMPROGRAMS\VideoLAN"
   RMDir /r $SMPROGRAMS\VideoLAN
@@ -799,8 +745,26 @@ Section "un.$Name_Section91" SEC91
   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival
   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"
   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival
   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival
   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"
   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoCDMovieOnArrival" "VLCPlayVCDMovieOnArrival"
+  DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlaySuperVideoCDMovieOnArrival" "VLCPlaySVCDMovieOnArrival"
+  DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDAudioOnArrival" "VLCPlayDVDAudioOnArrival"
+  DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "VLCPlayVideoFilesOnArrival"
+  DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "VLCPlayMusicFilesOnArrival"
+  DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival
+
   DeleteRegKey HKLM Software\Clients\Media\VLC
   DeleteRegKey HKLM Software\Clients\Media\VLC
+  DeleteRegValue HKLM "Software\RegisteredApplications" "VLC"
   DeleteRegKey HKCR "VLC.MediaFile"
   DeleteRegKey HKCR "VLC.MediaFile"
+  DeleteRegKey HKCR "VLC.DVDMovie"
+  DeleteRegKey HKCR "VLC.CDAudio"
+  DeleteRegKey HKCR "VLC.VCDMovie"
+  DeleteRegKey HKCR "VLC.SVCDMovie"
+  DeleteRegKey HKCR "VLC.OPENFolder"
+
 
   DeleteRegKey HKLM \
     "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
 
   DeleteRegKey HKLM \
     "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
@@ -825,19 +789,148 @@ SectionEnd
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} $Desc_Section92
 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
 
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} $Desc_Section92
 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
 
-;Function un.onUninstSuccess
-;  HideWindow
-;  MessageBox MB_ICONINFORMATION|MB_OK \
-;    "$(^Name) was successfully removed from your computer."
-;FunctionEnd
+Function un.OnUnInstFailed
+    UAC::Unload
+FunctionEnd
+
+Function un.OnUnInstSuccess
+    UAC::Unload
+    Delete "$INSTDIR\UAC.dll"
+FunctionEnd
 
 Function un.onInit
 
 Function un.onInit
+
+UAC_Elevate:
+    UAC::RunElevated
+    StrCmp 1223 $0 UAC_ElevationAborted
+    StrCmp 0 $0 0 UAC_Err
+    StrCmp 1 $1 0 UAC_Success
+    Quit
+
+UAC_Err:
+    MessageBox mb_iconstop "Unable to elevate, error $0"
+    Abort
+
+UAC_ElevationAborted:
+    MessageBox mb_iconstop "This installer requires admin access, aborting!"
+    Abort
+
+UAC_Success:
+    StrCmp 1 $3 +4
+    StrCmp 3 $1 0 UAC_ElevationAborted
+    MessageBox mb_iconstop "This installer requires admin access, try again"
+    goto UAC_Elevate
+
   !insertmacro MUI_UNGETLANGUAGE
   !insertmacro MUI_UNGETLANGUAGE
-  
+
   !include "languages\english.nsh"
   !include "languages\english.nsh"
-  StrCmp $LANGUAGE ${LANG_FRENCH} French EndLanguageCmp
+  StrCmp $LANGUAGE ${LANG_FRENCH} French 0
+  StrCmp $LANGUAGE ${LANG_GERMAN} German 0
+  StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
+  StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
+  StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
+  StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
+  StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
+  StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
+  StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
+  StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
+  StrCmp $LANGUAGE ${LANG_DANISH} Danish 0
+  StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
+  StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
+  StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
+;  StrCmp $LANGUAGE ${LANG_BENGALI} Bengali 0
+;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
+;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
+  StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
+  StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0
+  StrCmp $LANGUAGE ${LANG_LITHUANIAN} Lithuanian 0
+  StrCmp $LANGUAGE ${LANG_BASQUE} Basque 0
+  StrCmp $LANGUAGE ${LANG_SERBIAN} Serbian 0
+  StrCmp $LANGUAGE ${LANG_RUSSIAN} Russian 0
+  StrCmp $LANGUAGE ${LANG_HEBREW} Hebrew 0
+  StrCmp $LANGUAGE ${LANG_GALICIAN} Galician 0
+  StrCmp $LANGUAGE ${LANG_SWEDISH} Swedish 0
+  StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
   French:
   !include "languages\french.nsh"
   French:
   !include "languages\french.nsh"
+  Goto EndLanguageCmp
+  German:
+  !include "languages\german.nsh"
+  Goto EndLanguageCmp
+  Italian:
+  !include "languages\italian.nsh"
+  Goto EndLanguageCmp
+  Hungarian:
+  !include "languages\hungarian.nsh"
+  Goto EndLanguageCmp
+  Romanian:
+  !include "languages\romanian.nsh"
+  Goto EndLanguageCmp
+  Catalan:
+  !include "languages\catalan.nsh"
+  Goto EndLanguageCmp
+  Bulgarian:
+  !include "languages\bulgarian.nsh"
+  Goto EndLanguageCmp
+  Slovak:
+  !include "languages\slovak.nsh"
+  Goto EndLanguageCmp
+  Polish:
+  !include "languages\polish.nsh"
+  Goto EndLanguageCmp
+  Dutch:
+  !include "languages\dutch.nsh"
+  Goto EndLanguageCmp
+  Danish:
+  !include "languages\danish.nsh"
+  Goto EndLanguageCmp
+  Schinese:
+  !include "languages\schinese.nsh"
+  Goto EndLanguageCmp
+  Finnish:
+  !include "languages\finnish.nsh"
+  Goto EndLanguageCmp
+  Japanese:
+  !include "languages\japanese.nsh"
+  Goto EndLanguageCmp
+  Bengali:
+  !include "languages\bengali.nsh"
+  Goto EndLanguageCmp
+  Punjabi:
+  !include "languages\punjabi.nsh"
+  Goto EndLanguageCmp
+  Slovenian:
+  !include "languages\slovenian.nsh"
+  Goto EndLanguageCmp
+  Spanish:
+  !include "languages\spanish.nsh"
+  Goto EndLanguageCmp
+  Estonian:
+  !include "languages\estonian.nsh"
+  Goto EndLanguageCmp
+  Lithuanian:
+  !include "languages\lithuanian.nsh"
+  Goto EndLanguageCmp
+  Basque:
+  !include "languages\basque.nsh"
+  Goto EndLanguageCmp
+  Serbian:
+  !include "languages\serbian.nsh"
+  Goto EndLanguageCmp
+  Russian:
+  !include "languages\russian.nsh"
+  Goto EndLanguageCmp
+  Hebrew:
+  !include "languages\hebrew.nsh"
+  Goto EndLanguageCmp
+  Galician:
+  !include "languages\galician.nsh"
+  Goto EndLanguageCmp
+  Swedish:
+  !include "languages\swedish.nsh"
+  Goto EndLanguageCmp
+  Brazilian:
+  !include "languages\brazilian_portuguese.nsh"
   EndLanguageCmp:
   EndLanguageCmp:
-  
+
 FunctionEnd
 FunctionEnd