1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; NSIS installer script for vlc ;
3 ; (http://nsis.sourceforge.net) ;
4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6 !include "languages\declaration.nsh"
8 !define PRODUCT_NAME "VLC media player"
9 !define VERSION @VERSION@
10 !define PRODUCT_VERSION @VERSION@
11 !define PRODUCT_GROUP "VideoLAN"
12 !define PRODUCT_PUBLISHER "VideoLAN Team"
13 !define PRODUCT_WEB_SITE "http://www.videolan.org"
14 !define PRODUCT_DIR_REGKEY "Software\VideoLAN\VLC"
15 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
16 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
17 !define PRODUCT_ID "{ea92ef52-afe4-4212-bacb-dfe9fca94cd6}"
19 !define MUI_LANGDLL_REGISTRY_ROOT "HKLM"
20 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}"
21 !define MUI_LANGDLL_REGISTRY_VALUENAME "Language"
23 @BUILD_ACTIVEX_TRUE@ !define INSTALL_ACTIVEX
24 @BUILD_MOZILLA_TRUE@ !define INSTALL_MOZILLA
29 ;;;;;;;;;;;;;;;;;;;;;;;;;
30 ; General configuration ;
31 ;;;;;;;;;;;;;;;;;;;;;;;;;
33 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
34 OutFile ..\vlc-${VERSION}-win32.exe
35 InstallDir "$PROGRAMFILES\VideoLAN\VLC"
36 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
37 !ifdef NSIS_LZMA_COMPRESS_WHOLE
40 SetCompressor /SOLID lzma
45 BrandingText "${PRODUCT_GROUP} ${PRODUCT_NAME}"
47 InstType $Name_InstTypeRecommended
48 InstType $Name_InstTypeMinimum
49 InstType $Name_InstTypeFull
51 RequestExecutionLevel user
56 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
57 ; NSIS Modern User Interface configuration ;
58 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
60 ; MUI 1.67 compatible ------
64 !define MUI_ABORTWARNING
65 !define MUI_ICON "vlc.ico"
66 !define MUI_UNICON "vlc.ico"
67 !define MUI_COMPONENTSPAGE_SMALLDESC
71 !define MUI_WELCOMEPAGE_TITLE_3LINES
72 !insertmacro MUI_PAGE_WELCOME
74 !define MUI_LICENSEPAGE_BUTTON $(^NextBtn)
75 !insertmacro MUI_PAGE_LICENSE "COPYING.txt"
77 !insertmacro MUI_PAGE_COMPONENTS
79 !insertmacro MUI_PAGE_DIRECTORY
81 !insertmacro MUI_PAGE_INSTFILES
85 Exec '$INSTDIR\vlc.exe'
89 !insertmacro UAC.CallFunctionAsUser ExecAppFile
92 !define MUI_FINISHPAGE_RUN
93 !define MUI_FINISHPAGE_RUN_FUNCTION AppRunAs
94 !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"
95 !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
96 !define MUI_FINISHPAGE_LINK $Link_VisitWebsite
97 !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/"
98 !define MUI_FINISHPAGE_NOREBOOTSUPPORT
99 !insertmacro MUI_PAGE_FINISH
102 !insertmacro MUI_UNPAGE_CONFIRM
103 !insertmacro MUI_UNPAGE_COMPONENTS
104 !insertmacro MUI_UNPAGE_INSTFILES
105 !insertmacro MUI_UNPAGE_FINISH
108 !insertmacro MUI_LANGUAGE "English" # first language is the default language
109 !insertmacro MUI_LANGUAGE "French"
110 !insertmacro MUI_LANGUAGE "German"
111 !insertmacro MUI_LANGUAGE "Spanish"
112 !insertmacro MUI_LANGUAGE "SimpChinese"
113 !insertmacro MUI_LANGUAGE "TradChinese"
114 !insertmacro MUI_LANGUAGE "Japanese"
115 !insertmacro MUI_LANGUAGE "Korean"
116 !insertmacro MUI_LANGUAGE "Italian"
117 !insertmacro MUI_LANGUAGE "Dutch"
118 !insertmacro MUI_LANGUAGE "Danish"
119 !insertmacro MUI_LANGUAGE "Swedish"
120 !insertmacro MUI_LANGUAGE "Norwegian"
121 !insertmacro MUI_LANGUAGE "Finnish"
122 !insertmacro MUI_LANGUAGE "Greek"
123 !insertmacro MUI_LANGUAGE "Russian"
124 !insertmacro MUI_LANGUAGE "Portuguese"
125 !insertmacro MUI_LANGUAGE "PortugueseBR"
126 !insertmacro MUI_LANGUAGE "Arabic"
127 !insertmacro MUI_LANGUAGE "Polish"
128 !insertmacro MUI_LANGUAGE "Romanian"
129 !insertmacro MUI_LANGUAGE "Slovak"
130 !insertmacro MUI_LANGUAGE "Czech"
131 !insertmacro MUI_LANGUAGE "Hungarian"
132 !insertmacro MUI_LANGUAGE "Catalan"
133 !insertmacro MUI_LANGUAGE "Bulgarian"
135 ; Reserve files for solid compression
136 !insertmacro MUI_RESERVEFILE_LANGDLL
137 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
141 ;;;;;;;;;;;;;;;;;;;;;;;
142 ; Macro and Functions ;
143 ;;;;;;;;;;;;;;;;;;;;;;;
145 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
146 ; 1. File type associations ;
147 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
149 ;; Function that register one extension for VLC
150 Function RegisterExtension
151 ; back up old value for extension $R0 (eg. ".opt")
152 ReadRegStr $1 HKCR "$R0" ""
153 StrCmp $1 "" NoBackup
154 StrCmp $1 "VLC$R0" "NoBackup"
155 WriteRegStr HKCR "$R0" "VLC.backup" $1
157 WriteRegStr HKCR "$R0" "" "VLC$R0"
158 ReadRegStr $0 HKCR "VLC$R0" ""
159 WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"
160 WriteRegStr HKCR "VLC$R0\shell" "" "Open"
161 WriteRegStr HKCR "VLC$R0\shell\Open" "" $ShellAssociation_Play
162 WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
163 WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
166 ; Vista and above detection
167 ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
169 StrCmp $R2 '6' ForVista ToEnd
171 WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
176 ;; Function that removes one extension that VLC owns.
177 Function un.RegisterExtension
178 ;start of restore script
179 ReadRegStr $1 HKCR "$R0" ""
180 StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it
181 ; Read the old value from Backup
182 ReadRegStr $1 HKCR "$R0" "VLC.backup"
183 StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
184 DeleteRegKey HKCR "$R0"
187 WriteRegStr HKCR "$R0" "" $1
188 DeleteRegValue HKCR "$R0" "VLC.backup"
190 DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings
191 DeleteRegKey HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations\VLC$R0" ; for vista
194 !macro RegisterExtensionSection EXT
199 Call RegisterExtension
204 !macro UnRegisterExtensionSection EXT
207 Call un.RegisterExtension
211 !macro WriteRegStrSupportedTypes EXT
212 WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""
215 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
216 ; Extension lists Macros ;
217 ; Those macros calls the previous functions ;
218 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
220 !macro MacroAudioExtensions _action
221 !insertmacro ${_action} ".a52"
222 !insertmacro ${_action} ".aac"
223 !insertmacro ${_action} ".ac3"
224 !insertmacro ${_action} ".aob"
225 !insertmacro ${_action} ".dts"
226 !insertmacro ${_action} ".flac"
227 !insertmacro ${_action} ".m4a"
228 !insertmacro ${_action} ".m4p"
229 !insertmacro ${_action} ".mka"
230 !insertmacro ${_action} ".mod"
231 !insertmacro ${_action} ".mp1"
232 !insertmacro ${_action} ".mp2"
233 !insertmacro ${_action} ".mp3"
234 !insertmacro ${_action} ".oma"
235 !insertmacro ${_action} ".oga"
236 !insertmacro ${_action} ".spx"
237 !insertmacro ${_action} ".tta"
238 !insertmacro ${_action} ".wav"
239 !insertmacro ${_action} ".wma"
240 !insertmacro ${_action} ".wv"
241 !insertmacro ${_action} ".xm"
244 !macro MacroVideoExtensions _action
245 !insertmacro ${_action} ".asf"
246 !insertmacro ${_action} ".avi"
247 !insertmacro ${_action} ".divx"
248 !insertmacro ${_action} ".dv"
249 !insertmacro ${_action} ".flv"
250 !insertmacro ${_action} ".gxf"
251 !insertmacro ${_action} ".m1v"
252 !insertmacro ${_action} ".m2v"
253 !insertmacro ${_action} ".m2ts"
254 !insertmacro ${_action} ".m4v"
255 !insertmacro ${_action} ".mkv"
256 !insertmacro ${_action} ".mov"
257 !insertmacro ${_action} ".mp4"
258 !insertmacro ${_action} ".mpeg"
259 !insertmacro ${_action} ".mpeg1"
260 !insertmacro ${_action} ".mpeg2"
261 !insertmacro ${_action} ".mpeg4"
262 !insertmacro ${_action} ".mpg"
263 !insertmacro ${_action} ".mts"
264 !insertmacro ${_action} ".mxf"
265 !insertmacro ${_action} ".nuv"
266 !insertmacro ${_action} ".ogg"
267 !insertmacro ${_action} ".ogm"
268 !insertmacro ${_action} ".ogx"
269 !insertmacro ${_action} ".ogv"
270 !insertmacro ${_action} ".rmvb"
271 !insertmacro ${_action} ".ts"
272 !insertmacro ${_action} ".vob"
273 !insertmacro ${_action} ".vro"
274 !insertmacro ${_action} ".wmv"
277 !macro MacroOtherExtensions _action
278 !insertmacro ${_action} ".asx"
279 !insertmacro ${_action} ".bin"
280 !insertmacro ${_action} ".cue"
281 !insertmacro ${_action} ".ifo"
282 !insertmacro ${_action} ".m3u"
283 !insertmacro ${_action} ".pls"
284 !insertmacro ${_action} ".sdp"
285 !insertmacro ${_action} ".vlc"
286 !insertmacro ${_action} ".xspf"
289 ; One macro to rule them all
290 !macro MacroAllExtensions _action
291 !insertmacro MacroAudioExtensions ${_action}
292 !insertmacro MacroVideoExtensions ${_action}
293 !insertmacro MacroOtherExtensions ${_action}
296 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
297 ; 2. Context menu entries ;
298 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
300 ; Generic function for adding the context menu for one ext.
301 !macro AddContextMenuExt EXT
302 WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" $ContextMenuEntry_PlayWith
303 WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --no-playlist-enqueue "%1"'
305 WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" $ContextMenuEntry_AddToPlaylist
306 WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --playlist-enqueue "%1"'
309 !macro AddContextMenu EXT
311 ReadRegStr $R0 HKCR ${EXT} ""
312 !insertmacro AddContextMenuExt $R0
316 !macro DeleteContextMenuExt EXT
317 DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC
318 DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC
321 !macro DeleteContextMenu EXT
323 ReadRegStr $R0 HKCR ${EXT} ""
324 !insertmacro DeleteContextMenuExt $R0
328 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
330 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
334 !define Index 'Line${__LINE__}'
337 ; this will loop through all the logged users and "virtual" windows users
338 ; (it looks like users are only present in HKEY_USERS when they are logged in)
340 EnumRegKey $1 HKU "" $0
341 StrCmp $1 "" "${Index}-End"
343 ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData
344 StrCmp $2 "" "${Index}-Loop"
355 !macro OpenUninstallLog
356 FileOpen $UninstallLog "$INSTDIR\uninstall.log" a
357 FileSeek $UninstallLog 0 END
360 !macro CloseUninstallLog
361 FileClose $UninstallLog
362 SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN
368 !macro InstallFile FILEREGEX
370 !define Index 'Line${__LINE__}'
371 FindFirst $0 $1 "$INSTDIR\${FILEREGEX}"
372 StrCmp $0 "" "${Index}-End"
374 StrCmp $1 "" "${Index}-End"
375 FileWrite $UninstallLog "$1$\r$\n"
382 !macro InstallFolder FOLDER
385 Call InstallFolderInternal
388 Function InstallFolderInternal
390 !define Index 'Line${__LINE__}'
391 FindFirst $0 $1 "$INSTDIR\$9\*"
392 StrCmp $0 "" "${Index}-End"
394 StrCmp $1 "" "${Index}-End"
395 StrCmp $1 "." "${Index}-Next"
396 StrCmp $1 ".." "${Index}-Next"
397 IfFileExists "$9\$1\*" 0 "${Index}-Write"
401 Call InstallFolderInternal
406 FileWrite $UninstallLog "$9\$1$\r$\n"
416 ;;;;;;;;;;;;;;;;;;;;;;
417 ; Installer sections ;
420 ;;;;;;;;;;;;;;;;;;;;;;
422 Section $Name_Section01 SEC01
424 SetShellVarContext all
425 SetOutPath "$INSTDIR"
427 !insertmacro OpenUninstallLog
429 ; VLC.exe, libvlc.dll
430 !insertmacro InstallFile vlc.exe
431 !insertmacro InstallFile vlc.exe.manifest
432 !insertmacro InstallFile vlc-cache-gen.exe
435 !insertmacro InstallFile *.dll
438 !insertmacro InstallFile *.txt
441 !insertmacro InstallFolder plugins
442 !insertmacro InstallFolder locale
443 @BUILD_OSDMENU_TRUE@ !insertmacro InstallFolder osdmenu
444 @BUILD_SKINS_TRUE@ !insertmacro InstallFolder skins
445 @BUILD_HTTPD_TRUE@ !insertmacro InstallFolder http
446 @BUILD_LUA_TRUE@ !insertmacro InstallFolder lua
447 ExecWait "$INSTDIR\vlc-cache-gen.exe $INSTDIR\plugins"
451 WriteIniStr "$INSTDIR\${PRODUCT_GROUP} Website.url" "InternetShortcut" "URL" \
452 "${PRODUCT_WEB_SITE}"
453 FileWrite $UninstallLog "${PRODUCT_GROUP} Website.url$\r$\n"
454 WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" \
455 "${PRODUCT_WEB_SITE}/doc/"
456 FileWrite $UninstallLog "Documentation.url$\r$\n"
457 WriteIniStr "$INSTDIR\New_Skins.url" "InternetShortcut" "URL" \
458 "${PRODUCT_WEB_SITE}/vlc/skins.php"
459 FileWrite $UninstallLog "New_Skins.url$\r$\n"
461 !insertmacro CloseUninstallLog
463 ; Add VLC to "recommended programs" for the following extensions
464 WriteRegStr HKCR Applications\vlc.exe "" ""
465 WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player"
466 WriteRegStr HKCR Applications\vlc.exe\shell\Open "" $ContextMenuEntry_PlayWith
467 WriteRegStr HKCR Applications\vlc.exe\shell\Open\command "" \
468 '"$INSTDIR\vlc.exe" --started-from-file "%1"'
469 !insertmacro MacroAllExtensions WriteRegStrSupportedTypes
471 ; Windows default programs Registration
472 ; Vista and above detection
473 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
475 StrCmp $R1 '6' lbl_vista lbl_done
478 WriteRegStr HKLM "Software\RegisteredApplications" "VLC" "Software\Clients\Media\VLC\Capabilities"
479 WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationName" "VLC media player"
480 WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationDescription" "VLC - The video swiss knife"
481 WriteRegStr HKLM "Software\Clients\Media\VLC" "" "VLC media player"
482 WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "HideIconsCommand" "$\"$INSTDIR\spad-setup.exe$\" /HideIcons /S"
483 WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "ShowIconsCommand" "$\"$INSTDIR\spad-setup.exe$\" /ShowIcons /S"
484 WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "ReinstallCommand" "$\"$INSTDIR\spad-setup.exe$\" /Reinstall /S"
485 WriteRegDWORD HKLM "Software\Clients\Media\VLC\InstallInfo" "IconsVisible" 0x001
490 Section $Name_Section02a SEC02a
492 CreateDirectory "$SMPROGRAMS\VideoLAN"
493 CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings"
494 CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Audio"
495 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Audio\Set Audio mode to DirectX (default).lnk" \
496 "$INSTDIR\vlc.exe" "--aout aout_directx --save-config vlc://quit"
497 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Audio\Set Audio mode to Waveout.lnk" \
498 "$INSTDIR\vlc.exe" "--aout waveout --save-config vlc://quit"
499 CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Interface"
500 @BUILD_SKINS_TRUE@ CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Interface\Set Main Interface to Skinnable.lnk" \
501 @BUILD_SKINS_TRUE@ "$INSTDIR\vlc.exe" "-I skins --save-config vlc://quit"
502 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Interface\Set Main Interface to Qt (default).lnk" \
503 "$INSTDIR\vlc.exe" "-I qt --save-config vlc://quit"
504 CreateDirectory "$SMPROGRAMS\VideoLAN\Quick Settings\Video"
505 ; FIXME add detection for Vista. Direct3D will be default there, for all others it's DirectX
506 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to Direct3D.lnk" \
507 "$INSTDIR\vlc.exe" "--vout direct3d --overlay --directx-hw-yuv --save-config vlc://quit"
508 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to Direct3D (no hardware acceleration).lnk" \
509 "$INSTDIR\vlc.exe" "--vout direct3d --overlay --no-directx-hw-yuv --save-config vlc://quit"
510 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to DirectX.lnk" \
511 "$INSTDIR\vlc.exe" "--vout directx --overlay --directx-hw-yuv --save-config vlc://quit"
512 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to DirectX (no hardware acceleration).lnk" \
513 "$INSTDIR\vlc.exe" "--vout directx --no-overlay --no-directx-hw-yuv --save-config vlc://quit"
514 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to DirectX (no video overlay).lnk" \
515 "$INSTDIR\vlc.exe" "--vout directx --no-overlay --directx-hw-yuv --save-config vlc://quit"
516 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Video\Set Video mode to OpenGL.lnk" \
517 "$INSTDIR\vlc.exe" "--vout opengl --overlay --save-config vlc://quit"
518 CreateShortCut "$SMPROGRAMS\VideoLAN\Quick Settings\Reset VLC media player preferences and cache files.lnk" \
519 "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache vlc://quit"
520 CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \
521 "$INSTDIR\Documentation.url"
522 CreateShortCut "$SMPROGRAMS\VideoLAN\Release Notes.lnk" \
523 "$INSTDIR\NEWS.txt" ""
524 CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_GROUP} Website.lnk" \
525 "$INSTDIR\${PRODUCT_GROUP} Website.url"
526 CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \
527 "$INSTDIR\vlc.exe" ""
530 Section $Name_Section02b SEC02b
532 CreateShortCut "$DESKTOP\VLC media player.lnk" \
533 "$INSTDIR\vlc.exe" ""
536 !ifdef INSTALL_MOZILLA
537 Section /o $Name_Section03 SEC03
540 SetOutPath "$INSTDIR"
541 !insertmacro OpenUninstallLog
542 !insertmacro InstallFile mozilla\npvlc.dll
543 !insertmacro InstallFile mozilla\npvlc.dll.manifest
544 !insertmacro CloseUninstallLog
546 !define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
547 WriteRegStr HKLM ${Moz} "Description" "VLC Multimedia Plugin"
548 WriteRegStr HKLM ${Moz} "Path" "$INSTDIR\npvlc.dll"
549 WriteRegStr HKLM ${Moz} "Product" "VLC media player"
550 WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN"
551 WriteRegStr HKLM ${Moz} "Version" "${VERSION}"
553 ; for very old version of mozilla, these lines may be needed
558 ;!define Index 'Line${__LINE__}'
564 ; EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"
565 ; StrCmp $R0 "" "${Index}-End"
567 ; ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"
568 ; StrCmp $R2 "" "${Index}-Loop" ""
570 ; CopyFiles "$INSTDIR\npvlc.dll" "$R2"
572 ; CopyFiles ${LIBVLC_DLL} "$R2"
574 ; !ifdef LIBVLC_CONTROL_DLL
575 ; CopyFiles ${LIBVLC_CONTROL_DLL} "$R2"
577 ; Goto "${Index}-Loop"
585 !ifdef INSTALL_ACTIVEX
586 Section $Name_Section04 SEC04
588 SetOutPath "$INSTDIR"
589 !insertmacro OpenUninstallLog
590 !insertmacro InstallFile activex\axvlc.dll
591 !insertmacro InstallFile activex\axvlc.dll.manifest
592 !insertmacro CloseUninstallLog
593 RegDLL "$INSTDIR\axvlc.dll"
598 Section $Name_Section05 SEC05
600 WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" $ContextMenuEntry_PlayWith
601 WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \
602 '"$INSTDIR\vlc.exe" --started-from-file cdda://%1'
603 WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" $ContextMenuEntry_PlayWith
604 WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \
605 '"$INSTDIR\vlc.exe" --started-from-file dvd://%1'
607 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" ""
608 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" $Action_OnArrivalDVD
609 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
610 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeProgID" "VLC.DVDMovie"
611 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeVerb" "Open"
612 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "VideoLAN VLC media player"
614 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" ""
615 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" $Action_OnArrivalAudioCD
616 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
617 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeProgID" "VLC.CDAudio"
618 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeVerb" "Open"
619 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Provider" "VideoLAN VLC media player"
620 WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie"
621 WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Open"
622 WriteRegStr HKCR "VLC.DVDMovie\shell\Open\command" "" \
623 '"$INSTDIR\vlc.exe" --started-from-file dvd://%1'
624 WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
625 WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio"
626 WriteRegStr HKCR "VLC.CDAudio\shell" "" "Open"
627 WriteRegStr HKCR "VLC.CDAudio\shell\Open\command" "" \
628 '"$INSTDIR\vlc.exe" --started-from-file cdda://%1'
629 WriteRegStr HKCR "VLC.CDAudio\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
634 SectionGroup /e !$Name_Section06 SEC06
635 SectionGroup $Name_SectionGroupAudio
636 !insertmacro MacroAudioExtensions RegisterExtensionSection
638 SectionGroup $Name_SectionGroupVideo
639 !insertmacro MacroVideoExtensions RegisterExtensionSection
641 SectionGroup $Name_SectionGroupOther
642 !insertmacro MacroOtherExtensions RegisterExtensionSection
646 Section $Name_Section07 SEC07
648 !insertmacro MacroAllExtensions AddContextMenu
649 !insertmacro AddContextMenuExt "Directory"
652 Section $Name_Section08 SEC08
653 !insertmacro delprefs
656 ; Installer section descriptions
657 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
658 !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $Desc_Section01
659 !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} $Desc_Section02a
660 !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} $Desc_Section02b
661 @BUILD_MOZILLA_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $Desc_Section03
662 @BUILD_ACTIVEX_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $Desc_Section04
663 !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $Desc_Section05
664 !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $Desc_Section06
665 !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $Desc_Section07
666 !insertmacro MUI_DESCRIPTION_TEXT ${SEC08} $Desc_Section08
667 !insertmacro MUI_FUNCTION_DESCRIPTION_END
674 StrCmp 1223 $0 UAC_ElevationAborted
675 StrCmp 0 $0 0 UAC_Err
676 StrCmp 1 $1 0 UAC_Success
680 MessageBox mb_iconstop "Unable to elevate, error $0"
683 UAC_ElevationAborted:
684 MessageBox mb_iconstop "This installer requires admin access, aborting!"
689 StrCmp 3 $1 0 UAC_ElevationAborted
690 MessageBox mb_iconstop "This installer requires admin access, try again"
692 !insertmacro MUI_LANGDLL_DISPLAY
694 !include "languages\english.nsh"
695 StrCmp $LANGUAGE ${LANG_FRENCH} French 0
696 StrCmp $LANGUAGE ${LANG_GERMAN} German 0
697 StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
698 StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
699 StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
700 StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
701 StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
702 StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
703 StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
704 StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
705 StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
706 StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
707 StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
709 !include "languages\french.nsh"
712 !include "languages\german.nsh"
715 !include "languages\italian.nsh"
718 !include "languages\hungarian.nsh"
721 !include "languages\romanian.nsh"
724 !include "languages\catalan.nsh"
727 !include "languages\bulgarian.nsh"
730 !include "languages\slovak.nsh"
733 !include "languages\polish.nsh"
736 !include "languages\dutch.nsh"
739 !include "languages\schinese.nsh"
742 !include "languages\finnish.nsh"
745 !include "languages\brazilian_portuguese.nsh"
748 ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
752 MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled IDNO done
757 ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
762 Function .OnInstFailed
766 Function .OnInstSuccess
771 WriteUninstaller "$INSTDIR\uninstall.exe"
772 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR
773 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"
774 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"
776 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
777 "DisplayName" "$(^Name)"
778 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
779 "UninstallString" "$INSTDIR\uninstall.exe"
780 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
781 "InstallLocation" "$INSTDIR"
782 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
783 "DisplayIcon" "$INSTDIR\vlc.exe"
784 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
785 "DisplayVersion" "${PRODUCT_VERSION}"
786 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
787 "URLInfoAbout" "${PRODUCT_WEB_SITE}"
788 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
789 "Publisher" "${PRODUCT_PUBLISHER}"
790 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
791 "VersionMajor" "@VERSION_MAJOR@"
792 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
793 "VersionMinor" "@VERSION_MINOR@"
796 ;;;;;;;;;;;;;;;;;;;;;;;;
797 ; Uninstaller sections ;
798 ;;;;;;;;;;;;;;;;;;;;;;;;
800 ; TrimNewlines (copied from NSIS documentation)
801 ; input, top of stack (e.g. whatever$\r$\n)
802 ; output, top of stack (replaces, with e.g. whatever)
803 ; modifies no other variables.
805 Function un.TrimNewlines
814 StrCmp $R2 "$\r" loop
815 StrCmp $R2 "$\n" loop
817 IntCmp $R1 0 no_trim_needed
826 Function un.RemoveEmptyDirs
828 !define Index 'Line${__LINE__}'
829 FindFirst $0 $1 "$INSTDIR$9*"
830 StrCmp $0 "" "${Index}-End"
832 StrCmp $1 "" "${Index}-End"
833 StrCmp $1 "." "${Index}-Next"
834 StrCmp $1 ".." "${Index}-Next"
839 Call un.RemoveEmptyDirs
853 Section "un.$Name_Section91" SEC91
855 SetShellVarContext all
857 !insertmacro MacroAllExtensions DeleteContextMenu
858 !insertmacro MacroAllExtensions UnRegisterExtensionSection
859 !insertmacro DeleteContextMenuExt "Directory"
861 ;remove activex plugin
862 UnRegDLL "$INSTDIR\axvlc.dll"
863 Delete /REBOOTOK "$INSTDIR\axvlc.dll"
864 Delete /REBOOTOK "$INSTDIR\axvlc.dll.manifest"
866 ;remove mozilla plugin
871 !define Index 'Line${__LINE__}'
877 EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"
878 StrCmp $R0 "" "${Index}-End"
880 ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"
881 StrCmp $R2 "" "${Index}-Loop" ""
883 ; old files (0.8.5 and before) that may be lying around
884 Delete /REBOOTOK "$R2\npvlc.dll"
885 Delete /REBOOTOK "$R2\libvlc.dll"
886 Delete /REBOOTOK "$R2\vlcintf.xpt"
891 Delete /REBOOTOK "$INSTDIR\npvlc.dll"
892 Delete /REBOOTOK "$INSTDIR\npvlc.dll.manifest"
894 RMDir "$SMPROGRAMS\VideoLAN"
895 RMDir /r $SMPROGRAMS\VideoLAN
897 FileOpen $UninstallLog "$INSTDIR\uninstall.log" r
900 FileRead $UninstallLog $R0
901 IfErrors UninstallEnd
905 Delete "$INSTDIR\$R0"
908 FileClose $UninstallLog
909 Delete "$INSTDIR\uninstall.log"
910 Delete "$INSTDIR\uninstall.exe"
912 Call un.RemoveEmptyDirs
915 DeleteRegKey HKLM Software\VideoLAN
917 DeleteRegKey HKCR Applications\vlc.exe
918 DeleteRegKey HKCR AudioCD\shell\PlayWithVLC
919 DeleteRegKey HKCR DVD\shell\PlayWithVLC
920 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival"
921 DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival
922 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"
923 DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival
924 DeleteRegKey HKLM Software\Clients\Media\VLC
925 DeleteRegValue HKLM "Software\RegisteredApplications" "VLC"
926 DeleteRegKey HKCR "VLC.MediaFile"
929 "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
932 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
934 Delete "$DESKTOP\VLC media player.lnk"
936 DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
937 DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
941 Section /o "un.$Name_Section92" SEC92
942 !insertmacro delprefs
945 ; Uninstaller section descriptions
946 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
947 !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} $Desc_Section91
948 !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} $Desc_Section92
949 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
951 Function un.OnUnInstFailed
955 Function un.OnUnInstSuccess
957 Delete "$INSTDIR\UAC.dll"
964 StrCmp 1223 $0 UAC_ElevationAborted
965 StrCmp 0 $0 0 UAC_Err
966 StrCmp 1 $1 0 UAC_Success
970 MessageBox mb_iconstop "Unable to elevate, error $0"
973 UAC_ElevationAborted:
974 MessageBox mb_iconstop "This installer requires admin access, aborting!"
979 StrCmp 3 $1 0 UAC_ElevationAborted
980 MessageBox mb_iconstop "This installer requires admin access, try again"
983 !insertmacro MUI_UNGETLANGUAGE
985 !include "languages\english.nsh"
986 StrCmp $LANGUAGE ${LANG_FRENCH} French 0
987 StrCmp $LANGUAGE ${LANG_GERMAN} German 0
988 StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
989 StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
990 StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
991 StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
992 StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
993 StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
994 StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
995 StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
996 StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
997 StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
998 StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
1000 !include "languages\french.nsh"
1003 !include "languages\german.nsh"
1006 !include "languages\italian.nsh"
1009 !include "languages\hungarian.nsh"
1012 !include "languages\romanian.nsh"
1015 !include "languages\catalan.nsh"
1018 !include "languages\bulgarian.nsh"
1021 !include "languages\slovak.nsh"
1024 !include "languages\polish.nsh"
1027 !include "languages\dutch.nsh"
1030 !include "languages\schinese.nsh"
1033 !include "languages\finnish.nsh"
1036 !include "languages\brazilian_portuguese.nsh"