VLC media player: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 6: | Line 6: | ||
<highlight-nsis> | <highlight-nsis> | ||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
; NSIS installer script for vlc ; | ; NSIS installer script for vlc ; | ||
; (http://nsis.sourceforge.net) ; | ; (http://nsis.sourceforge.net) ; | ||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
!define PRODUCT_NAME "VLC media player" | !define PRODUCT_NAME "VLC media player" | ||
!define PRODUCT_VERSION '${VERSION}' | !define PRODUCT_VERSION '${VERSION}' | ||
!define PRODUCT_GROUP "VideoLAN" | !define PRODUCT_GROUP "VideoLAN" | ||
!define PRODUCT_PUBLISHER "VideoLAN Team" | !define PRODUCT_PUBLISHER "VideoLAN Team" | ||
!define PRODUCT_WEB_SITE "http://www.videolan.org" | !define PRODUCT_WEB_SITE "http://www.videolan.org" | ||
!define PRODUCT_DIR_REGKEY "Software\VideoLAN\VLC" | !define PRODUCT_DIR_REGKEY "Software\VideoLAN\VLC" | ||
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" | !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" | ||
!define PRODUCT_UNINST_ROOT_KEY "HKLM" | !define PRODUCT_UNINST_ROOT_KEY "HKLM" | ||
!define PRODUCT_ID "{ea92ef52-afe4-4212-bacb-dfe9fca94cd6}" | !define PRODUCT_ID "{ea92ef52-afe4-4212-bacb-dfe9fca94cd6}" | ||
!define MUI_LANGDLL_REGISTRY_ROOT "HKLM" | |||
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}" | |||
!define MUI_LANGDLL_REGISTRY_VALUENAME "Language" | |||
@FILE_LIBVLC_DLL@ | @FILE_LIBVLC_DLL@ | ||
;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;; | ||
; General configuration ; | ; General configuration ; | ||
;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;; | ||
Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}" | Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}" | ||
OutFile ..\vlc-${VERSION}-win32.exe | OutFile ..\vlc-${VERSION}-win32.exe | ||
InstallDir "$PROGRAMFILES\VideoLAN\VLC" | InstallDir "$PROGRAMFILES\VideoLAN\VLC" | ||
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" | InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" | ||
!ifdef NSIS_LZMA_COMPRESS_WHOLE | !ifdef NSIS_LZMA_COMPRESS_WHOLE | ||
SetCompressor lzma | SetCompressor lzma | ||
!else | !else | ||
SetCompressor /SOLID lzma | SetCompressor /SOLID lzma | ||
!endif | !endif | ||
;ShowInstDetails show | ;ShowInstDetails show | ||
;ShowUnInstDetails show | ;ShowUnInstDetails show | ||
SetOverwrite ifnewer | SetOverwrite ifnewer | ||
CRCCheck on | CRCCheck on | ||
InstType "Recommended" | InstType "Recommended" | ||
InstType "Minimum" | InstType "Minimum" | ||
InstType "Full" | InstType "Full" | ||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
; NSIS Modern User Interface configuration ; | ; NSIS Modern User Interface configuration ; | ||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
; MUI 1.67 compatible ------ | ; MUI 1.67 compatible ------ | ||
!include "MUI.nsh" | !include "MUI.nsh" | ||
; MUI Settings | ; MUI Settings | ||
!define MUI_ABORTWARNING | !define MUI_ABORTWARNING | ||
!define MUI_ICON "vlc48x48.ico" | !define MUI_ICON "vlc48x48.ico" | ||
!define MUI_UNICON "vlc48x48.ico" | !define MUI_UNICON "vlc48x48.ico" | ||
!define MUI_COMPONENTSPAGE_SMALLDESC | !define MUI_COMPONENTSPAGE_SMALLDESC | ||
; Installer pages | ; Installer pages | ||
; Welcome page | ; Welcome page | ||
!define MUI_WELCOMEPAGE_TITLE_3LINES | !define MUI_WELCOMEPAGE_TITLE_3LINES | ||
!insertmacro MUI_PAGE_WELCOME | !insertmacro MUI_PAGE_WELCOME | ||
; License page | ; License page | ||
!insertmacro MUI_PAGE_LICENSE "COPYING.txt" | !insertmacro MUI_PAGE_LICENSE "COPYING.txt" | ||
; Components page | ; Components page | ||
!insertmacro MUI_PAGE_COMPONENTS | !insertmacro MUI_PAGE_COMPONENTS | ||
; Directory page | ; Directory page | ||
!insertmacro MUI_PAGE_DIRECTORY | !insertmacro MUI_PAGE_DIRECTORY | ||
; Instfiles page | ; Instfiles page | ||
!insertmacro MUI_PAGE_INSTFILES | !insertmacro MUI_PAGE_INSTFILES | ||
; Finish page | ; Finish page | ||
!define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe" | !define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe" | ||
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt" | !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt" | ||
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED | !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED | ||
!define MUI_FINISHPAGE_LINK "Visit the VideoLAN VLC media player Website" | !define MUI_FINISHPAGE_LINK "Visit the VideoLAN VLC media player Website" | ||
!define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/" | !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/" | ||
!define MUI_FINISHPAGE_NOREBOOTSUPPORT | !define MUI_FINISHPAGE_NOREBOOTSUPPORT | ||
!insertmacro MUI_PAGE_FINISH | !insertmacro MUI_PAGE_FINISH | ||
; Uninstaller pages | ; Uninstaller pages | ||
!insertmacro MUI_UNPAGE_CONFIRM | !insertmacro MUI_UNPAGE_CONFIRM | ||
!insertmacro MUI_UNPAGE_COMPONENTS | !insertmacro MUI_UNPAGE_COMPONENTS | ||
!insertmacro MUI_UNPAGE_INSTFILES | !insertmacro MUI_UNPAGE_INSTFILES | ||
!insertmacro MUI_UNPAGE_FINISH | !insertmacro MUI_UNPAGE_FINISH | ||
; Language files | ; Language files | ||
!insertmacro MUI_LANGUAGE "English" # first language is the default language | !insertmacro MUI_LANGUAGE "English" # first language is the default language | ||
!insertmacro MUI_LANGUAGE "French" | !insertmacro MUI_LANGUAGE "French" | ||
!insertmacro MUI_LANGUAGE "German" | !insertmacro MUI_LANGUAGE "German" | ||
!insertmacro MUI_LANGUAGE "Spanish" | !insertmacro MUI_LANGUAGE "Spanish" | ||
!insertmacro MUI_LANGUAGE "SimpChinese" | !insertmacro MUI_LANGUAGE "SimpChinese" | ||
!insertmacro MUI_LANGUAGE "TradChinese" | !insertmacro MUI_LANGUAGE "TradChinese" | ||
!insertmacro MUI_LANGUAGE "Japanese" | !insertmacro MUI_LANGUAGE "Japanese" | ||
!insertmacro MUI_LANGUAGE "Korean" | !insertmacro MUI_LANGUAGE "Korean" | ||
!insertmacro MUI_LANGUAGE "Italian" | !insertmacro MUI_LANGUAGE "Italian" | ||
!insertmacro MUI_LANGUAGE "Dutch" | !insertmacro MUI_LANGUAGE "Dutch" | ||
!insertmacro MUI_LANGUAGE "Danish" | !insertmacro MUI_LANGUAGE "Danish" | ||
!insertmacro MUI_LANGUAGE "Swedish" | !insertmacro MUI_LANGUAGE "Swedish" | ||
!insertmacro MUI_LANGUAGE "Norwegian" | !insertmacro MUI_LANGUAGE "Norwegian" | ||
!insertmacro MUI_LANGUAGE "Finnish" | !insertmacro MUI_LANGUAGE "Finnish" | ||
!insertmacro MUI_LANGUAGE "Greek" | !insertmacro MUI_LANGUAGE "Greek" | ||
!insertmacro MUI_LANGUAGE "Russian" | !insertmacro MUI_LANGUAGE "Russian" | ||
!insertmacro MUI_LANGUAGE "Portuguese" | !insertmacro MUI_LANGUAGE "Portuguese" | ||
!insertmacro MUI_LANGUAGE "Arabic" | !insertmacro MUI_LANGUAGE "Arabic" | ||
!insertmacro MUI_LANGUAGE "Polish" | !insertmacro MUI_LANGUAGE "Polish" | ||
!insertmacro MUI_RESERVEFILE_LANGDLL | !insertmacro MUI_RESERVEFILE_LANGDLL | ||
; Reserve files | ; Reserve files | ||
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS | !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS | ||
; MUI end ------ | ; MUI end ------ | ||
;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;; | ||
; Extension lists ; | ; Extension lists ; | ||
;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;; | ||
!macro MacroAudioExtensions _action | !macro MacroAudioExtensions _action | ||
!insertmacro ${_action} ".a52" | !insertmacro ${_action} ".a52" | ||
!insertmacro ${_action} ".aac" | !insertmacro ${_action} ".aac" | ||
!insertmacro ${_action} ".ac3" | !insertmacro ${_action} ".ac3" | ||
!insertmacro ${_action} ".dts" | !insertmacro ${_action} ".dts" | ||
!insertmacro ${_action} ".flac" | !insertmacro ${_action} ".flac" | ||
!insertmacro ${_action} ".mka" | !insertmacro ${_action} ".mka" | ||
!insertmacro ${_action} ".mp1" | !insertmacro ${_action} ".mp1" | ||
!insertmacro ${_action} ".mp2" | !insertmacro ${_action} ".mp2" | ||
!insertmacro ${_action} ".mp3" | !insertmacro ${_action} ".mp3" | ||
!insertmacro ${_action} ".ogg" | !insertmacro ${_action} ".ogg" | ||
!insertmacro ${_action} ".spx" | !insertmacro ${_action} ".spx" | ||
!insertmacro ${_action} ".wav" | !insertmacro ${_action} ".wav" | ||
!insertmacro ${_action} ".wma" | !insertmacro ${_action} ".wma" | ||
!macroend | !macroend | ||
!macro MacroVideoExtensions _action | !macro MacroVideoExtensions _action | ||
!insertmacro ${_action} ".asf" | !insertmacro ${_action} ".asf" | ||
!insertmacro ${_action} ".avi" | !insertmacro ${_action} ".avi" | ||
!insertmacro ${_action} ".divx" | !insertmacro ${_action} ".divx" | ||
!insertmacro ${_action} ".dv" | !insertmacro ${_action} ".dv" | ||
!insertmacro ${_action} ".m1v" | !insertmacro ${_action} ".m1v" | ||
!insertmacro ${_action} ".m2v" | !insertmacro ${_action} ".m2v" | ||
!insertmacro ${_action} ".mkv" | !insertmacro ${_action} ".mkv" | ||
!insertmacro ${_action} ".mov" | !insertmacro ${_action} ".mov" | ||
!insertmacro ${_action} ".mp4" | !insertmacro ${_action} ".mp4" | ||
!insertmacro ${_action} ".mpeg" | !insertmacro ${_action} ".mpeg" | ||
!insertmacro ${_action} ".mpeg1" | !insertmacro ${_action} ".mpeg1" | ||
!insertmacro ${_action} ".mpeg2" | !insertmacro ${_action} ".mpeg2" | ||
!insertmacro ${_action} ".mpeg4" | !insertmacro ${_action} ".mpeg4" | ||
!insertmacro ${_action} ".mpg" | !insertmacro ${_action} ".mpg" | ||
!insertmacro ${_action} ".ps" | !insertmacro ${_action} ".ps" | ||
!insertmacro ${_action} ".ts" | !insertmacro ${_action} ".ts" | ||
!insertmacro ${_action} ".ogm" | !insertmacro ${_action} ".ogm" | ||
!insertmacro ${_action} ".vob" | !insertmacro ${_action} ".vob" | ||
!insertmacro ${_action} ".wmv" | !insertmacro ${_action} ".wmv" | ||
!macroend | !macroend | ||
!macro MacroOtherExtensions _action | !macro MacroOtherExtensions _action | ||
!insertmacro ${_action} ".asx" | !insertmacro ${_action} ".asx" | ||
!insertmacro ${_action} ".bin" | !insertmacro ${_action} ".bin" | ||
!insertmacro ${_action} ".cue" | !insertmacro ${_action} ".cue" | ||
!insertmacro ${_action} ".m3u" | !insertmacro ${_action} ".m3u" | ||
!insertmacro ${_action} ".pls" | !insertmacro ${_action} ".pls" | ||
!insertmacro ${_action} ".vlc" | !insertmacro ${_action} ".vlc" | ||
!macroend | !macroend | ||
!macro MacroAllExtensions _action | !macro MacroAllExtensions _action | ||
!insertmacro MacroAudioExtensions ${_action} | !insertmacro MacroAudioExtensions ${_action} | ||
!insertmacro MacroVideoExtensions ${_action} | !insertmacro MacroVideoExtensions ${_action} | ||
!insertmacro MacroOtherExtensions ${_action} | !insertmacro MacroOtherExtensions ${_action} | ||
!macroend | !macroend | ||
;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
; File type associations ; | ; File type associations ; | ||
;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
Function RegisterExtension | Function RegisterExtension | ||
; back up old value for extension $R0 (eg. ".opt") | ; back up old value for extension $R0 (eg. ".opt") | ||
ReadRegStr $1 HKCR "$R0" "" | ReadRegStr $1 HKCR "$R0" "" | ||
StrCmp $1 "" NoBackup | StrCmp $1 "" NoBackup | ||
StrCmp $1 "VLC$R0" "NoBackup" | StrCmp $1 "VLC$R0" "NoBackup" | ||
WriteRegStr HKCR "$R0" "VLC.backup" $1 | WriteRegStr HKCR "$R0" "VLC.backup" $1 | ||
NoBackup: | NoBackup: | ||
WriteRegStr HKCR "$R0" "" "VLC$R0" | WriteRegStr HKCR "$R0" "" "VLC$R0" | ||
ReadRegStr $0 HKCR "VLC$R0" "" | ReadRegStr $0 HKCR "VLC$R0" "" | ||
WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)" | WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)" | ||
WriteRegStr HKCR "VLC$R0\shell" "" "Play" | WriteRegStr HKCR "VLC$R0\shell" "" "Play" | ||
WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"' | WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"' | ||
WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0' | WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0' | ||
FunctionEnd | FunctionEnd | ||
Function un.RegisterExtension | Function un.RegisterExtension | ||
;start of restore script | ;start of restore script | ||
ReadRegStr $1 HKCR "$R0" "" | ReadRegStr $1 HKCR "$R0" "" | ||
StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it | StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it | ||
ReadRegStr $1 HKCR "$R0" "VLC.backup" | ReadRegStr $1 HKCR "$R0" "VLC.backup" | ||
StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key | StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key | ||
DeleteRegKey HKCR "$R0" | DeleteRegKey HKCR "$R0" | ||
Goto NoOwn | Goto NoOwn | ||
Restore: | Restore: | ||
WriteRegStr HKCR "$R0" "" $1 | WriteRegStr HKCR "$R0" "" $1 | ||
DeleteRegValue HKCR "$R0" "VLC.backup" | DeleteRegValue HKCR "$R0" "VLC.backup" | ||
NoOwn: | NoOwn: | ||
DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings | DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings | ||
FunctionEnd | FunctionEnd | ||
!macro RegisterExtensionSection EXT | !macro RegisterExtensionSection EXT | ||
Section ${EXT} | Section ${EXT} | ||
SectionIn 1 3 | SectionIn 1 3 | ||
Push $R0 | Push $R0 | ||
StrCpy $R0 ${EXT} | StrCpy $R0 ${EXT} | ||
Call RegisterExtension | Call RegisterExtension | ||
Pop $R0 | Pop $R0 | ||
SectionEnd | SectionEnd | ||
!macroend | !macroend | ||
!macro UnRegisterExtensionSection EXT | !macro UnRegisterExtensionSection EXT | ||
Push $R0 | Push $R0 | ||
StrCpy $R0 ${EXT} | StrCpy $R0 ${EXT} | ||
Call un.RegisterExtension | Call un.RegisterExtension | ||
Pop $R0 | Pop $R0 | ||
!macroend | !macroend | ||
!macro WriteRegStrSupportedTypes EXT | !macro WriteRegStrSupportedTypes EXT | ||
WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} "" | WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} "" | ||
!macroend | !macroend | ||
;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;; | ||
; Context menu entries ; | ; Context menu entries ; | ||
;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;; | ||
!macro AddContextMenu EXT | !macro AddContextMenu EXT | ||
WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" "Play with VLC media player" | WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" "Play with VLC media player" | ||
WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '$INSTDIR\vlc.exe --started-from-file --no-playlist-enqueue "%1"' | WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '$INSTDIR\vlc.exe --started-from-file --no-playlist-enqueue "%1"' | ||
WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" "Add to VLC media player's Playlist" | WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" "Add to VLC media player's Playlist" | ||
WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '$INSTDIR\vlc.exe --started-from-file --playlist-enqueue "%1"' | WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '$INSTDIR\vlc.exe --started-from-file --playlist-enqueue "%1"' | ||
!macroend | !macroend | ||
!macro DeleteContextMenu EXT | !macro DeleteContextMenu EXT | ||
DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC | DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC | ||
DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC | DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC | ||
!macroend | !macroend | ||
;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
; Delete prefs and cache ; | ; Delete prefs and cache ; | ||
;;;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
!macro delprefs | !macro delprefs | ||
StrCpy $0 0 | StrCpy $0 0 | ||
!define Index 'Line${__LINE__}' | !define Index 'Line${__LINE__}' | ||
"${Index}-Loop:" | "${Index}-Loop:" | ||
; FIXME | ; FIXME | ||
; this will loop through all the logged users and "virtual" windows users | ; this will loop through all the logged users and "virtual" windows users | ||
; (it looks like users are only present in HKEY_USERS when they are logged in) | ; (it looks like users are only present in HKEY_USERS when they are logged in) | ||
ClearErrors | ClearErrors | ||
EnumRegKey $1 HKU "" $0 | EnumRegKey $1 HKU "" $0 | ||
StrCmp $1 "" "${Index}-End" | StrCmp $1 "" "${Index}-End" | ||
IntOp $0 $0 + 1 | IntOp $0 $0 + 1 | ||
ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData | ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData | ||
StrCmp $2 "" "${Index}-Loop" | StrCmp $2 "" "${Index}-Loop" | ||
RMDir /r "$2\vlc" | RMDir /r "$2\vlc" | ||
Goto "${Index}-Loop" | Goto "${Index}-Loop" | ||
"${Index}-End:" | "${Index}-End:" | ||
!undef Index | !undef Index | ||
!macroend | !macroend | ||
Var UninstallLog | Var UninstallLog | ||
!macro OpenUninstallLog | !macro OpenUninstallLog | ||
FileOpen $UninstallLog "$INSTDIR\uninstall.log" a | FileOpen $UninstallLog "$INSTDIR\uninstall.log" a | ||
FileSeek $UninstallLog 0 END | FileSeek $UninstallLog 0 END | ||
!macroend | !macroend | ||
!macro CloseUninstallLog | !macro CloseUninstallLog | ||
FileClose $UninstallLog | FileClose $UninstallLog | ||
SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN | SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN | ||
!macroend | !macroend | ||
!macro InstallFile FILEREGEX | !macro InstallFile FILEREGEX | ||
File "${FILEREGEX}" | File "${FILEREGEX}" | ||
!define Index 'Line${__LINE__}' | !define Index 'Line${__LINE__}' | ||
FindFirst $0 $1 "$INSTDIR\${FILEREGEX}" | FindFirst $0 $1 "$INSTDIR\${FILEREGEX}" | ||
StrCmp $0 "" "${Index}-End" | StrCmp $0 "" "${Index}-End" | ||
"${Index}-Loop:" | "${Index}-Loop:" | ||
StrCmp $1 "" "${Index}-End" | StrCmp $1 "" "${Index}-End" | ||
FileWrite $UninstallLog "$1$\r$\n" | FileWrite $UninstallLog "$1$\r$\n" | ||
FindNext $0 $1 | FindNext $0 $1 | ||
Goto "${Index}-Loop" | Goto "${Index}-Loop" | ||
"${Index}-End:" | "${Index}-End:" | ||
!undef Index | !undef Index | ||
!macroend | !macroend | ||
!macro InstallFolder FOLDER | !macro InstallFolder FOLDER | ||
File /r "${FOLDER}" | File /r "${FOLDER}" | ||
Push "${FOLDER}" | Push "${FOLDER}" | ||
Call InstallFolderInternal | Call InstallFolderInternal | ||
!macroend | !macroend | ||
Function InstallFolderInternal | Function InstallFolderInternal | ||
Pop $9 | Pop $9 | ||
!define Index 'Line${__LINE__}' | !define Index 'Line${__LINE__}' | ||
FindFirst $0 $1 "$INSTDIR\$9\*" | FindFirst $0 $1 "$INSTDIR\$9\*" | ||
StrCmp $0 "" "${Index}-End" | StrCmp $0 "" "${Index}-End" | ||
"${Index}-Loop:" | "${Index}-Loop:" | ||
StrCmp $1 "" "${Index}-End" | StrCmp $1 "" "${Index}-End" | ||
StrCmp $1 "." "${Index}-Next" | StrCmp $1 "." "${Index}-Next" | ||
StrCmp $1 ".." "${Index}-Next" | StrCmp $1 ".." "${Index}-Next" | ||
IfFileExists "$9\$1\*" 0 "${Index}-Write" | IfFileExists "$9\$1\*" 0 "${Index}-Write" | ||
Push $0 | Push $0 | ||
Push $9 | Push $9 | ||
Push "$9\$1" | Push "$9\$1" | ||
Call InstallFolderInternal | Call InstallFolderInternal | ||
Pop $9 | Pop $9 | ||
Pop $0 | Pop $0 | ||
Goto "${Index}-Next" | Goto "${Index}-Next" | ||
"${Index}-Write:" | "${Index}-Write:" | ||
FileWrite $UninstallLog "$9\$1$\r$\n" | FileWrite $UninstallLog "$9\$1$\r$\n" | ||
"${Index}-Next:" | "${Index}-Next:" | ||
FindNext $0 $1 | FindNext $0 $1 | ||
Goto "${Index}-Loop" | Goto "${Index}-Loop" | ||
"${Index}-End:" | "${Index}-End:" | ||
!undef Index | !undef Index | ||
FunctionEnd | FunctionEnd | ||
;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;; | ||
; Installer sections ; | ; Installer sections ; | ||
;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;; | ||
Section "Media player (required)" SEC01 | Section "Media player (required)" SEC01 | ||
SectionIn 1 2 3 RO | SectionIn 1 2 3 RO | ||
SetShellVarContext all | SetShellVarContext all | ||
SetOutPath "$INSTDIR" | SetOutPath "$INSTDIR" | ||
!insertmacro OpenUninstallLog | !insertmacro OpenUninstallLog | ||
!insertmacro InstallFile vlc.exe | !insertmacro InstallFile vlc.exe | ||
!insertmacro InstallFile vlc.exe.manifest | !insertmacro InstallFile vlc.exe.manifest | ||
!ifdef LIBVLC_DLL | !ifdef LIBVLC_DLL | ||
!insertmacro InstallFile ${LIBVLC_DLL} | !insertmacro InstallFile ${LIBVLC_DLL} | ||
!endif | !endif | ||
!insertmacro InstallFile *.txt | !insertmacro InstallFile *.txt | ||
!insertmacro InstallFolder plugins | !insertmacro InstallFolder plugins | ||
!insertmacro InstallFolder locale | !insertmacro InstallFolder locale | ||
!insertmacro InstallFolder osdmenu | !insertmacro InstallFolder osdmenu | ||
!insertmacro InstallFolder skins | !insertmacro InstallFolder skins | ||
!insertmacro InstallFolder http | !insertmacro InstallFolder http | ||
WriteIniStr "$INSTDIR\${PRODUCT_GROUP} Website.url" "InternetShortcut" "URL" \ | WriteIniStr "$INSTDIR\${PRODUCT_GROUP} Website.url" "InternetShortcut" "URL" \ | ||
"${PRODUCT_WEB_SITE}" | "${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" \ | WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" \ | ||
"${PRODUCT_WEB_SITE}/doc/" | "${PRODUCT_WEB_SITE}/doc/" | ||
FileWrite $UninstallLog "Documentation.url$\r$\n" | FileWrite $UninstallLog "Documentation.url$\r$\n" | ||
!insertmacro CloseUninstallLog | !insertmacro CloseUninstallLog | ||
; Add VLC to "recomended programs" for the following extensions | ; Add VLC to "recomended programs" for the following extensions | ||
WriteRegStr HKCR Applications\vlc.exe "" "" | WriteRegStr HKCR Applications\vlc.exe "" "" | ||
WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player" | WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player" | ||
WriteRegStr HKCR Applications\vlc.exe\shell\Play "" "Play with VLC" | WriteRegStr HKCR Applications\vlc.exe\shell\Play "" "Play with VLC" | ||
WriteRegStr HKCR Applications\vlc.exe\shell\Play\command "" \ | WriteRegStr HKCR Applications\vlc.exe\shell\Play\command "" \ | ||
'$INSTDIR\vlc.exe --started-from-file "%1"' | '$INSTDIR\vlc.exe --started-from-file "%1"' | ||
!insertmacro MacroAllExtensions WriteRegStrSupportedTypes | !insertmacro MacroAllExtensions WriteRegStrSupportedTypes | ||
WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" "Play with VLC media player" | WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" "Play with VLC media player" | ||
WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \ | 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" "" "Play with VLC media player" | WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" "Play with VLC media player" | ||
WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \ | 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\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" "" | ||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" "Play DVD movie" | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" "Play DVD movie" | ||
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" "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" "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" "play" | ||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "VideoLAN VLC media player" | 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\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" "" | ||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" "Play CD audio" | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" "Play CD audio" | ||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe --started-from-file",0' | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe --started-from-file",0' | ||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeProgID" "VLC.CDAudio" | 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" "play" | ||
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 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" | ||
WriteRegStr HKCR "VLC.DVDMovie\shell\Play\command" "" \ | WriteRegStr HKCR "VLC.DVDMovie\shell\Play\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.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" | ||
WriteRegStr HKCR "VLC.CDAudio\shell\Play\command" "" \ | WriteRegStr HKCR "VLC.CDAudio\shell\Play\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.CDAudio\DefaultIcon" "" '"$INSTDIR\vlc.exe",0' | ||
SectionEnd | SectionEnd | ||
Section "Start Menu Shortcut" SEC02a | Section "Start Menu Shortcut" SEC02a | ||
SectionIn 1 2 3 | SectionIn 1 2 3 | ||
CreateDirectory "$SMPROGRAMS\VideoLAN" | CreateDirectory "$SMPROGRAMS\VideoLAN" | ||
CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings" | CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings" | ||
CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Audio" | CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Audio" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Audio\Set Audio mode to DirectX (default).lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Audio\Set Audio mode to DirectX (default).lnk" \ | ||
"$INSTDIR\vlc.exe" "--aout aout_directx --save-config vlc:quit" | "$INSTDIR\vlc.exe" "--aout aout_directx --save-config vlc:quit" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Audio\Set Audio mode to Waveout.lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Audio\Set Audio mode to Waveout.lnk" \ | ||
"$INSTDIR\vlc.exe" "--aout waveout --save-config vlc:quit" | "$INSTDIR\vlc.exe" "--aout waveout --save-config vlc:quit" | ||
CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Interface" | CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Interface" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Interface\Set Main Interface to Skinnable.lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Interface\Set Main Interface to Skinnable.lnk" \ | ||
"$INSTDIR\vlc.exe" "-I skins --save-config vlc:quit" | "$INSTDIR\vlc.exe" "-I skins --save-config vlc:quit" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Interface\Set Main Interface to wxWidgets (default).lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Interface\Set Main Interface to wxWidgets (default).lnk" \ | ||
"$INSTDIR\vlc.exe" "-I wxwin --save-config vlc:quit" | "$INSTDIR\vlc.exe" "-I wxwin --save-config vlc:quit" | ||
CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Video" | CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Video" | ||
; FIXME add detection for Vista. Direct3D will be default there, for all others it's DirectX | ; 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" \ | 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" | "$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" \ | 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" | "$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" \ | 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" | "$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" \ | 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" | "$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" \ | 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" | "$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" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to OpenGL.lnk" \ | ||
"$INSTDIR\vlc.exe" "--vout opengl --overlay --save-config vlc:quit" | "$INSTDIR\vlc.exe" "--vout opengl --overlay --save-config vlc:quit" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Reset VLC media player preferences and cache files.lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Reset VLC media player preferences and cache files.lnk" \ | ||
"$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache --save-config vlc:quit" | "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache --save-config vlc:quit" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \ | ||
"$INSTDIR\Documentation.url" | "$INSTDIR\Documentation.url" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\Release Notes.lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\Release Notes.lnk" \ | ||
"$INSTDIR\NEWS.txt" "" | "$INSTDIR\NEWS.txt" "" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_GROUP} Website.lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_GROUP} Website.lnk" \ | ||
"$INSTDIR\${PRODUCT_GROUP} Website.url" | "$INSTDIR\${PRODUCT_GROUP} Website.url" | ||
CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \ | CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \ | ||
"$INSTDIR\vlc.exe" "" | "$INSTDIR\vlc.exe" "" | ||
SectionEnd | SectionEnd | ||
Section "Desktop Shortcut" SEC02b | Section "Desktop Shortcut" SEC02b | ||
SectionIn 1 2 3 | SectionIn 1 2 3 | ||
CreateShortCut "$DESKTOP\VLC media player.lnk" \ | CreateShortCut "$DESKTOP\VLC media player.lnk" \ | ||
"$INSTDIR\vlc.exe" "" | "$INSTDIR\vlc.exe" "" | ||
SectionEnd | SectionEnd | ||
Section /o "Mozilla plugin" SEC03 | Section /o "Mozilla plugin" SEC03 | ||
SectionIn 3 | SectionIn 3 | ||
SetOutPath "$INSTDIR" | SetOutPath "$INSTDIR" | ||
!insertmacro OpenUninstallLog | !insertmacro OpenUninstallLog | ||
!insertmacro InstallFile mozilla\npvlc.dll | !insertmacro InstallFile mozilla\npvlc.dll | ||
!insertmacro CloseUninstallLog | !insertmacro CloseUninstallLog | ||
!define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}" | !define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}" | ||
WriteRegStr HKLM ${Moz} "Description" "VLC Multimedia Plugin" | WriteRegStr HKLM ${Moz} "Description" "VLC Multimedia Plugin" | ||
WriteRegStr HKLM ${Moz} "Path" "$INSTDIR\npvlc.dll" | WriteRegStr HKLM ${Moz} "Path" "$INSTDIR\npvlc.dll" | ||
WriteRegStr HKLM ${Moz} "Product" "VLC media player" | WriteRegStr HKLM ${Moz} "Product" "VLC media player" | ||
WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN" | WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN" | ||
WriteRegStr HKLM ${Moz} "Version" "${VERSION}" | WriteRegStr HKLM ${Moz} "Version" "${VERSION}" | ||
; for very old version of mozilla, these lines may be needed | ; for very old version of mozilla, these lines may be needed | ||
;Push $R0 | ;Push $R0 | ||
;Push $R1 | ;Push $R1 | ||
;Push $R2 | ;Push $R2 | ||
;!define Index 'Line${__LINE__}' | ;!define Index 'Line${__LINE__}' | ||
;StrCpy $R1 "0" | ;StrCpy $R1 "0" | ||
;"${Index}-Loop:" | ;"${Index}-Loop:" | ||
; ; Check for Key | ; ; Check for Key | ||
; EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1" | ; EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1" | ||
; StrCmp $R0 "" "${Index}-End" | ; StrCmp $R0 "" "${Index}-End" | ||
; IntOp $R1 $R1 + 1 | ; IntOp $R1 $R1 + 1 | ||
; ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins" | ; ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins" | ||
; StrCmp $R2 "" "${Index}-Loop" "" | ; StrCmp $R2 "" "${Index}-Loop" "" | ||
; CopyFiles "$INSTDIR\npvlc.dll" "$R2" | ; CopyFiles "$INSTDIR\npvlc.dll" "$R2" | ||
; !ifdef LIBVLC_DLL | ; !ifdef LIBVLC_DLL | ||
; CopyFiles ${LIBVLC_DLL} "$R2" | ; CopyFiles ${LIBVLC_DLL} "$R2" | ||
; !endif | ; !endif | ||
; Goto "${Index}-Loop" | ; Goto "${Index}-Loop" | ||
;"${Index}-End:" | ;"${Index}-End:" | ||
;!undef Index | ;!undef Index | ||
SectionEnd | SectionEnd | ||
Section "ActiveX plugin" SEC04 | Section "ActiveX plugin" SEC04 | ||
SectionIn 1 3 | SectionIn 1 3 | ||
SetOutPath "$INSTDIR" | SetOutPath "$INSTDIR" | ||
!insertmacro OpenUninstallLog | !insertmacro OpenUninstallLog | ||
!insertmacro InstallFile activex\axvlc.dll | !insertmacro InstallFile activex\axvlc.dll | ||
!insertmacro CloseUninstallLog | !insertmacro CloseUninstallLog | ||
RegDLL "$INSTDIR\axvlc.dll" | RegDLL "$INSTDIR\axvlc.dll" | ||
SectionEnd | SectionEnd | ||
Section /o "Context Menus" SEC05 | Section /o "Context Menus" SEC05 | ||
SectionIn 3 | SectionIn 3 | ||
!insertmacro MacroAllExtensions AddContextMenu | !insertmacro MacroAllExtensions AddContextMenu | ||
!insertmacro AddContextMenu "Directory" | !insertmacro AddContextMenu "Directory" | ||
SectionEnd | SectionEnd | ||
SectionGroup "File type associations" SEC06 | SectionGroup "File type associations" SEC06 | ||
SectionGroup "Audio Files" | SectionGroup "Audio Files" | ||
!insertmacro MacroAudioExtensions RegisterExtensionSection | !insertmacro MacroAudioExtensions RegisterExtensionSection | ||
SectionGroupEnd | SectionGroupEnd | ||
SectionGroup "Video Files" | SectionGroup "Video Files" | ||
!insertmacro MacroVideoExtensions RegisterExtensionSection | !insertmacro MacroVideoExtensions RegisterExtensionSection | ||
SectionGroupEnd | SectionGroupEnd | ||
SectionGroup "Other" | SectionGroup "Other" | ||
!insertmacro MacroOtherExtensions RegisterExtensionSection | !insertmacro MacroOtherExtensions RegisterExtensionSection | ||
SectionGroupEnd | SectionGroupEnd | ||
SectionGroupEnd | SectionGroupEnd | ||
Section /o "Delete preferences and cache" SEC07 | Section /o "Delete preferences and cache" SEC07 | ||
!insertmacro delprefs | !insertmacro delprefs | ||
SectionEnd | SectionEnd | ||
; Installer section descriptions | ; Installer section descriptions | ||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \ | ||
"The media player itself" | "The media player itself" | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} \ | ||
"Adds icons to your start menu for easy access" | "Adds icons to your start menu for easy access" | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} \ | ||
"Adds icon to your desktop for easy access" | "Adds icon to your desktop for easy access" | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \ | ||
"The VLC Mozilla and Mozilla Firefox plugin" | "The VLC Mozilla and Mozilla Firefox plugin" | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \ | ||
"The VLC ActiveX plugin" | "The VLC ActiveX plugin" | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC05} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} \ | ||
"Add context menu items ('Play With VLC' and 'Add To VLC's Playlist')" | "Add context menu items ('Play With VLC' and 'Add To VLC's Playlist')" | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \ | ||
"Sets VLC media player as the default application for the specified file type" | "Sets VLC media player as the default application for the specified file type" | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \ | ||
"Deletes VLC media player preferences and cache files leftover from previous installations" | "Deletes VLC media player preferences and cache files leftover from previous installations" | ||
!insertmacro MUI_FUNCTION_DESCRIPTION_END | !insertmacro MUI_FUNCTION_DESCRIPTION_END | ||
Function .onInit | Function .onInit | ||
ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | ||
"UninstallString" | "UninstallString" | ||
StrCmp $R0 "" done | StrCmp $R0 "" done | ||
MessageBox MB_YESNO|MB_ICONEXCLAMATION \ | MessageBox MB_YESNO|MB_ICONEXCLAMATION \ | ||
"VLC media player has already been installed. $\nDo you want to remove \ | "VLC media player has already been installed. $\nDo you want to remove \ | ||
the previous version before installing $(^Name) ?" \ | the previous version before installing $(^Name) ?" \ | ||
IDNO done | IDNO done | ||
;Run the uninstaller | ;Run the uninstaller | ||
;uninst: | ;uninst: | ||
ClearErrors | ClearErrors | ||
ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file | ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file | ||
done: | done: | ||
!insertmacro MUI_LANGDLL_DISPLAY | !insertmacro MUI_LANGDLL_DISPLAY | ||
FunctionEnd | FunctionEnd | ||
Section -Post | Section -Post | ||
WriteUninstaller "$INSTDIR\uninstall.exe" | WriteUninstaller "$INSTDIR\uninstall.exe" | ||
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR | WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR | ||
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}" | WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}" | ||
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe" | WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe" | ||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | ||
"DisplayName" "$(^Name)" | "DisplayName" "$(^Name)" | ||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | ||
"UninstallString" "$INSTDIR\uninstall.exe" | "UninstallString" "$INSTDIR\uninstall.exe" | ||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | ||
"DisplayIcon" "$INSTDIR\vlc.exe" | "DisplayIcon" "$INSTDIR\vlc.exe" | ||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | ||
"DisplayVersion" "${PRODUCT_VERSION}" | "DisplayVersion" "${PRODUCT_VERSION}" | ||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | ||
"URLInfoAbout" "${PRODUCT_WEB_SITE}" | "URLInfoAbout" "${PRODUCT_WEB_SITE}" | ||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ | ||
"Publisher" "${PRODUCT_PUBLISHER}" | "Publisher" "${PRODUCT_PUBLISHER}" | ||
SectionEnd | SectionEnd | ||
;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;; | ||
; Uninstaller sections ; | ; Uninstaller sections ; | ||
;;;;;;;;;;;;;;;;;;;;;;;; | ;;;;;;;;;;;;;;;;;;;;;;;; | ||
; TrimNewlines (copied from NSIS documentation) | ; TrimNewlines (copied from NSIS documentation) | ||
; input, top of stack (e.g. whatever$\r$\n) | ; input, top of stack (e.g. whatever$\r$\n) | ||
; output, top of stack (replaces, with e.g. whatever) | ; output, top of stack (replaces, with e.g. whatever) | ||
; modifies no other variables. | ; modifies no other variables. | ||
Function un.TrimNewlines | Function un.TrimNewlines | ||
Exch $R0 | Exch $R0 | ||
Push $R1 | Push $R1 | ||
Push $R2 | Push $R2 | ||
StrCpy $R1 0 | StrCpy $R1 0 | ||
loop: | loop: | ||
IntOp $R1 $R1 - 1 | IntOp $R1 $R1 - 1 | ||
StrCpy $R2 $R0 1 $R1 | StrCpy $R2 $R0 1 $R1 | ||
StrCmp $R2 "$\r" loop | StrCmp $R2 "$\r" loop | ||
StrCmp $R2 "$\n" loop | StrCmp $R2 "$\n" loop | ||
IntOp $R1 $R1 + 1 | IntOp $R1 $R1 + 1 | ||
IntCmp $R1 0 no_trim_needed | IntCmp $R1 0 no_trim_needed | ||
StrCpy $R0 $R0 $R1 | StrCpy $R0 $R0 $R1 | ||
no_trim_needed: | no_trim_needed: | ||
Pop $R2 | Pop $R2 | ||
Pop $R1 | Pop $R1 | ||
Exch $R0 | Exch $R0 | ||
FunctionEnd | FunctionEnd | ||
Function un.RemoveEmptyDirs | Function un.RemoveEmptyDirs | ||
Pop $9 | Pop $9 | ||
!define Index 'Line${__LINE__}' | !define Index 'Line${__LINE__}' | ||
FindFirst $0 $1 "$INSTDIR$9*" | FindFirst $0 $1 "$INSTDIR$9*" | ||
StrCmp $0 "" "${Index}-End" | StrCmp $0 "" "${Index}-End" | ||
"${Index}-Loop:" | "${Index}-Loop:" | ||
StrCmp $1 "" "${Index}-End" | StrCmp $1 "" "${Index}-End" | ||
StrCmp $1 "." "${Index}-Next" | StrCmp $1 "." "${Index}-Next" | ||
StrCmp $1 ".." "${Index}-Next" | StrCmp $1 ".." "${Index}-Next" | ||
Push $0 | Push $0 | ||
Push $1 | Push $1 | ||
Push $9 | Push $9 | ||
Push "$9$1\" | Push "$9$1\" | ||
Call un.RemoveEmptyDirs | Call un.RemoveEmptyDirs | ||
Pop $9 | Pop $9 | ||
Pop $1 | Pop $1 | ||
Pop $0 | Pop $0 | ||
"${Index}-Remove:" | "${Index}-Remove:" | ||
RMDir "$INSTDIR$9$1" | RMDir "$INSTDIR$9$1" | ||
"${Index}-Next:" | "${Index}-Next:" | ||
FindNext $0 $1 | FindNext $0 $1 | ||
Goto "${Index}-Loop" | Goto "${Index}-Loop" | ||
"${Index}-End:" | "${Index}-End:" | ||
FindClose $0 | FindClose $0 | ||
!undef Index | !undef Index | ||
FunctionEnd | FunctionEnd | ||
Section "Uninstall" SEC91 | Section "Uninstall" SEC91 | ||
SectionIn 1 2 3 RO | SectionIn 1 2 3 RO | ||
SetShellVarContext all | SetShellVarContext all | ||
!insertmacro MacroAllExtensions DeleteContextMenu | !insertmacro MacroAllExtensions DeleteContextMenu | ||
!insertmacro MacroAllExtensions UnRegisterExtensionSection | !insertmacro MacroAllExtensions UnRegisterExtensionSection | ||
!insertmacro DeleteContextMenu "Directory" | !insertmacro DeleteContextMenu "Directory" | ||
;remove activex plugin | ;remove activex plugin | ||
UnRegDLL "$INSTDIR\axvlc.dll" | UnRegDLL "$INSTDIR\axvlc.dll" | ||
Delete /REBOOTOK "$INSTDIR\axvlc.dll" | Delete /REBOOTOK "$INSTDIR\axvlc.dll" | ||
;remove mozilla plugin | ;remove mozilla plugin | ||
Push $R0 | Push $R0 | ||
Push $R1 | Push $R1 | ||
Push $R2 | Push $R2 | ||
!define Index 'Line${__LINE__}' | !define Index 'Line${__LINE__}' | ||
StrCpy $R1 "0" | StrCpy $R1 "0" | ||
"${Index}-Loop:" | "${Index}-Loop:" | ||
; Check for Key | ; Check for Key | ||
EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1" | EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1" | ||
StrCmp $R0 "" "${Index}-End" | StrCmp $R0 "" "${Index}-End" | ||
IntOp $R1 $R1 + 1 | IntOp $R1 $R1 + 1 | ||
ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins" | ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins" | ||
StrCmp $R2 "" "${Index}-Loop" "" | StrCmp $R2 "" "${Index}-Loop" "" | ||
; old files (0.8.5 and before) that may be lying around | ; old files (0.8.5 and before) that may be lying around | ||
Delete /REBOOTOK "$R2\npvlc.dll" | Delete /REBOOTOK "$R2\npvlc.dll" | ||
Delete /REBOOTOK "$R2\libvlc.dll" | Delete /REBOOTOK "$R2\libvlc.dll" | ||
Delete /REBOOTOK "$R2\vlcintf.xpt" | Delete /REBOOTOK "$R2\vlcintf.xpt" | ||
Goto "${Index}-Loop" | Goto "${Index}-Loop" | ||
"${Index}-End:" | "${Index}-End:" | ||
!undef Index | !undef Index | ||
Delete /REBOOTOK "$INSTDIR\npvlc.dll" | Delete /REBOOTOK "$INSTDIR\npvlc.dll" | ||
RMDir "$SMPROGRAMS\VideoLAN" | RMDir "$SMPROGRAMS\VideoLAN" | ||
RMDir /r $SMPROGRAMS\VideoLAN | RMDir /r $SMPROGRAMS\VideoLAN | ||
FileOpen $UninstallLog "$INSTDIR\uninstall.log" r | FileOpen $UninstallLog "$INSTDIR\uninstall.log" r | ||
UninstallLoop: | UninstallLoop: | ||
ClearErrors | ClearErrors | ||
FileRead $UninstallLog $R0 | FileRead $UninstallLog $R0 | ||
IfErrors UninstallEnd | IfErrors UninstallEnd | ||
Push $R0 | Push $R0 | ||
Call un.TrimNewLines | Call un.TrimNewLines | ||
Pop $R0 | Pop $R0 | ||
Delete "$INSTDIR\$R0" | Delete "$INSTDIR\$R0" | ||
Goto UninstallLoop | Goto UninstallLoop | ||
UninstallEnd: | UninstallEnd: | ||
FileClose $UninstallLog | FileClose $UninstallLog | ||
Delete "$INSTDIR\uninstall.log" | Delete "$INSTDIR\uninstall.log" | ||
Delete "$INSTDIR\uninstall.exe" | Delete "$INSTDIR\uninstall.exe" | ||
Push "\" | Push "\" | ||
Call un.RemoveEmptyDirs | Call un.RemoveEmptyDirs | ||
RMDir "$INSTDIR" | RMDir "$INSTDIR" | ||
DeleteRegKey HKLM Software\VideoLAN | DeleteRegKey HKLM Software\VideoLAN | ||
DeleteRegKey HKCR Applications\vlc.exe | DeleteRegKey HKCR Applications\vlc.exe | ||
DeleteRegKey HKCR AudioCD\shell\PlayWithVLC | DeleteRegKey HKCR AudioCD\shell\PlayWithVLC | ||
DeleteRegKey HKCR DVD\shell\PlayWithVLC | DeleteRegKey HKCR DVD\shell\PlayWithVLC | ||
DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" | DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" | ||
DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival | DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival | ||
DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" | 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\VLCPlayCDAudioOnArrival | ||
DeleteRegKey HKCR "VLC.MediaFile" | DeleteRegKey HKCR "VLC.MediaFile" | ||
DeleteRegKey HKLM \ | DeleteRegKey HKLM \ | ||
"SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}" | "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}" | ||
DeleteRegKey HKLM \ | DeleteRegKey HKLM \ | ||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" | "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" | ||
Delete "$DESKTOP\VLC media player.lnk" | Delete "$DESKTOP\VLC media player.lnk" | ||
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" | DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" | ||
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" | DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" | ||
SetAutoClose true | SetAutoClose true | ||
SectionEnd | SectionEnd | ||
Section /o "un.Delete preferences and cache" SEC92 | Section /o "un.Delete preferences and cache" SEC92 | ||
!insertmacro delprefs | !insertmacro delprefs | ||
SectionEnd | SectionEnd | ||
; Uninstaller section descriptions | ; Uninstaller section descriptions | ||
!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN | !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC91} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} \ | ||
"Uninstall VLC media player and all its components" | "Uninstall VLC media player and all its components" | ||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC92} \ | !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} \ | ||
"Deletes VLC media player preferences and cache files" | "Deletes VLC media player preferences and cache files" | ||
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END | !insertmacro MUI_UNFUNCTION_DESCRIPTION_END | ||
;Function un.onUninstSuccess | ;Function un.onUninstSuccess | ||
; HideWindow | ; HideWindow | ||
; MessageBox MB_ICONINFORMATION|MB_OK \ | ; MessageBox MB_ICONINFORMATION|MB_OK \ | ||
; "$(^Name) was successfully removed from your computer." | ; "$(^Name) was successfully removed from your computer." | ||
;FunctionEnd | ;FunctionEnd | ||
Function un.onInit | Function un.onInit | ||
!insertmacro | |||
!insertmacro MUI_UNGETLANGUAGE | |||
FunctionEnd | FunctionEnd | ||
</highlight-nsis> | </highlight-nsis> | ||
[[Category:Real World Installers]] | [[Category:Real World Installers]] |
Revision as of 14:42, 18 September 2007
Description
VLC media player is a free software media player by the VideoLAN project.
The Script
http://trac.videolan.org/vlc/browser/trunk/vlc.win32.nsi.in
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; NSIS installer script for vlc ; ; (http://nsis.sourceforge.net) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; !define PRODUCT_NAME "VLC media player" !define PRODUCT_VERSION '${VERSION}' !define PRODUCT_GROUP "VideoLAN" !define PRODUCT_PUBLISHER "VideoLAN Team" !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_ID "{ea92ef52-afe4-4212-bacb-dfe9fca94cd6}" !define MUI_LANGDLL_REGISTRY_ROOT "HKLM" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "Language" @FILE_LIBVLC_DLL@ ;;;;;;;;;;;;;;;;;;;;;;;;; ; General configuration ; ;;;;;;;;;;;;;;;;;;;;;;;;; Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile ..\vlc-${VERSION}-win32.exe InstallDir "$PROGRAMFILES\VideoLAN\VLC" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" !ifdef NSIS_LZMA_COMPRESS_WHOLE SetCompressor lzma !else SetCompressor /SOLID lzma !endif ;ShowInstDetails show ;ShowUnInstDetails show SetOverwrite ifnewer CRCCheck on InstType "Recommended" InstType "Minimum" InstType "Full" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; NSIS Modern User Interface configuration ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MUI 1.67 compatible ------ !include "MUI.nsh" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "vlc48x48.ico" !define MUI_UNICON "vlc48x48.ico" !define MUI_COMPONENTSPAGE_SMALLDESC ; Installer pages ; Welcome page !define MUI_WELCOMEPAGE_TITLE_3LINES !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "COPYING.txt" ; Components page !insertmacro MUI_PAGE_COMPONENTS ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; 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 "Visit the VideoLAN VLC media player Website" !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/" !define MUI_FINISHPAGE_NOREBOOTSUPPORT !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_COMPONENTS !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH ; Language files !insertmacro MUI_LANGUAGE "English" # first language is the default language !insertmacro MUI_LANGUAGE "French" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Spanish" !insertmacro MUI_LANGUAGE "SimpChinese" !insertmacro MUI_LANGUAGE "TradChinese" !insertmacro MUI_LANGUAGE "Japanese" !insertmacro MUI_LANGUAGE "Korean" !insertmacro MUI_LANGUAGE "Italian" !insertmacro MUI_LANGUAGE "Dutch" !insertmacro MUI_LANGUAGE "Danish" !insertmacro MUI_LANGUAGE "Swedish" !insertmacro MUI_LANGUAGE "Norwegian" !insertmacro MUI_LANGUAGE "Finnish" !insertmacro MUI_LANGUAGE "Greek" !insertmacro MUI_LANGUAGE "Russian" !insertmacro MUI_LANGUAGE "Portuguese" !insertmacro MUI_LANGUAGE "Arabic" !insertmacro MUI_LANGUAGE "Polish" !insertmacro MUI_RESERVEFILE_LANGDLL ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ ;;;;;;;;;;;;;;;;;;; ; Extension lists ; ;;;;;;;;;;;;;;;;;;; !macro MacroAudioExtensions _action !insertmacro ${_action} ".a52" !insertmacro ${_action} ".aac" !insertmacro ${_action} ".ac3" !insertmacro ${_action} ".dts" !insertmacro ${_action} ".flac" !insertmacro ${_action} ".mka" !insertmacro ${_action} ".mp1" !insertmacro ${_action} ".mp2" !insertmacro ${_action} ".mp3" !insertmacro ${_action} ".ogg" !insertmacro ${_action} ".spx" !insertmacro ${_action} ".wav" !insertmacro ${_action} ".wma" !macroend !macro MacroVideoExtensions _action !insertmacro ${_action} ".asf" !insertmacro ${_action} ".avi" !insertmacro ${_action} ".divx" !insertmacro ${_action} ".dv" !insertmacro ${_action} ".m1v" !insertmacro ${_action} ".m2v" !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} ".ps" !insertmacro ${_action} ".ts" !insertmacro ${_action} ".ogm" !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" !macroend !macro MacroAllExtensions _action !insertmacro MacroAudioExtensions ${_action} !insertmacro MacroVideoExtensions ${_action} !insertmacro MacroOtherExtensions ${_action} !macroend ;;;;;;;;;;;;;;;;;;;;;;;;;; ; File type associations ; ;;;;;;;;;;;;;;;;;;;;;;;;;; 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\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"' WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0' FunctionEnd Function un.RegisterExtension ;start of restore script ReadRegStr $1 HKCR "$R0" "" StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it 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 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 ;;;;;;;;;;;;;;;;;;;;;;;; ; Context menu entries ; ;;;;;;;;;;;;;;;;;;;;;;;; !macro AddContextMenu EXT WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" "Play with VLC media player" WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '$INSTDIR\vlc.exe --started-from-file --no-playlist-enqueue "%1"' WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" "Add to VLC media player's Playlist" WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '$INSTDIR\vlc.exe --started-from-file --playlist-enqueue "%1"' !macroend !macro DeleteContextMenu EXT DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC !macroend ;;;;;;;;;;;;;;;;;;;;;;;;;; ; Delete prefs and cache ; ;;;;;;;;;;;;;;;;;;;;;;;;;; !macro delprefs StrCpy $0 0 !define Index 'Line${__LINE__}' "${Index}-Loop:" ; FIXME ; this will loop through all the logged users and "virtual" windows users ; (it looks like users are only present in HKEY_USERS when they are logged in) ClearErrors EnumRegKey $1 HKU "" $0 StrCmp $1 "" "${Index}-End" IntOp $0 $0 + 1 ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData StrCmp $2 "" "${Index}-Loop" RMDir /r "$2\vlc" Goto "${Index}-Loop" "${Index}-End:" !undef Index !macroend 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 !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 ;;;;;;;;;;;;;;;;;;;;;; ; Installer sections ; ;;;;;;;;;;;;;;;;;;;;;; Section "Media player (required)" SEC01 SectionIn 1 2 3 RO SetShellVarContext all SetOutPath "$INSTDIR" !insertmacro OpenUninstallLog !insertmacro InstallFile vlc.exe !insertmacro InstallFile vlc.exe.manifest !ifdef LIBVLC_DLL !insertmacro InstallFile ${LIBVLC_DLL} !endif !insertmacro InstallFile *.txt !insertmacro InstallFolder plugins !insertmacro InstallFolder locale !insertmacro InstallFolder osdmenu !insertmacro InstallFolder skins !insertmacro InstallFolder http 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/" FileWrite $UninstallLog "Documentation.url$\r$\n" !insertmacro CloseUninstallLog ; Add VLC to "recomended programs" for the following extensions WriteRegStr HKCR Applications\vlc.exe "" "" WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player" WriteRegStr HKCR Applications\vlc.exe\shell\Play "" "Play with VLC" WriteRegStr HKCR Applications\vlc.exe\shell\Play\command "" \ '$INSTDIR\vlc.exe --started-from-file "%1"' !insertmacro MacroAllExtensions WriteRegStrSupportedTypes WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" "Play with VLC media player" WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \ "$INSTDIR\vlc.exe --started-from-file cdda:%1" WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" "Play with VLC media player" WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \ "$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" "Play DVD movie" 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" "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" "Play CD audio" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe --started-from-file",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" "Provider" "VideoLAN VLC media player" 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\DefaultIcon" "" '"$INSTDIR\vlc.exe",0' 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\DefaultIcon" "" '"$INSTDIR\vlc.exe",0' SectionEnd Section "Start Menu Shortcut" 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 wxWidgets (default).lnk" \ "$INSTDIR\vlc.exe" "-I wxwin --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 --save-config vlc:quit" 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" "" SectionEnd Section "Desktop Shortcut" SEC02b SectionIn 1 2 3 CreateShortCut "$DESKTOP\VLC media player.lnk" \ "$INSTDIR\vlc.exe" "" SectionEnd Section /o "Mozilla plugin" SEC03 SectionIn 3 SetOutPath "$INSTDIR" !insertmacro OpenUninstallLog !insertmacro InstallFile mozilla\npvlc.dll !insertmacro CloseUninstallLog !define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}" WriteRegStr HKLM ${Moz} "Description" "VLC Multimedia Plugin" WriteRegStr HKLM ${Moz} "Path" "$INSTDIR\npvlc.dll" 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 ; Goto "${Index}-Loop" ;"${Index}-End:" ;!undef Index SectionEnd Section "ActiveX plugin" SEC04 SectionIn 1 3 SetOutPath "$INSTDIR" !insertmacro OpenUninstallLog !insertmacro InstallFile activex\axvlc.dll !insertmacro CloseUninstallLog RegDLL "$INSTDIR\axvlc.dll" SectionEnd Section /o "Context Menus" SEC05 SectionIn 3 !insertmacro MacroAllExtensions AddContextMenu !insertmacro AddContextMenu "Directory" SectionEnd SectionGroup "File type associations" SEC06 SectionGroup "Audio Files" !insertmacro MacroAudioExtensions RegisterExtensionSection SectionGroupEnd SectionGroup "Video Files" !insertmacro MacroVideoExtensions RegisterExtensionSection SectionGroupEnd SectionGroup "Other" !insertmacro MacroOtherExtensions RegisterExtensionSection SectionGroupEnd SectionGroupEnd Section /o "Delete preferences and cache" SEC07 !insertmacro delprefs SectionEnd ; Installer section descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \ "The media player itself" !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} \ "Adds icons to your start menu for easy access" !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} \ "Adds icon to your desktop for easy access" !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \ "The VLC Mozilla and Mozilla Firefox plugin" !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \ "The VLC ActiveX plugin" !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} \ "Add context menu items ('Play With VLC' and 'Add To VLC's Playlist')" !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \ "Sets VLC media player as the default application for the specified file type" !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \ "Deletes VLC media player preferences and cache files leftover from previous installations" !insertmacro MUI_FUNCTION_DESCRIPTION_END Function .onInit ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ "UninstallString" StrCmp $R0 "" done MessageBox MB_YESNO|MB_ICONEXCLAMATION \ "VLC media player has already been installed. $\nDo you want to remove \ the previous version before installing $(^Name) ?" \ IDNO done ;Run the uninstaller ;uninst: ClearErrors ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file done: !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd Section -Post WriteUninstaller "$INSTDIR\uninstall.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ "UninstallString" "$INSTDIR\uninstall.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ "DisplayIcon" "$INSTDIR\vlc.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd ;;;;;;;;;;;;;;;;;;;;;;;; ; Uninstaller sections ; ;;;;;;;;;;;;;;;;;;;;;;;; ; TrimNewlines (copied from NSIS documentation) ; input, top of stack (e.g. whatever$\r$\n) ; output, top of stack (replaces, with e.g. whatever) ; modifies no other variables. Function un.TrimNewlines Exch $R0 Push $R1 Push $R2 StrCpy $R1 0 loop: IntOp $R1 $R1 - 1 StrCpy $R2 $R0 1 $R1 StrCmp $R2 "$\r" loop StrCmp $R2 "$\n" loop IntOp $R1 $R1 + 1 IntCmp $R1 0 no_trim_needed StrCpy $R0 $R0 $R1 no_trim_needed: Pop $R2 Pop $R1 Exch $R0 FunctionEnd Function un.RemoveEmptyDirs 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" Push $0 Push $1 Push $9 Push "$9$1\" Call un.RemoveEmptyDirs Pop $9 Pop $1 Pop $0 "${Index}-Remove:" RMDir "$INSTDIR$9$1" "${Index}-Next:" FindNext $0 $1 Goto "${Index}-Loop" "${Index}-End:" FindClose $0 !undef Index FunctionEnd Section "Uninstall" SEC91 SectionIn 1 2 3 RO SetShellVarContext all !insertmacro MacroAllExtensions DeleteContextMenu !insertmacro MacroAllExtensions UnRegisterExtensionSection !insertmacro DeleteContextMenu "Directory" ;remove activex plugin UnRegDLL "$INSTDIR\axvlc.dll" Delete /REBOOTOK "$INSTDIR\axvlc.dll" ;remove mozilla plugin 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" "" ; old files (0.8.5 and before) that may be lying around Delete /REBOOTOK "$R2\npvlc.dll" Delete /REBOOTOK "$R2\libvlc.dll" Delete /REBOOTOK "$R2\vlcintf.xpt" Goto "${Index}-Loop" "${Index}-End:" !undef Index Delete /REBOOTOK "$INSTDIR\npvlc.dll" RMDir "$SMPROGRAMS\VideoLAN" RMDir /r $SMPROGRAMS\VideoLAN FileOpen $UninstallLog "$INSTDIR\uninstall.log" r UninstallLoop: ClearErrors FileRead $UninstallLog $R0 IfErrors UninstallEnd Push $R0 Call un.TrimNewLines Pop $R0 Delete "$INSTDIR\$R0" Goto UninstallLoop UninstallEnd: FileClose $UninstallLog Delete "$INSTDIR\uninstall.log" Delete "$INSTDIR\uninstall.exe" Push "\" Call un.RemoveEmptyDirs RMDir "$INSTDIR" DeleteRegKey HKLM Software\VideoLAN DeleteRegKey HKCR Applications\vlc.exe DeleteRegKey HKCR AudioCD\shell\PlayWithVLC DeleteRegKey HKCR DVD\shell\PlayWithVLC DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" 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 HKCR "VLC.MediaFile" DeleteRegKey HKLM \ "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}" DeleteRegKey HKLM \ "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" Delete "$DESKTOP\VLC media player.lnk" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SectionEnd Section /o "un.Delete preferences and cache" SEC92 !insertmacro delprefs SectionEnd ; Uninstaller section descriptions !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} \ "Uninstall VLC media player and all its components" !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} \ "Deletes VLC media player preferences and cache files" !insertmacro MUI_UNFUNCTION_DESCRIPTION_END ;Function un.onUninstSuccess ; HideWindow ; MessageBox MB_ICONINFORMATION|MB_OK \ ; "$(^Name) was successfully removed from your computer." ;FunctionEnd Function un.onInit !insertmacro MUI_UNGETLANGUAGE FunctionEnd