]> 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 ed255c1e77e45814164d2bde5fb5a038d7db0c90..a2624ea4b90eeaed86b960893ba9581f8d1d5b1f 100644 (file)
 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}"
 !define MUI_LANGDLL_REGISTRY_VALUENAME "Language"
 
-@BUILD_ACTIVEX_TRUE@ !define INSTALL_ACTIVEX
-@BUILD_MOZILLA_TRUE@ !define INSTALL_MOZILLA
-
-@FILE_LIBVLCCORE_DLL@
-@FILE_LIBVLC_DLL@
+!define INSTALL_ACTIVEX
+!define INSTALL_MOZILLA
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;
 ; 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
@@ -72,6 +69,7 @@ RequestExecutionLevel user
     !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
@@ -80,21 +78,8 @@ RequestExecutionLevel user
   ; Instfiles page
     !insertmacro MUI_PAGE_INSTFILES
   ; Finish page
-
-    Function ExecAppFile
-      Exec '$INSTDIR\vlc.exe'
-    FunctionEnd
-
-    Function AppRunAs
-      !insertmacro UAC.CallFunctionAsUser ExecAppFile
-    FunctionEnd
-
-    !define MUI_FINISHPAGE_RUN
-    !define MUI_FINISHPAGE_RUN_FUNCTION AppRunAs
     !define MUI_FINISHPAGE_LINK $Link_VisitWebsite
     !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/"
-    !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"
-    !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
     !define MUI_FINISHPAGE_NOREBOOTSUPPORT
     !insertmacro MUI_PAGE_FINISH
 
@@ -127,11 +112,14 @@ RequestExecutionLevel user
   !insertmacro MUI_LANGUAGE "Polish"
   !insertmacro MUI_LANGUAGE "Romanian"
   !insertmacro MUI_LANGUAGE "Slovak"
+  !insertmacro MUI_LANGUAGE "Serbian"
   !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
@@ -143,275 +131,12 @@ RequestExecutionLevel user
 ; Macro and Functions ;
 ;;;;;;;;;;;;;;;;;;;;;;;
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; 1. File type associations ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Function that registers 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" "" "Open"
-  WriteRegStr HKCR "VLC$R0\shell\Open" "" $ShellAssociation_Play
-  WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
-  WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
-
-;;; Vista Only part
-  ; Vista and above detection
-  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  StrCpy $R2 $R1 1
-  StrCmp $R2 '6' ForVista ToEnd
-ForVista:
-  WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
-
-ToEnd:
-FunctionEnd
-
-;; Function that registers one skin extension for VLC
-Function RegisterSkinExtension
-  ; 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 skin file ($R0)"
-  WriteRegStr HKCR "VLC$R0\shell" "" "Open"
-  WriteRegStr HKCR "VLC$R0\shell\Open" "" ""
-  WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" -Iskins --skins2-last "%1"'
-  WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
-
-;;; Vista Only part
-  ; Vista and above detection
-  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  StrCpy $R2 $R1 1
-  StrCmp $R2 '6' 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 RegisterSkinExtensionSection EXT
-  Section /o ${EXT}
-    SectionIn 1 3
-    Push $R0
-    StrCpy $R0 ${EXT}
-    Call RegisterSkinExtension
-    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} ".adt"
-  !insertmacro ${_action} ".adts"
-  !insertmacro ${_action} ".aif"
-  !insertmacro ${_action} ".aifc"
-  !insertmacro ${_action} ".aiff"
-  !insertmacro ${_action} ".au"
-  !insertmacro ${_action} ".amr"
-  !insertmacro ${_action} ".aob"
-  !insertmacro ${_action} ".ape"
-  !insertmacro ${_action} ".cda"
-  !insertmacro ${_action} ".dts"
-  !insertmacro ${_action} ".flac"
-  !insertmacro ${_action} ".it"
-  !insertmacro ${_action} ".m4a"
-  !insertmacro ${_action} ".m4p"
-  !insertmacro ${_action} ".mid"
-  !insertmacro ${_action} ".mka"
-  !insertmacro ${_action} ".mlp"
-  !insertmacro ${_action} ".mod"
-  !insertmacro ${_action} ".mp1"
-  !insertmacro ${_action} ".mp2"
-  !insertmacro ${_action} ".mp3"
-  !insertmacro ${_action} ".mpc"
-  !insertmacro ${_action} ".oma"
-  !insertmacro ${_action} ".oga"
-  !insertmacro ${_action} ".rmi"
-  !insertmacro ${_action} ".snd"
-  !insertmacro ${_action} ".s3m"
-  !insertmacro ${_action} ".spx"
-  !insertmacro ${_action} ".tta"
-  !insertmacro ${_action} ".voc"
-  !insertmacro ${_action} ".vqf"
-  !insertmacro ${_action} ".w64"
-  !insertmacro ${_action} ".wav"
-  !insertmacro ${_action} ".wma"
-  !insertmacro ${_action} ".wv"
-  !insertmacro ${_action} ".xa"
-  !insertmacro ${_action} ".xm"
-!macroend
-
-!macro MacroVideoExtensions _action
-  !insertmacro ${_action} ".3g2"
-  !insertmacro ${_action} ".3gp"
-  !insertmacro ${_action} ".3gp2"
-  !insertmacro ${_action} ".3gpp"
-  !insertmacro ${_action} ".amv"
-  !insertmacro ${_action} ".asf"
-  !insertmacro ${_action} ".avi"
-  !insertmacro ${_action} ".divx"
-  !insertmacro ${_action} ".dv"
-  !insertmacro ${_action} ".flv"
-  !insertmacro ${_action} ".gxf"
-  !insertmacro ${_action} ".m1v"
-  !insertmacro ${_action} ".m2t"
-  !insertmacro ${_action} ".m2v"
-  !insertmacro ${_action} ".m2ts"
-  !insertmacro ${_action} ".m4v"
-  !insertmacro ${_action} ".mkv"
-  !insertmacro ${_action} ".mov"
-  !insertmacro ${_action} ".mp2"
-  !insertmacro ${_action} ".mp2v"
-  !insertmacro ${_action} ".mp4"
-  !insertmacro ${_action} ".mp4v"
-  !insertmacro ${_action} ".mpa"
-  !insertmacro ${_action} ".mpe"
-  !insertmacro ${_action} ".mpeg"
-  !insertmacro ${_action} ".mpeg1"
-  !insertmacro ${_action} ".mpeg2"
-  !insertmacro ${_action} ".mpeg4"
-  !insertmacro ${_action} ".mpg"
-  !insertmacro ${_action} ".mpv2"
-  !insertmacro ${_action} ".mts"
-  !insertmacro ${_action} ".mxf"
-  !insertmacro ${_action} ".nsv"
-  !insertmacro ${_action} ".nuv"
-  !insertmacro ${_action} ".ogg"
-  !insertmacro ${_action} ".ogm"
-  !insertmacro ${_action} ".ogx"
-  !insertmacro ${_action} ".ogv"
-  !insertmacro ${_action} ".ps"
-  !insertmacro ${_action} ".rec"
-  !insertmacro ${_action} ".rm"
-  !insertmacro ${_action} ".rmvb"
-  !insertmacro ${_action} ".tod"
-  !insertmacro ${_action} ".ts"
-  !insertmacro ${_action} ".tts"
-  !insertmacro ${_action} ".vob"
-  !insertmacro ${_action} ".vro"
-  !insertmacro ${_action} ".webm"
-  !insertmacro ${_action} ".wmv"
-!macroend
-
-!macro MacroOtherExtensions _action
-  !insertmacro ${_action} ".asx"
-  !insertmacro ${_action} ".b4s"
-  !insertmacro ${_action} ".bin"
-  !insertmacro ${_action} ".cue"
-  !insertmacro ${_action} ".ifo"
-  !insertmacro ${_action} ".m3u"
-  !insertmacro ${_action} ".m3u8"
-  !insertmacro ${_action} ".pls"
-  !insertmacro ${_action} ".ram"
-  !insertmacro ${_action} ".sdp"
-  !insertmacro ${_action} ".vlc"
-  !insertmacro ${_action} ".xspf"
-!macroend
-
-!macro MacroSkinExtensions _action
-  !insertmacro ${_action} ".vlt"
-  !insertmacro ${_action} ".wsz"
-!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           ;
+; Delete prefs Macro        ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 !macro delprefs
@@ -433,71 +158,6 @@ FunctionEnd
   !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    ;
@@ -525,9 +185,9 @@ Section $Name_Section01 SEC01
   ; Subfolders
   !insertmacro InstallFolder plugins
   !insertmacro InstallFolder locale
+  !insertmacro InstallFolder sdk
 @BUILD_OSDMENU_TRUE@ !insertmacro InstallFolder osdmenu
 @BUILD_SKINS_TRUE@   !insertmacro InstallFolder skins
-@BUILD_HTTPD_TRUE@   !insertmacro InstallFolder http
 @BUILD_LUA_TRUE@     !insertmacro InstallFolder lua
 
   ; Generate the cache and add it to uninstall.log
@@ -537,16 +197,12 @@ Section $Name_Section01 SEC01
   FindClose $0
 
 
-
   ; 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"
-  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"
-  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
@@ -555,8 +211,7 @@ Section $Name_Section01 SEC01
   WriteRegStr HKCR Applications\vlc.exe "" ""
   WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player"
   WriteRegStr HKCR Applications\vlc.exe\shell\Open "" $ContextMenuEntry_PlayWith
-  WriteRegStr HKCR Applications\vlc.exe\shell\Open\command "" \
-    '"$INSTDIR\vlc.exe" --started-from-file "%1"'
+  WriteRegStr HKCR Applications\vlc.exe\shell\Open\command "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
   !insertmacro MacroAllExtensions WriteRegStrSupportedTypes
 
 ; Windows default programs Registration
@@ -581,8 +236,6 @@ SectionEnd
 Section $Name_Section02a SEC02a
   SectionIn 1 2 3
   CreateDirectory "$SMPROGRAMS\VideoLAN"
-  CreateShortCut "$SMPROGRAMS\VideoLAN\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" \
@@ -593,6 +246,8 @@ Section $Name_Section02a SEC02a
     "$INSTDIR\NEWS.txt" ""
   CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_GROUP} Website.lnk" \
     "$INSTDIR\${PRODUCT_GROUP} Website.url"
+  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
@@ -602,13 +257,13 @@ Section $Name_Section02b SEC02b
 SectionEnd
 
 !ifdef INSTALL_MOZILLA
-Section /o $Name_Section03 SEC03
-  SectionIn 3
+Section $Name_Section03 SEC03
+  SectionIn 3
 
   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}"
@@ -622,12 +277,12 @@ SectionEnd
 
 !ifdef INSTALL_ACTIVEX
 Section $Name_Section04 SEC04
-  SectionIn 3
+  SectionIn 3
 
   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
@@ -638,10 +293,10 @@ Section $Name_Section05 SEC05
   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" "" \
-    '"$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
@@ -695,25 +350,25 @@ Section $Name_Section05 SEC05
   WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie"
   WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Open"
   WriteRegStr HKCR "VLC.DVDMovie\shell\Open\command" "" \
-    '"$INSTDIR\vlc.exe" --started-from-file dvd://%1'
+    '"$INSTDIR\vlc.exe" --started-from-file dvd:///%1'
   WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
 
   WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio"
   WriteRegStr HKCR "VLC.CDAudio\shell" "" "Open"
   WriteRegStr HKCR "VLC.CDAudio\shell\Open\command" "" \
-    '"$INSTDIR\vlc.exe" --started-from-file cdda://%1'
+    '"$INSTDIR\vlc.exe" --started-from-file cdda:///%1'
   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'
+     '"$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'
+     '"$INSTDIR\vlc.exe" --started-from-file vcd:///%1'
   WriteRegStr HKCR "VLC.SVCDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
 
   WriteRegStr HKCR "VLC.OPENFolder" "" "VLC Play content"
@@ -744,7 +399,7 @@ Section $Name_Section07 SEC07
   !insertmacro AddContextMenuExt "Directory"
 SectionEnd
 
-Section $Name_Section08 SEC08
+Section /o $Name_Section08 SEC08
   !insertmacro delprefs
 SectionEnd
 
@@ -753,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
-@BUILD_MOZILLA_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $Desc_Section03
-@BUILD_ACTIVEX_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $Desc_Section04
+!ifdef INSTALL_MOZILLA
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $Desc_Section03
+!endif
+!ifdef INSTALL_ACTIVEX
+  !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
@@ -764,6 +423,18 @@ SectionEnd
 ;;; 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
@@ -797,6 +468,7 @@ UAC_Success:
   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
@@ -804,7 +476,14 @@ UAC_Success:
 ;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
 ;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
   StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
-  StrCmp $LANGUAGE ${LANG_SPANISH} Estonian 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"
@@ -836,6 +515,9 @@ UAC_Success:
   Dutch:
   !include "languages\dutch.nsh"
   Goto EndLanguageCmp
+  Danish:
+  !include "languages\danish.nsh"
+  Goto EndLanguageCmp
   Schinese:
   !include "languages\schinese.nsh"
   Goto EndLanguageCmp
@@ -860,6 +542,27 @@ UAC_Success:
   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:
@@ -868,7 +571,7 @@ UAC_Success:
   "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:
@@ -1131,6 +834,7 @@ UAC_Success:
   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
@@ -1139,6 +843,13 @@ UAC_Success:
 ;  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"
@@ -1170,6 +881,9 @@ UAC_Success:
   Dutch:
   !include "languages\dutch.nsh"
   Goto EndLanguageCmp
+  Danish:
+  !include "languages\danish.nsh"
+  Goto EndLanguageCmp
   Schinese:
   !include "languages\schinese.nsh"
   Goto EndLanguageCmp
@@ -1194,6 +908,27 @@ UAC_Success:
   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: