Compile fix + handle case with no xml:base
[vlc.git] / vlc.win32.nsi.in
blob5f8be712643e6c0404bb135c955881ae2beb1271
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; NSIS installer script for vlc ;
3 ; (http://nsis.sourceforge.net) ;
4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6 !define PRODUCT_NAME "VLC media player"
7 !define PRODUCT_VERSION '${VERSION}'
8 !define PRODUCT_GROUP "VideoLAN"
9 !define PRODUCT_PUBLISHER "VideoLAN Team"
10 !define PRODUCT_WEB_SITE "http://www.videolan.org"
11 !define PRODUCT_DIR_REGKEY "Software\VideoLAN\VLC"
12 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
13 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
14 !define PRODUCT_ID "{ea92ef52-afe4-4212-bacb-dfe9fca94cd6}"
16 @FILE_LIBVLC_DLL@
18 ;;;;;;;;;;;;;;;;;;;;;;;;;
19 ; General configuration ;
20 ;;;;;;;;;;;;;;;;;;;;;;;;;
22 Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}"
23 OutFile ..\vlc-${VERSION}-win32.exe
24 InstallDir "$PROGRAMFILES\VideoLAN\VLC"
25 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
26 !ifdef NSIS_LZMA_COMPRESS_WHOLE
27 SetCompressor lzma
28 !else
29 SetCompressor /SOLID lzma
30 !endif
31 ;ShowInstDetails show
32 ;ShowUnInstDetails show
33 SetOverwrite ifnewer
34 CRCCheck on
36 InstType "Recommended"
37 InstType "Minimum"
38 InstType "Full"
40 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
41 ; NSIS Modern User Interface configuration ;
42 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
44 ; MUI 1.67 compatible ------
45 !include "MUI.nsh"
47 ; MUI Settings
48 !define MUI_ABORTWARNING
49 !define MUI_ICON "vlc48x48.ico"
50 !define MUI_UNICON "vlc48x48.ico"
51 !define MUI_COMPONENTSPAGE_SMALLDESC
53 ; Installer pages
54 ; Welcome page
55 !define MUI_WELCOMEPAGE_TITLE_3LINES
56 !insertmacro MUI_PAGE_WELCOME
57 ; License page
58 !insertmacro MUI_PAGE_LICENSE "COPYING.txt"
59 ; Components page
60 !insertmacro MUI_PAGE_COMPONENTS
61 ; Directory page
62 !insertmacro MUI_PAGE_DIRECTORY
63 ; Instfiles page
64 !insertmacro MUI_PAGE_INSTFILES
65 ; Finish page
66 !define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe"
67 !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"
68 !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
69 !define MUI_FINISHPAGE_LINK "Visit the VideoLAN VLC media player Website"
70 !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/"
71 !define MUI_FINISHPAGE_NOREBOOTSUPPORT
72 !insertmacro MUI_PAGE_FINISH
74 ; Uninstaller pages
75 !insertmacro MUI_UNPAGE_CONFIRM
76 !insertmacro MUI_UNPAGE_COMPONENTS
77 !insertmacro MUI_UNPAGE_INSTFILES
78 !insertmacro MUI_UNPAGE_FINISH
80 ; Language files
81 !insertmacro MUI_LANGUAGE "English" # first language is the default language
82 !insertmacro MUI_LANGUAGE "French"
83 !insertmacro MUI_LANGUAGE "German"
84 !insertmacro MUI_LANGUAGE "Spanish"
85 !insertmacro MUI_LANGUAGE "SimpChinese"
86 !insertmacro MUI_LANGUAGE "TradChinese"
87 !insertmacro MUI_LANGUAGE "Japanese"
88 !insertmacro MUI_LANGUAGE "Korean"
89 !insertmacro MUI_LANGUAGE "Italian"
90 !insertmacro MUI_LANGUAGE "Dutch"
91 !insertmacro MUI_LANGUAGE "Danish"
92 !insertmacro MUI_LANGUAGE "Swedish"
93 !insertmacro MUI_LANGUAGE "Norwegian"
94 !insertmacro MUI_LANGUAGE "Finnish"
95 !insertmacro MUI_LANGUAGE "Greek"
96 !insertmacro MUI_LANGUAGE "Russian"
97 !insertmacro MUI_LANGUAGE "Portuguese"
98 !insertmacro MUI_LANGUAGE "Arabic"
100 !insertmacro MUI_RESERVEFILE_LANGDLL
102 ; Reserve files
103 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
105 ; MUI end ------
107 ;;;;;;;;;;;;;;;;;;;
108 ; Extension lists ;
109 ;;;;;;;;;;;;;;;;;;;
111 !macro MacroAudioExtensions _action
112 !insertmacro ${_action} ".a52"
113 !insertmacro ${_action} ".aac"
114 !insertmacro ${_action} ".ac3"
115 !insertmacro ${_action} ".dts"
116 !insertmacro ${_action} ".flac"
117 !insertmacro ${_action} ".mka"
118 !insertmacro ${_action} ".mp1"
119 !insertmacro ${_action} ".mp2"
120 !insertmacro ${_action} ".mp3"
121 !insertmacro ${_action} ".ogg"
122 !insertmacro ${_action} ".spx"
123 !insertmacro ${_action} ".wav"
124 !insertmacro ${_action} ".wma"
125 !macroend
127 !macro MacroVideoExtensions _action
128 !insertmacro ${_action} ".asf"
129 !insertmacro ${_action} ".avi"
130 !insertmacro ${_action} ".divx"
131 !insertmacro ${_action} ".dv"
132 !insertmacro ${_action} ".m1v"
133 !insertmacro ${_action} ".m2v"
134 !insertmacro ${_action} ".mkv"
135 !insertmacro ${_action} ".mov"
136 !insertmacro ${_action} ".mp4"
137 !insertmacro ${_action} ".mpeg"
138 !insertmacro ${_action} ".mpeg1"
139 !insertmacro ${_action} ".mpeg2"
140 !insertmacro ${_action} ".mpeg4"
141 !insertmacro ${_action} ".mpg"
142 !insertmacro ${_action} ".ps"
143 !insertmacro ${_action} ".ts"
144 !insertmacro ${_action} ".ogm"
145 !insertmacro ${_action} ".vob"
146 !insertmacro ${_action} ".wmv"
147 !macroend
149 !macro MacroOtherExtensions _action
150 !insertmacro ${_action} ".asx"
151 !insertmacro ${_action} ".bin"
152 !insertmacro ${_action} ".cue"
153 !insertmacro ${_action} ".m3u"
154 !insertmacro ${_action} ".pls"
155 !insertmacro ${_action} ".vlc"
156 !macroend
158 !macro MacroAllExtensions _action
159 !insertmacro MacroAudioExtensions ${_action}
160 !insertmacro MacroVideoExtensions ${_action}
161 !insertmacro MacroOtherExtensions ${_action}
162 !macroend
164 ;;;;;;;;;;;;;;;;;;;;;;;;;;
165 ; File type associations ;
166 ;;;;;;;;;;;;;;;;;;;;;;;;;;
168 Function RegisterExtension
169 ; back up old value for extension $R0 (eg. ".opt")
170 ReadRegStr $1 HKCR "$R0" ""
171 StrCmp $1 "" NoBackup
172 StrCmp $1 "VLC$R0" "NoBackup"
173 WriteRegStr HKCR "$R0" "VLC.backup" $1
174 NoBackup:
175 WriteRegStr HKCR "$R0" "" "VLC$R0"
176 ReadRegStr $0 HKCR "VLC$R0" ""
177 WriteRegStr HKCR "VLC$R0" "" "VLC media file"
178 WriteRegStr HKCR "VLC$R0\shell" "" "Play"
179 WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '"$INSTDIR\vlc.exe" --one-instance-when-started-from-file "%1"'
180 WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
181 FunctionEnd
183 Function un.RegisterExtension
184 ;start of restore script
185 ReadRegStr $1 HKCR "$R0" ""
186 StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it
187 ReadRegStr $1 HKCR "$R0" "VLC.backup"
188 StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
189 DeleteRegKey HKCR "$R0"
190 Goto NoOwn
191 Restore:
192 WriteRegStr HKCR "$R0" "" $1
193 DeleteRegValue HKCR "$R0" "VLC.backup"
194 NoOwn:
195 DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings
196 FunctionEnd
198 !macro RegisterExtensionSection EXT
199 Section /o ${EXT}
200 SectionIn 1 3
201 Push $R0
202 StrCpy $R0 ${EXT}
203 Call RegisterExtension
204 Pop $R0
205 SectionEnd
206 !macroend
208 !macro UnRegisterExtensionSection EXT
209 Push $R0
210 StrCpy $R0 ${EXT}
211 Call un.RegisterExtension
212 Pop $R0
213 !macroend
215 !macro WriteRegStrSupportedTypes EXT
216 WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""
217 !macroend
219 ;;;;;;;;;;;;;;;;;;;;;;;;
220 ; Context menu entries ;
221 ;;;;;;;;;;;;;;;;;;;;;;;;
223 !macro AddContextMenu EXT
224 WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" "Play with VLC media player"
225 WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '$INSTDIR\vlc.exe --one-instance-when-started-from-file --no-playlist-enqueue "%1"'
227 WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" "Add to VLC media player's Playlist"
228 WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '$INSTDIR\vlc.exe --one-instance-when-started-from-file --playlist-enqueue "%1"'
229 !macroend
231 !macro DeleteContextMenu EXT
232 DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC
233 DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC
234 !macroend
236 ;;;;;;;;;;;;;;;;;;;;;;;;;;
237 ; Delete prefs and cache ;
238 ;;;;;;;;;;;;;;;;;;;;;;;;;;
240 !macro delprefs
241 SectionIn 1 3
242 StrCpy $0 0
243 !define Index 'Line${__LINE__}'
244 "${Index}-Loop:"
245 ; FIXME
246 ; this will loop through all the logged users and "virtual" windows users
247 ; (it looks like users are only present in HKEY_USERS when they are logged in)
248 ClearErrors
249 EnumRegKey $1 HKU "" $0
250 StrCmp $1 "" "${Index}-End"
251 IntOp $0 $0 + 1
252 ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData
253 StrCmp $2 "" "${Index}-Loop"
254 RMDir /r "$2\vlc"
255 Goto "${Index}-Loop"
256 "${Index}-End:"
257 !undef Index
258 !macroend
260 Var UninstallLog
262 !macro OpenUninstallLog
263 FileOpen $UninstallLog "$INSTDIR\uninstall.log" a
264 FileSeek $UninstallLog 0 END
265 !macroend
267 !macro CloseUninstallLog
268 FileClose $UninstallLog
269 SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN
270 !macroend
272 !macro InstallFile FILEREGEX
273 File "${FILEREGEX}"
274 !define Index 'Line${__LINE__}'
275 FindFirst $0 $1 "$INSTDIR\${FILEREGEX}"
276 StrCmp $0 "" "${Index}-End"
277 "${Index}-Loop:"
278 StrCmp $1 "" "${Index}-End"
279 FileWrite $UninstallLog "$1$\r$\n"
280 FindNext $0 $1
281 Goto "${Index}-Loop"
282 "${Index}-End:"
283 !undef Index
284 !macroend
286 !macro InstallFolder FOLDER
287 File /r "${FOLDER}"
288 Push "${FOLDER}"
289 Call InstallFolderInternal
290 !macroend
292 Function InstallFolderInternal
293 Pop $9
294 !define Index 'Line${__LINE__}'
295 FindFirst $0 $1 "$INSTDIR\$9\*"
296 StrCmp $0 "" "${Index}-End"
297 "${Index}-Loop:"
298 StrCmp $1 "" "${Index}-End"
299 StrCmp $1 "." "${Index}-Next"
300 StrCmp $1 ".." "${Index}-Next"
301 IfFileExists "$9\$1\*" 0 "${Index}-Write"
302 Push $0
303 Push $9
304 Push "$9\$1"
305 Call InstallFolderInternal
306 Pop $9
307 Pop $0
308 Goto "${Index}-Next"
309 "${Index}-Write:"
310 FileWrite $UninstallLog "$9\$1$\r$\n"
311 "${Index}-Next:"
312 FindNext $0 $1
313 Goto "${Index}-Loop"
314 "${Index}-End:"
315 !undef Index
316 FunctionEnd
319 ;;;;;;;;;;;;;;;;;;;;;;
320 ; Installer sections ;
321 ;;;;;;;;;;;;;;;;;;;;;;
323 Section "Media player (required)" SEC01
324 SectionIn 1 2 3 RO
325 SetShellVarContext all
326 SetOutPath "$INSTDIR"
328 !insertmacro OpenUninstallLog
330 !insertmacro InstallFile vlc.exe
331 !insertmacro InstallFile vlc.exe.manifest
332 !ifdef LIBVLC_DLL
333 !insertmacro InstallFile ${LIBVLC_DLL}
334 !endif
335 !insertmacro InstallFile *.txt
337 !insertmacro InstallFolder plugins
338 !insertmacro InstallFolder locale
339 !insertmacro InstallFolder osdmenu
340 !insertmacro InstallFolder skins
341 !insertmacro InstallFolder http
343 WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" \
344 "${PRODUCT_WEB_SITE}"
345 FileWrite $UninstallLog "${PRODUCT_NAME}.url$\r$\n"
346 WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" \
347 "${PRODUCT_WEB_SITE}/doc/"
348 FileWrite $UninstallLog "Documentation.url$\r$\n"
350 !insertmacro CloseUninstallLog
352 ; Add VLC to "recomended programs" for the following extensions
353 WriteRegStr HKCR Applications\vlc.exe "" ""
354 WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player"
355 WriteRegStr HKCR Applications\vlc.exe\shell\Play "" "Play with VLC"
356 WriteRegStr HKCR Applications\vlc.exe\shell\Play\command "" \
357 '$INSTDIR\vlc.exe --one-instance-when-started-from-file "%1"'
358 !insertmacro MacroAllExtensions WriteRegStrSupportedTypes
360 WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" "Play with VLC media player"
361 WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \
362 "$INSTDIR\vlc.exe --one-instance-when-started-from-file cdda:%1"
363 WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" "Play with VLC media player"
364 WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \
365 "$INSTDIR\vlc.exe --one-instance-when-started-from-file dvd:%1"
367 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" ""
368 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" "Play DVD movie"
369 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
370 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeProgID" "VLC.DVDMovie"
371 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeVerb" "play"
372 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "VideoLAN VLC media player"
374 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" ""
375 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" "Play CD audio"
376 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe --one-instance-when-started-from-file",0'
377 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeProgID" "VLC.CDAudio"
378 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeVerb" "play"
379 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Provider" "VideoLAN VLC media player"
380 WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie"
381 WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Play"
382 WriteRegStr HKCR "VLC.DVDMovie\shell\Play\command" "" \
383 '$INSTDIR\vlc.exe --one-instance-when-started-from-file dvd:%1'
384 WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
385 WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio"
386 WriteRegStr HKCR "VLC.CDAudio\shell" "" "Play"
387 WriteRegStr HKCR "VLC.CDAudio\shell\Play\command" "" \
388 '$INSTDIR\vlc.exe --one-instance-when-started-from-file cdda:%1'
389 WriteRegStr HKCR "VLC.CDAudio\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
391 SectionEnd
393 Section "Start Menu Shortcut" SEC02a
394 SectionIn 1 2 3
395 CreateDirectory "$SMPROGRAMS\VideoLAN"
396 CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \
397 "$INSTDIR\vlc.exe" ""
398 CreateShortCut "$SMPROGRAMS\VideoLAN\Reset VLC defaults and quit.lnk" \
399 "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache --save-config vlc:quit "
400 CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_NAME} Website.lnk" \
401 "$INSTDIR\${PRODUCT_NAME}.url"
402 CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \
403 "$INSTDIR\Documentation.url"
404 SectionEnd
406 Section "Desktop Shortcut" SEC02b
407 SectionIn 1 2 3
408 CreateShortCut "$DESKTOP\VLC media player.lnk" \
409 "$INSTDIR\vlc.exe" ""
410 SectionEnd
412 Section /o "Mozilla plugin" SEC03
413 SectionIn 1 3
415 !insertmacro OpenUninstallLog
416 !insertmacro InstallFolder mozilla
417 !insertmacro CloseUninstallLog
419 ; doesn't work. bug in mozilla/mozilla firefox or moz documentation (xpt file isn't loaded)
420 ; see mozilla bugs 184506 and 159445
421 ;!define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
422 ;WriteRegStr HKLM ${Moz} "Description" "VideoLAN VLC plugin for Mozilla"
423 ;WriteRegStr HKLM ${Moz} "Path" "$INSTDIR\mozilla\npvlc.dll"
424 ;WriteRegStr HKLM ${Moz} "Product" "VLC media player"
425 ;WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN"
426 ;WriteRegStr HKLM ${Moz} "Version" "${VERSION}"
427 ;WriteRegStr HKLM ${Moz} "XPTPath" "$INSTDIR\mozilla\vlcintf.xpt"
429 Push $R0
430 Push $R1
431 Push $R2
433 !define Index 'Line${__LINE__}'
434 StrCpy $R1 "0"
436 "${Index}-Loop:"
438 ; Check for Key
439 EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"
440 StrCmp $R0 "" "${Index}-End"
441 IntOp $R1 $R1 + 1
442 ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"
443 StrCmp $R2 "" "${Index}-Loop" ""
445 CopyFiles "$INSTDIR\mozilla\*" "$R2"
446 !ifdef LIBVLC_DLL
447 CopyFiles ${LIBVLC_DLL} "$R2"
448 !endif
449 Goto "${Index}-Loop"
451 "${Index}-End:"
452 !undef Index
454 SectionEnd
456 Section /o "ActiveX plugin" SEC04
457 SectionIn 1 3
458 SetOutPath "$INSTDIR"
459 !insertmacro OpenUninstallLog
460 !insertmacro InstallFile activex\axvlc.dll
461 !insertmacro CloseUninstallLog
462 RegDLL "$INSTDIR\axvlc.dll"
463 SectionEnd
465 Section /o "Context Menus" SEC05
466 SectionIn 3
467 !insertmacro MacroAllExtensions AddContextMenu
468 !insertmacro AddContextMenu "Directory"
469 SectionEnd
471 SectionGroup "File type associations" SEC06
472 SectionGroup "Audio Files"
473 !insertmacro MacroAudioExtensions RegisterExtensionSection
474 SectionGroupEnd
475 SectionGroup "Video Files"
476 !insertmacro MacroVideoExtensions RegisterExtensionSection
477 SectionGroupEnd
478 SectionGroup "Other"
479 !insertmacro MacroOtherExtensions RegisterExtensionSection
480 SectionGroupEnd
481 SectionGroupEnd
483 Section /o "Delete preferences and cache" SEC07
484 !insertmacro delprefs
485 SectionEnd
487 ; Installer section descriptions
488 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
489 !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \
490 "The media player itself"
491 !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} \
492 "Adds icons to your start menu for easy access"
493 !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} \
494 "Adds icon to your desktop for easy access"
495 !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \
496 "The VLC Mozilla and Mozilla Firefox plugin"
497 !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \
498 "The VLC ActiveX plugin"
499 !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} \
500 "Add context menu items ('Play With VLC' and 'Add To VLC's Playlist')"
501 !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \
502 "Sets VLC media player as the default application for the specified file type"
503 !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \
504 "Deletes VLC media player preferences and cache files leftover from previous installations"
505 !insertmacro MUI_FUNCTION_DESCRIPTION_END
507 Function .onInit
508 ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
509 "UninstallString"
510 StrCmp $R0 "" done
512 MessageBox MB_YESNO|MB_ICONEXCLAMATION \
513 "VLC media player has already been installed. $\nDo you want to remove \
514 the previous version before installing $(^Name) ?" \
515 IDNO done
517 ;Run the uninstaller
518 ;uninst:
519 ClearErrors
520 ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
521 done:
522 !insertmacro MUI_LANGDLL_DISPLAY
523 FunctionEnd
525 Section -Post
526 WriteUninstaller "$INSTDIR\uninstall.exe"
527 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR
528 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"
529 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"
531 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
532 "DisplayName" "$(^Name)"
533 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
534 "UninstallString" "$INSTDIR\uninstall.exe"
535 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
536 "DisplayIcon" "$INSTDIR\vlc.exe"
537 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
538 "DisplayVersion" "${PRODUCT_VERSION}"
539 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
540 "URLInfoAbout" "${PRODUCT_WEB_SITE}"
541 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
542 "Publisher" "${PRODUCT_PUBLISHER}"
543 SectionEnd
545 ;;;;;;;;;;;;;;;;;;;;;;;;
546 ; Uninstaller sections ;
547 ;;;;;;;;;;;;;;;;;;;;;;;;
549 ; TrimNewlines (copied from NSIS documentation)
550 ; input, top of stack (e.g. whatever$\r$\n)
551 ; output, top of stack (replaces, with e.g. whatever)
552 ; modifies no other variables.
554 Function un.TrimNewlines
555 Exch $R0
556 Push $R1
557 Push $R2
558 StrCpy $R1 0
560 loop:
561 IntOp $R1 $R1 - 1
562 StrCpy $R2 $R0 1 $R1
563 StrCmp $R2 "$\r" loop
564 StrCmp $R2 "$\n" loop
565 IntOp $R1 $R1 + 1
566 IntCmp $R1 0 no_trim_needed
567 StrCpy $R0 $R0 $R1
569 no_trim_needed:
570 Pop $R2
571 Pop $R1
572 Exch $R0
573 FunctionEnd
575 Function un.RemoveEmptyDirs
576 Pop $9
577 !define Index 'Line${__LINE__}'
578 FindFirst $0 $1 "$INSTDIR$9*"
579 StrCmp $0 "" "${Index}-End"
580 "${Index}-Loop:"
581 StrCmp $1 "" "${Index}-End"
582 StrCmp $1 "." "${Index}-Next"
583 StrCmp $1 ".." "${Index}-Next"
584 Push $0
585 Push $1
586 Push $9
587 Push "$9$1\"
588 Call un.RemoveEmptyDirs
589 Pop $9
590 Pop $1
591 Pop $0
592 "${Index}-Remove:"
593 RMDir "$INSTDIR$9$1"
594 "${Index}-Next:"
595 FindNext $0 $1
596 Goto "${Index}-Loop"
597 "${Index}-End:"
598 FindClose $0
599 !undef Index
600 FunctionEnd
602 Section "Uninstall" SEC91
603 SectionIn 1 2 3 RO
604 SetShellVarContext all
606 !insertmacro MacroAllExtensions DeleteContextMenu
607 !insertmacro MacroAllExtensions UnRegisterExtensionSection
608 !insertmacro DeleteContextMenu "Directory"
610 UnRegDLL "$INSTDIR\axvlc.dll"
611 Delete /REBOOTOK "$INSTDIR\axvlc.dll"
613 ;remove mozilla plugin
614 Push $R0
615 Push $R1
616 Push $R2
618 !define Index 'Line${__LINE__}'
619 StrCpy $R1 "0"
621 "${Index}-Loop:"
623 ; Check for Key
624 EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"
625 StrCmp $R0 "" "${Index}-End"
626 IntOp $R1 $R1 + 1
627 ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"
628 StrCmp $R2 "" "${Index}-Loop" ""
630 Delete "$R2\npvlc.dll"
631 Goto "${Index}-Loop"
633 "${Index}-End:"
634 !undef Index
636 RMDir "$SMPROGRAMS\VideoLAN"
637 RMDir /r $SMPROGRAMS\VideoLAN
639 FileOpen $UninstallLog "$INSTDIR\uninstall.log" r
640 UninstallLoop:
641 ClearErrors
642 FileRead $UninstallLog $R0
643 IfErrors UninstallEnd
644 Push $R0
645 Call un.TrimNewLines
646 Pop $R0
647 Delete "$INSTDIR\$R0"
648 Goto UninstallLoop
649 UninstallEnd:
650 FileClose $UninstallLog
651 Delete "$INSTDIR\uninstall.log"
652 Delete "$INSTDIR\uninstall.exe"
653 Push "\"
654 Call un.RemoveEmptyDirs
655 RMDir "$INSTDIR"
657 DeleteRegKey HKLM Software\VideoLAN
659 DeleteRegKey HKCR Applications\vlc.exe
660 DeleteRegKey HKCR AudioCD\shell\PlayWithVLC
661 DeleteRegKey HKCR DVD\shell\PlayWithVLC
662 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival"
663 DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival
664 DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"
665 DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival
666 DeleteRegKey HKCR "VLC.MediaFile"
668 DeleteRegKey HKLM \
669 "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
671 DeleteRegKey HKLM \
672 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
674 Delete "$DESKTOP\VLC media player.lnk"
676 DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
677 DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
678 SetAutoClose true
679 SectionEnd
681 Section /o "un.Delete preferences and cache" SEC92
682 SectionIn 1 3
683 !insertmacro delprefs
684 SectionEnd
686 ; Uninstaller section descriptions
687 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
688 !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} \
689 "Uninstall VLC media player and all its components"
690 !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} \
691 "Deletes VLC media player preferences and cache files"
692 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
694 ;Function un.onUninstSuccess
695 ; HideWindow
696 ; MessageBox MB_ICONINFORMATION|MB_OK \
697 ; "$(^Name) was successfully removed from your computer."
698 ;FunctionEnd
700 Function un.onInit
701 !insertmacro MUI_LANGDLL_DISPLAY
702 FunctionEnd