;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NSIS installer script
for vlc ;
; (http:
//nsis.sourceforge.net) ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
!define PRODUCT_NAME
"VLC media player"
!define VERSION @VERSION@
!define PRODUCT_VERSION @VERSION@
!define PRODUCT_GROUP
"VideoLAN"
!define PRODUCT_PUBLISHER
"VideoLAN"
!define PRODUCT_WEB_SITE
"https://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"
!define MEMENTO_REGISTRY_ROOT ${PRODUCT_UNINST_ROOT_KEY}
!define MEMENTO_REGISTRY_KEY
"${PRODUCT_UNINST_KEY}"
@HAVE_WIN64_TRUE@ !define VLC_64BIT_INSTALLER
ManifestDPIAware
true
Unicode
true
; !define INSTALL_ACTIVEX
Var ReinstallType
Var ReinstallUninstallBtn
Var PerformUpdate
Var PreviousVersion
Var PreviousVersionState
Var PreviousInstallDir
Var UninstallLog
Var
32bitUninstaller
Var
32bitPath
;;;;;;;;;;;;;;;;;;;;;;;;;
; General configuration ;
;;;;;;;;;;;;;;;;;;;;;;;;;
Name
"${PRODUCT_NAME}"
@HAVE_WIN64_FALSE@ OutFile ..\vlc-${VERSION}-win32.exe
@HAVE_WIN64_TRUE@ @HAVE_ARM64_FALSE@ OutFile ..\vlc-${VERSION}-win64.exe
@HAVE_WIN64_TRUE@ @HAVE_ARM64_TRUE@ OutFile ..\vlc-${VERSION}-winarm64.exe
InstallDir
"$@PROGRAMFILES@\${PRODUCT_PUBLISHER}\VLC"
!ifdef NSIS_LZMA_COMPRESS_WHOLE
SetCompressor lzma
!
else
SetCompressor /SOLID lzma
!endif
SetOverwrite ifdiff
CRCCheck on
BrandingText
"${PRODUCT_GROUP} ${PRODUCT_NAME}"
InstType
"$(Name_InstTypeRecommended)"
InstType
"$(Name_InstTypeMinimum)"
InstType
"$(Name_InstTypeFull)"
RequestExecutionLevel admin
!addincludedir NSIS
!addplugindir NSIS
!include nsProcess.nsh
!include WinVer.nsh
!include FileFunc.nsh
!include MUI2.nsh
!include Memento.nsh
!insertmacro GetParameters
!insertmacro GetOptions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NSIS Modern User Interface configuration ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON
"vlc.ico"
!define MUI_UNICON
"vlc.ico"
!define MUI_COMPONENTSPAGE_SMALLDESC
; Banner (welcome
and finish page)
for installer
!define MUI_WELCOMEFINISHPAGE_BITMAP
"NSIS/vlc_branding.bmp"
; Banner
for uninstaller
!define MUI_UNWELCOMEFINISHPAGE_BITMAP
"NSIS/vlc_branding.bmp"
; Installer pages
; Welcome page
!define MUI_PAGE_CUSTOMFUNCTION_PRE PageFastUpdatePre
!define MUI_WELCOMEPAGE_TITLE_3LINES
!insertmacro MUI_PAGE_WELCOME
; Optional update page
Page custom PageReinstall PageLeaveReinstall
; License page
!define MUI_LICENSEPAGE_BUTTON $(^NextBtn)
!define MUI_LICENSEPAGE_TEXT_BOTTOM
"$(License_NextText)"
!define MUI_PAGE_CUSTOMFUNCTION_PRE PageSkipPre
!insertmacro MUI_PAGE_LICENSE
"COPYING.txt"
; Components page
!define MUI_PAGE_CUSTOMFUNCTION_PRE PageComponentsPre
!insertmacro MUI_PAGE_COMPONENTS
; Directory page
!define MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_PAGE_CUSTOMFUNCTION_PRE PageFastUpdatePre
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_FUNCTION AppExecAs
!define MUI_FINISHPAGE_LINK
"$(Link_VisitWebsite)"
!define MUI_FINISHPAGE_LINK_LOCATION
"https://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
!addincludedir
"languages"
!define VLC_LANGFILE_FALLBACK
"EnglishExtra.nsh"
; Language files (first language is
default)
!insertmacro MUI_LANGUAGE
"English"
!insertmacro LANGFILE_INCLUDE
"EnglishExtra.nsh"
!insertmacro MUI_LANGUAGE
"French"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT
"FrenchExtra.nsh" ${VLC_LANGFILE_FALLBACK
}
!insertmacro MUI_LANGUAGE "German"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "GermanExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Spanish"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "SpanishExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "SimpChinese"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "SimpChineseExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "TradChinese"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "TradChineseExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Japanese"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "JapaneseExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Italian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "ItalianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Dutch"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "DutchExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Danish"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "DanishExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Swedish"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "SwedishExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Finnish"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "FinnishExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "RussianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Portuguese"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "PortugueseExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "PortugueseBR"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "PortugueseBRExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Welsh"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "WelshExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Uzbek"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "UzbekExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Ukrainian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "UkrainianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Turkish"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "TurkishExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Thai"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "ThaiExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Norwegian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "NorwegianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Malay"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "MalayExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Korean"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "KoreanExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Greek"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "GreekExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Czech"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "CzechExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Bosnian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "BosnianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Arabic"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "ArabicExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Polish"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "PolishExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Romanian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "RomanianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Slovak"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "SlovakExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Serbian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "SerbianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Hungarian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "HungarianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Catalan"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "CatalanExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Bulgarian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "BulgarianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Estonian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "EstonianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Lithuanian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "LithuanianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Basque"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "BasqueExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Galician"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "GalicianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Hebrew"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "HebrewExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Slovenian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "SlovenianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Afrikaans"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "AfrikaansExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Albanian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "AlbanianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Croatian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "CroatianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Icelandic"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "IcelandicExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Latvian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "LatvianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
!insertmacro MUI_LANGUAGE "Indonesian"
!insertmacro LANGFILE_INCLUDE_WITHDEFAULT "IndonesianExtra.nsh" ${VLC_LANGFILE_FALLBACK}
; Missing upstream translations:
;
; !insertmacro MUI_LANGUAGE "Sinhala"
; !insertmacro LANGFILE_INCLUDE_WITHDEFAULT "SinhalaExtra.nsh"
; !insertmacro MUI_LANGUAGE "EnglishUK"
; !insertmacro LANGFILE_INCLUDE_WITHDEFAULT "EnglishUKExtra.nsh"
; Upstream files broken:
; !insertmacro MUI_LANGUAGE "Khmer"
; !insertmacro LANGFILE_INCLUDE_WITHDEFAULT "KhmerExtra.nsh"
; !insertmacro MUI_LANGUAGE "ScotsGaelic"
; !insertmacro LANGFILE_INCLUDE_WITHDEFAULT "ScotsGaelicExtra.nsh"
; Reserve files for solid compression
!insertmacro MUI_RESERVEFILE_LANGDLL
;;;;;;;;;;;;;;;;;;;;;;;
; Macro and Functions ;
;;;;;;;;;;;;;;;;;;;;;;;
!include helpers\extensions.nsh
!include helpers\install.nsh
!include helpers\utils.nsh
;;;;;;;;;;;;;;;;;;;;;;
; Installer sections ;
; The CORE of the ;
; installer ;
;;;;;;;;;;;;;;;;;;;;;;
${MementoSection} "$(Name_Section01)" SEC01
SectionIn 1 2 3 RO
SetShellVarContext all
SetOutPath "$INSTDIR"
DetailPrint "$(Detail_CheckProcesses)"
Call CheckRunningProcesses
; Remove 32 bit version first
!ifdef VLC_64BIT_INSTALLER
${If} $32bitPath != ""
; Run uninstaller
ClearErrors
ExecWait '"$32bitUninstaller" /S _?=$32bitPath'
; If uninstall was not successfull, do not continue.
; This happens for example if the user cancels the uninstaller.
${If} ${Errors}
Goto skip_uninstall32_cleanup
${EndIf}
${If} ${FileExists} "$32bitUninstaller"
Delete "$32bitUninstaller"
RMDir "$32bitPath"
${EndIf}
${EndIf}
!endif
skip_uninstall32_cleanup:
; Remove previous version first, if this is update
${If} $ReinstallType == "1"
FileOpen $UninstallLog "$INSTDIR\uninstall.log" r
UninstallLoop:
ClearErrors
FileRead $UninstallLog $R0
IfErrors UninstallEnd
Push $R0
Call TrimNewLines
Pop $R0
Delete "$INSTDIR\$R0"
Goto UninstallLoop
UninstallEnd:
FileClose $UninstallLog
Delete "$INSTDIR\uninstall.log"
Delete "$INSTDIR\uninstall.exe"
Push "\"
Call RemoveEmptyDirs
${EndIf}
!insertmacro OpenUninstallLog
; VLC.exe, libvlc.dll
!insertmacro InstallFile vlc.exe
!insertmacro InstallFile vlc-cache-gen.exe
!insertmacro InstallFile vlc-preparser.exe
; All dlls
!insertmacro InstallFile *.dll
; Text files
!insertmacro InstallFile *.txt
; Subfolders
!insertmacro InstallFolder plugins
@HAVE_NLS_TRUE@ !insertmacro InstallFolderOptional locale
!insertmacro InstallFolder hrtfs
@BUILD_SKINS_TRUE@ !insertmacro InstallFolder skins
@BUILD_LUA_TRUE@ !insertmacro InstallFolder lua
; Generate the cache and add it to uninstall.log
nsExec::ExecToStack '"$INSTDIR\vlc-cache-gen.exe" $INSTDIR\plugins'
FindFirst $0 $1 "$INSTDIR\plugins\*.dat"
FileWrite $UninstallLog "plugins\$1$\r$\n"
FindClose $0
; URLs
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"
WriteIniStr "$INSTDIR\New_Skins.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}/vlc/skins.php"
FileWrite $UninstallLog "New_Skins.url$\r$\n"
!insertmacro CloseUninstallLog
; Add VLC to "recommended programs" for the following extensions
WriteRegStr HKCR Applications\vlc.exe "" ""
WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "${PRODUCT_NAME}"
WriteRegStr HKCR Applications\vlc.exe\shell\Open "" "$(ContextMenuEntry_PlayWith)"
WriteRegStr HKCR Applications\vlc.exe\shell\Open\command "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
!insertmacro MacroAllExtensions RegisterExtensionMacro
@BUILD_SKINS_TRUE@ !insertmacro MacroSkinExtensions RegisterSkinExtensionMacro
; Add VLC to "App Paths" to run VLC from ShellExecute/ShellExecuteEx/run dialog without giving a full path
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\vlc.exe" "" "$INSTDIR\vlc.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\vlc.exe" "Path" "$INSTDIR"
; Windows default programs Registration
; Vista and above detection
${If} ${AtLeastWinVista}
WriteRegStr HKLM "Software\RegisteredApplications" "VLC" "Software\Clients\Media\VLC\Capabilities"
WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationName" "${PRODUCT_NAME}"
WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationDescription" "VLC - The video swiss knife"
WriteRegStr HKLM "Software\Clients\Media\VLC" "" "${PRODUCT_NAME}"
WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "HideIconsCommand" "$\"$INSTDIR\spad-setup.exe$\" /HideIcons /S"
WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "ShowIconsCommand" "$\"$INSTDIR\spad-setup.exe$\" /ShowIcons /S"
WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "ReinstallCommand" "$\"$INSTDIR\spad-setup.exe$\" /Reinstall /S"
WriteRegDWORD HKLM "Software\Clients\Media\VLC\InstallInfo" "IconsVisible" 0x001
${EndIf}
${MementoSectionEnd}
${MementoSection} "$(Name_Section02a)" SEC02a
SectionIn 1 2 3
CreateDirectory "$SMPROGRAMS\${PRODUCT_PUBLISHER}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_PUBLISHER}\${PRODUCT_NAME}.lnk" \
"$INSTDIR\vlc.exe" ""
CreateShortCut "$SMPROGRAMS\${PRODUCT_PUBLISHER}\${PRODUCT_NAME} skinned.lnk" \
"$INSTDIR\vlc.exe" "-Iskins"
CreateShortCut "$SMPROGRAMS\${PRODUCT_PUBLISHER}\Documentation.lnk" \
"$INSTDIR\Documentation.url"
CreateShortCut "$SMPROGRAMS\${PRODUCT_PUBLISHER}\Release Notes.lnk" \
"$INSTDIR\NEWS.txt" ""
CreateShortCut "$SMPROGRAMS\${PRODUCT_PUBLISHER}\${PRODUCT_GROUP} Website.lnk" \
"$INSTDIR\${PRODUCT_GROUP} Website.url"
CreateShortCut "$SMPROGRAMS\${PRODUCT_PUBLISHER}\${PRODUCT_NAME} - reset preferences and cache files.lnk" \
"$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache vlc://quit"
${MementoSectionEnd}
${MementoSection} "$(Name_Section02b)" SEC02b
SectionIn 1 2 3
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" \
"$INSTDIR\vlc.exe" ""
${MementoSectionEnd}
!ifdef INSTALL_ACTIVEX
SectionGroup /e "!$(Name_Section34)"
${MementoSection} "$(Name_Section04)" SEC04
SectionIn 1 3
SetOutPath "$INSTDIR"
!insertmacro OpenUninstallLog
!insertmacro InstallFile axvlc.dll
!insertmacro CloseUninstallLog
@HAVE_WIN64_FALSE@ RegDLL "$INSTDIR\axvlc.dll"
@HAVE_WIN64_TRUE@ ExecWait '"$SYSDIR\regsvr32.exe" /s "$INSTDIR\axvlc.dll"'
${MementoSectionEnd}
SectionGroupEnd
!endif
${MementoSection} "$(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'
WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" "$(ContextMenuEntry_PlayWith)"
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" "$(Action_OnArrivalDVD)"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeProgID" "VLC.DVDMovie"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeVerb" "Open"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "${PRODUCT_PUBLISHER} ${PRODUCT_NAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" ""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" "$(Action_OnArrivalAudioCD)"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeProgID" "VLC.CDAudio"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeVerb" "Open"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Provider" "${PRODUCT_PUBLISHER} ${PRODUCT_NAME}"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoCDMovieOnArrival" "VLCPlayVCDMovieOnArrival" ""
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "Action" "$(Action_OnArrivalVCDMovie)"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "InvokeProgID" "VLC.VCDMovie"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "InvokeVerb" "Open"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "Provider" "${PRODUCT_PUBLISHER} ${PRODUCT_NAME}"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlaySuperVideoCDMovieOnArrival" "VLCPlaySVCDMovieOnArrival" ""
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "Action" "$(Action_OnArrivalSVCDMovie)"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "InvokeProgID" "VLC.SVCDMovie"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "InvokeVerb" "Open"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "Provider" "${PRODUCT_PUBLISHER} ${PRODUCT_NAME}"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDAudioOnArrival" "VLCPlayDVDAudioOnArrival" ""
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "Action" "$(Action_OnArrivalDVDAudio)"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "InvokeProgID" "VLC.OPENFolder"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "InvokeVerb" "Open"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "Provider" "${PRODUCT_PUBLISHER} ${PRODUCT_NAME}"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "VLCPlayVideoFilesOnArrival" ""
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "Action" "$(Action_OnArrivalVideoFiles)"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "InvokeProgID" "VLC.OPENFolder"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "InvokeVerb" "Open"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "Provider" "${PRODUCT_PUBLISHER} ${PRODUCT_NAME}"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "VLCPlayMusicFilesOnArrival" ""
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "Action" "$(Action_OnArrivalMusicFiles)"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "InvokeProgID" "VLC.OPENFolder"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "InvokeVerb" "Open"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "Provider" "${PRODUCT_PUBLISHER} ${PRODUCT_NAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayBlurayOnArrival" "VLCPlayBlurayOnArrival" ""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayBlurayOnArrival" "Action" "$(Action_OnArrivalBluray)"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayBlurayOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayBlurayOnArrival" "InvokeProgID" "VLC.Bluray"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayBlurayOnArrival" "InvokeVerb" "Open"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayBlurayOnArrival" "Provider" "${PRODUCT_PUBLISHER} ${PRODUCT_NAME}"
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'
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'
WriteRegStr HKCR "VLC.CDAudio\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKCR "VLC.VCDMovie" "" "VLC VCD Movie"
WriteRegStr HKCR "VLC.VCDMovie\shell" "" "Open"
WriteRegStr HKCR "VLC.VCDMovie\shell\Open\command" "" \
'"$INSTDIR\vlc.exe" --started-from-file vcd:///%1'
WriteRegStr HKCR "VLC.VCDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKCR "VLC.SVCDMovie" "" "VLC SVCD Movie"
WriteRegStr HKCR "VLC.SVCDMovie\shell" "" "Open"
WriteRegStr HKCR "VLC.SVCDMovie\shell\Open\command" "" \
'"$INSTDIR\vlc.exe" --started-from-file vcd:///%1'
WriteRegStr HKCR "VLC.SVCDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKCR "VLC.OPENFolder" "" "VLC Play content"
WriteRegStr HKCR "VLC.OPENFolder\shell" "" "Open"
WriteRegStr HKCR "VLC.OPENFolder\shell\Open\command" "" \
'"$INSTDIR\vlc.exe" %1'
WriteRegStr HKCR "VLC.OPENFolder\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
WriteRegStr HKCR "VLC.Bluray" "" "VLC Bluray"
WriteRegStr HKCR "VLC.Bluray\shell" "" "Open"
WriteRegStr HKCR "VLC.Bluray\shell\Open\command" "" \
'"$INSTDIR\vlc.exe" --started-from-file bluray:///%1'
WriteRegStr HKCR "VLC.Bluray\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
${MementoSectionEnd}
SectionGroup /e "!$(Name_Section06)" SEC06
SectionGroup "$(Name_SectionGroupAudio)"
!insertmacro MacroAudioExtensions AssociateExtensionSection
SectionGroupEnd
SectionGroup "$(Name_SectionGroupVideo)"
!insertmacro MacroVideoExtensions AssociateExtensionSection
SectionGroupEnd
SectionGroup "$(Name_SectionGroupOther)"
!insertmacro MacroOtherExtensions AssociateExtensionSection
!insertmacro MacroSkinExtensions AssociateSkinExtensionSection
!insertmacro MacroUnassociatedExtensions AssociateExtensionUnselectedSection
SectionGroupEnd
SectionGroupEnd
${MementoSection} "$(Name_Section07)" SEC07
SectionIn 1 3
!insertmacro MacroAllExtensions AddContextMenu
!insertmacro AddContextMenuExt "Directory"
${MementoSectionEnd}
${MementoUnselectedSection} "$(Name_Section08)" SEC08
!insertmacro delprefs
${MementoSectionEnd}
${MementoSectionDone}
; Installer section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "$(Desc_Section01)"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} "$(Desc_Section02a)"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} "$(Desc_Section02b)"
!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)"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC08} "$(Desc_Section08)"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
;;; Start function
Function .onInit
@HAVE_WIN64_TRUE@ SetRegView 64
${MementoSectionRestore}
@HAVE_WIN64_TRUE@ !include "x64.nsh"
@HAVE_WIN64_TRUE@ ${Unless} ${RunningX64}
@HAVE_WIN64_TRUE@ MessageBox MB_OK|MB_ICONSTOP "This version of VLC only runs on 64-bit operating systems.$\nPlease get the 32-bit version and try again."
@HAVE_WIN64_TRUE@ Quit
@HAVE_WIN64_TRUE@ ${EndUnless}
${IfNot} ${AtLeastWin7}
Goto WinTooOld
${Endif}
ReadRegStr $INSTDIR HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir"
StrCmp $INSTDIR "" 0 WinOk
StrCpy $INSTDIR "$@PROGRAMFILES@\${PRODUCT_PUBLISHER}\VLC"
Goto WinOk
WinTooOld:
MessageBox MB_OK|MB_ICONSTOP "This version of VLC only runs on Windows 7 and newer."
Quit
WinOk:
; /update argument
Call ParseCommandline
; See if a other bitness VLC version exists
!ifdef VLC_64BIT_INSTALLER
SetRegView 32
Call ReadPreviousVersion
${If} $PreviousVersion != ""
ReadRegStr $32bitUninstaller ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
ReadRegStr $32bitPath ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation"
StrCpy $PreviousVersion ""
${EndIf}
SetRegView lastused
!endif
; See if previous version exists
Call ReadPreviousVersion
${If} $PreviousVersion == ""
StrCpy $PerformUpdate 0
${Else}
Push "${VERSION}"
Push $PreviousVersion
Call VersionCompare
${If} $PreviousVersionState != "newer"
StrCpy $PerformUpdate 0
${EndIf}
${EndIf}
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
;;; Page to upgrade / downgrade or customize the installation
Function PageReinstall
${If} $PreviousVersion == ""
Abort
${EndIf}
${If} $PerformUpdate == 1
StrCpy $ReinstallType 1
Abort
${EndIf}
nsDialogs::Create /NOUNLOAD 1018
Pop $0
${If} $PreviousVersionState == "newer"
!insertmacro MUI_HEADER_TEXT "$(Reinstall_Headline)" "$(Reinstall_HeadlineInstall)"
nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "$(Reinstall_MessageOlder)"
Pop $R0
nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "$(Reinstall_OptionUpgrade)"
Pop $ReinstallUninstallBtn
nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "$(Reinstall_OptionAdvanced)"
Pop $R0
${If} $ReinstallType == ""
StrCpy $ReinstallType 1
${EndIf}
${ElseIf} $PreviousVersionState == "older"
!insertmacro MUI_HEADER_TEXT "$(Reinstall_Headline)" "$(Reinstall_HeadlineInstall)"
nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "$(Reinstall_MessageNewer)"
Pop $R0
nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "$(Reinstall_OptionDowngrade)"
Pop $ReinstallUninstallBtn
nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "$(Reinstall_OptionAdvanced)"
Pop $R0
${If} $ReinstallType == ""
StrCpy $ReinstallType 1
${EndIf}
${ElseIf} $PreviousVersionState == "same"
!insertmacro MUI_HEADER_TEXT "$(Reinstall_Headline)" "$(Reinstall_HeadlineMaintenance)"
nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "$(Reinstall_MessageSame)"
Pop $R0
nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "$(Reinstall_OptionComponents)"
Pop $R0
nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "$(Reinstall_OptionUninstall)"
Pop $ReinstallUninstallBtn
${If} $ReinstallType == ""
StrCpy $ReinstallType 2
${EndIf}
${Else}
MessageBox MB_ICONSTOP "Unknown value of PreviousVersionState, aborting" /SD IDOK
Abort
${EndIf}
${If} $ReinstallType == "1"
SendMessage $ReinstallUninstallBtn ${BM_SETCHECK} 1 0
${Else}
SendMessage $R0 ${BM_SETCHECK} 1 0
${EndIf}
nsDialogs::Show
FunctionEnd
Function PageLeaveReinstall
SendMessage $ReinstallUninstallBtn ${BM_GETCHECK} 0 0 $R0
${If} $R0 == 1
; Option to uninstall old version selected
StrCpy $ReinstallType 1
${Else}
; Custom up/downgrade or add/remove/reinstall
StrCpy $ReinstallType 2
${EndIf}
${If} $ReinstallType == 1
${If} $PreviousVersionState == "same"
Call RunUninstaller
Quit
${EndIf}
${EndIf}
FunctionEnd
Function RunUninstaller
ReadRegStr $R1 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
${If} $R1 == ""
Return
${EndIf}
;Run uninstaller
HideWindow
ClearErrors
ExecWait '"$R1" _?=$INSTDIR'
IfErrors no_remove_uninstaller
IfFileExists "$INSTDIR\uninstall.exe" 0 no_remove_uninstaller
Delete "$R1"
RMDir $INSTDIR
no_remove_uninstaller:
FunctionEnd
Function PageSkipPre
${If} $PerformUpdate == 1
Abort
${ElseIf} $PreviousVersion != ""
Abort
${EndIf}
FunctionEnd
;;; Used during upgrade to skip most pages
Function PageFastUpdatePre
${If} $PerformUpdate == 1
Abort
${EndIf}
FunctionEnd
Function PageComponentsPre
ClearErrors
ReadRegStr $0 ${MEMENTO_REGISTRY_ROOT} `${MEMENTO_REGISTRY_KEY}` MementoSectionUsed
; Backward compatibility:
; Don't skip the components page until Memento was able to save the user choices.
IfErrors done
${If} $ReinstallType == 1
Abort
${EndIf}
done:
FunctionEnd
Function PageDirectoryPre
${If} $ReinstallType != ""
Abort
${EndIf}
FunctionEnd
Function .OnInstSuccess
${MementoSectionSave}
FunctionEnd
;; End function
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}" \
"InstallLocation" "$INSTDIR"
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}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
"VersionMajor" "@VERSION_MAJOR@"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
"VersionMinor" "@VERSION_MINOR@"
SectionEnd
;;;;;;;;;;;;;;;;;;;;;;;;
; Uninstaller sections ;
;;;;;;;;;;;;;;;;;;;;;;;;
Section "un.$(Name_Section91)" SEC91
SectionIn 1 2 3 RO
SetShellVarContext all
!insertmacro MacroAllExtensions DeleteContextMenu
!insertmacro MacroAllExtensions UnRegisterExtensionSection
!insertmacro MacroSkinExtensions UnRegisterExtensionSection
!insertmacro DeleteContextMenuExt "Directory"
!ifdef INSTALL_ACTIVEX
;remove activex plugin
@HAVE_WIN64_FALSE@ UnRegDLL "$INSTDIR\axvlc.dll"
@HAVE_WIN64_TRUE@ ExecWait '"$SYSDIR\regsvr32.exe" /s /u "$INSTDIR\axvlc.dll"'
Delete /REBOOTOK "$INSTDIR\axvlc.dll"
!endif
;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\${PRODUCT_PUBLISHER}"
RMDir /r $SMPROGRAMS\${PRODUCT_PUBLISHER}
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 HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\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
DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoCDMovieOnArrival" "VLCPlayVCDMovieOnArrival"
DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival
DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlaySuperVideoCDMovieOnArrival" "VLCPlaySVCDMovieOnArrival"
DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival
DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDAudioOnArrival" "VLCPlayDVDAudioOnArrival"
DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival
DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "VLCPlayVideoFilesOnArrival"
DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival
DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "VLCPlayMusicFilesOnArrival"
DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival
DeleteRegKey HKLM Software\Clients\Media\VLC
DeleteRegValue HKLM "Software\RegisteredApplications" "VLC"
DeleteRegKey HKCR "VLC.MediaFile"
DeleteRegKey HKCR "VLC.DVDMovie"
DeleteRegKey HKCR "VLC.CDAudio"
DeleteRegKey HKCR "VLC.VCDMovie"
DeleteRegKey HKCR "VLC.SVCDMovie"
DeleteRegKey HKCR "VLC.OPENFolder"
DeleteRegKey HKCR "VLC.Bluray"
DeleteRegKey HKLM \
"SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
DeleteRegKey HKLM \
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd
Section /o "un.$(Name_Section92)" SEC92
!insertmacro delprefs
SectionEnd
; Uninstaller section descriptions
!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC91} "$(Desc_Section91)"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC92} "$(Desc_Section92)"
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
Function un.onInit
@HAVE_WIN64_TRUE@ SetRegView 64
!insertmacro MUI_UNGETLANGUAGE
FunctionEnd