!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "Language"
-@HAVE_WIN64_FALSE@ !define INSTALL_ACTIVEX
+!define INSTALL_ACTIVEX
!define INSTALL_MOZILLA
;;;;;;;;;;;;;;;;;;;;;;;;;
; 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
; 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" "MultiSelectModel" "Player"
- 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} ".3ga"
- !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} ".caf"
- !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} ".f4v"
- !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} ".mtv"
- !insertmacro ${_action} ".mxf"
- !insertmacro ${_action} ".nsv"
- !insertmacro ${_action} ".nuv"
- !insertmacro ${_action} ".ogg"
- !insertmacro ${_action} ".ogm"
- !insertmacro ${_action} ".ogx"
- !insertmacro ${_action} ".ogv"
- !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
!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 ;
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
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
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" \
"$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
!ifdef INSTALL_MOZILLA
Section $Name_Section03 SEC03
- SectionIn 3
+ SectionIn 1 3
SetOutPath "$INSTDIR"
!insertmacro OpenUninstallLog
!ifdef INSTALL_ACTIVEX
Section $Name_Section04 SEC04
- SectionIn 3
+ SectionIn 1 3
SetOutPath "$INSTDIR"
!insertmacro OpenUninstallLog
;;; 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