]> git.sesse.net Git - vlc/blob - extras/package/win32/vlc.win32.nsi.in
Merge branch 'master' into lpcm_encoder
[vlc] / extras / package / win32 / vlc.win32.nsi.in
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; NSIS installer script for vlc ;
3 ; (http://nsis.sourceforge.net) ;
4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5
6 !include "languages\declaration.nsh"
7
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"
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}"
18
19 !define MUI_LANGDLL_REGISTRY_ROOT "HKLM"
20 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}"
21 !define MUI_LANGDLL_REGISTRY_VALUENAME "Language"
22
23 @BUILD_ACTIVEX_TRUE@ !define INSTALL_ACTIVEX
24 @BUILD_MOZILLA_TRUE@ !define INSTALL_MOZILLA
25
26 @FILE_LIBVLCCORE_DLL@
27 @FILE_LIBVLC_DLL@
28
29 ;;;;;;;;;;;;;;;;;;;;;;;;;
30 ; General configuration ;
31 ;;;;;;;;;;;;;;;;;;;;;;;;;
32
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
38 SetCompressor lzma
39 !else
40 SetCompressor /SOLID lzma
41 !endif
42
43 SetOverwrite ifnewer
44 CRCCheck on
45 BrandingText "${PRODUCT_GROUP} ${PRODUCT_NAME}"
46
47 InstType $Name_InstTypeRecommended
48 InstType $Name_InstTypeMinimum
49 InstType $Name_InstTypeFull
50
51 RequestExecutionLevel user
52 !addincludedir NSIS
53 !addplugindir NSIS
54 !include UAC.nsh
55
56 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
57 ; NSIS Modern User Interface configuration ;
58 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
59
60 ; MUI 1.67 compatible ------
61   !include "MUI.nsh"
62
63 ; MUI Settings
64   !define MUI_ABORTWARNING
65   !define MUI_ICON "vlc.ico"
66   !define MUI_UNICON "vlc.ico"
67   !define MUI_COMPONENTSPAGE_SMALLDESC
68
69 ; Installer pages
70   ; Welcome page
71     !define MUI_WELCOMEPAGE_TITLE_3LINES
72     !insertmacro MUI_PAGE_WELCOME
73   ; License page
74     !define MUI_LICENSEPAGE_BUTTON $(^NextBtn)
75     !insertmacro MUI_PAGE_LICENSE "COPYING.txt"
76   ; Components page
77     !insertmacro MUI_PAGE_COMPONENTS
78   ; Directory page
79     !insertmacro MUI_PAGE_DIRECTORY
80   ; Instfiles page
81     !insertmacro MUI_PAGE_INSTFILES
82   ; Finish page
83
84     Function ExecAppFile
85       Exec '$INSTDIR\vlc.exe'
86     FunctionEnd
87
88     Function AppRunAs
89       !insertmacro UAC.CallFunctionAsUser ExecAppFile
90     FunctionEnd
91
92     !define MUI_FINISHPAGE_RUN
93     !define MUI_FINISHPAGE_RUN_FUNCTION AppRunAs
94     !define MUI_FINISHPAGE_LINK $Link_VisitWebsite
95     !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/"
96     !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"
97     !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
98     !define MUI_FINISHPAGE_NOREBOOTSUPPORT
99     !insertmacro MUI_PAGE_FINISH
100
101 ; Uninstaller pages
102     !insertmacro MUI_UNPAGE_CONFIRM
103     !insertmacro MUI_UNPAGE_COMPONENTS
104     !insertmacro MUI_UNPAGE_INSTFILES
105     !insertmacro MUI_UNPAGE_FINISH
106
107 ; Language files
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"
134   !insertmacro MUI_LANGUAGE "Estonian"
135   !insertmacro MUI_LANGUAGE "Lithuanian"
136
137 ; Reserve files for solid compression
138   !insertmacro MUI_RESERVEFILE_LANGDLL
139   !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
140
141 ; MUI end ------
142
143 ;;;;;;;;;;;;;;;;;;;;;;;
144 ; Macro and Functions ;
145 ;;;;;;;;;;;;;;;;;;;;;;;
146
147 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
148 ; 1. File type associations ;
149 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
150
151 ;; Function that registers one extension for VLC
152 Function RegisterExtension
153   ; back up old value for extension $R0 (eg. ".opt")
154   ReadRegStr $1 HKCR "$R0" ""
155   StrCmp $1 "" NoBackup
156     StrCmp $1 "VLC$R0" "NoBackup"
157     WriteRegStr HKCR "$R0" "VLC.backup" $1
158 NoBackup:
159   WriteRegStr HKCR "$R0" "" "VLC$R0"
160   ReadRegStr $0 HKCR "VLC$R0" ""
161   WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"
162   WriteRegStr HKCR "VLC$R0\shell" "" "Open"
163   WriteRegStr HKCR "VLC$R0\shell\Open" "" $ShellAssociation_Play
164   WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
165   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
166
167 ;;; Vista Only part
168   ; Vista and above detection
169   ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
170   StrCpy $R2 $R1 1
171   StrCmp $R2 '6' ForVista ToEnd
172 ForVista:
173   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
174
175 ToEnd:
176 FunctionEnd
177
178 ;; Function that registers one skin extension for VLC
179 Function RegisterSkinExtension
180   ; back up old value for extension $R0 (eg. ".opt")
181   ReadRegStr $1 HKCR "$R0" ""
182   StrCmp $1 "" NoBackup
183     StrCmp $1 "VLC$R0" "NoBackup"
184     WriteRegStr HKCR "$R0" "VLC.backup" $1
185 NoBackup:
186   WriteRegStr HKCR "$R0" "" "VLC$R0"
187   ReadRegStr $0 HKCR "VLC$R0" ""
188   WriteRegStr HKCR "VLC$R0" "" "VLC skin file ($R0)"
189   WriteRegStr HKCR "VLC$R0\shell" "" "Open"
190   WriteRegStr HKCR "VLC$R0\shell\Open" "" ""
191   WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" -Iskins --skins2-last "%1"'
192   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
193
194 ;;; Vista Only part
195   ; Vista and above detection
196   ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
197   StrCpy $R2 $R1 1
198   StrCmp $R2 '6' ForVista ToEnd
199 ForVista:
200   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
201
202 ToEnd:
203 FunctionEnd
204
205 ;; Function that removes one extension that VLC owns.
206 Function un.RegisterExtension
207   ;start of restore script
208   ReadRegStr $1 HKCR "$R0" ""
209   StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it
210     ; Read the old value from Backup
211     ReadRegStr $1 HKCR "$R0" "VLC.backup"
212     StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
213       DeleteRegKey HKCR "$R0"
214     Goto NoOwn
215 Restore:
216       WriteRegStr HKCR "$R0" "" $1
217       DeleteRegValue HKCR "$R0" "VLC.backup"
218 NoOwn:
219     DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings
220     DeleteRegKey HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations\VLC$R0" ; for vista
221 FunctionEnd
222
223 !macro RegisterExtensionSection EXT
224   Section ${EXT}
225     SectionIn 1 3
226     Push $R0
227     StrCpy $R0 ${EXT}
228     Call RegisterExtension
229     Pop $R0
230   SectionEnd
231 !macroend
232
233 !macro RegisterSkinExtensionSection EXT
234   Section /o ${EXT}
235     SectionIn 1 3
236     Push $R0
237     StrCpy $R0 ${EXT}
238     Call RegisterSkinExtension
239     Pop $R0
240   SectionEnd
241 !macroend
242
243 !macro UnRegisterExtensionSection EXT
244   Push $R0
245   StrCpy $R0 ${EXT}
246   Call un.RegisterExtension
247   Pop $R0
248 !macroend
249
250 !macro WriteRegStrSupportedTypes EXT
251   WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""
252 !macroend
253
254 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
255 ; Extension lists  Macros                    ;
256 ; Those macros calls the previous functions  ;
257 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
258
259 !macro MacroAudioExtensions _action
260   !insertmacro ${_action} ".a52"
261   !insertmacro ${_action} ".aac"
262   !insertmacro ${_action} ".ac3"
263   !insertmacro ${_action} ".adt"
264   !insertmacro ${_action} ".adts"
265   !insertmacro ${_action} ".aif"
266   !insertmacro ${_action} ".aifc"
267   !insertmacro ${_action} ".aiff"
268   !insertmacro ${_action} ".au"
269   !insertmacro ${_action} ".amr"
270   !insertmacro ${_action} ".aob"
271   !insertmacro ${_action} ".ape"
272   !insertmacro ${_action} ".cda"
273   !insertmacro ${_action} ".dts"
274   !insertmacro ${_action} ".flac"
275   !insertmacro ${_action} ".it"
276   !insertmacro ${_action} ".m4a"
277   !insertmacro ${_action} ".m4p"
278   !insertmacro ${_action} ".mid"
279   !insertmacro ${_action} ".mka"
280   !insertmacro ${_action} ".mlp"
281   !insertmacro ${_action} ".mod"
282   !insertmacro ${_action} ".mp1"
283   !insertmacro ${_action} ".mp2"
284   !insertmacro ${_action} ".mp3"
285   !insertmacro ${_action} ".mpc"
286   !insertmacro ${_action} ".oma"
287   !insertmacro ${_action} ".oga"
288   !insertmacro ${_action} ".rmi"
289   !insertmacro ${_action} ".snd"
290   !insertmacro ${_action} ".s3m"
291   !insertmacro ${_action} ".spx"
292   !insertmacro ${_action} ".tta"
293   !insertmacro ${_action} ".voc"
294   !insertmacro ${_action} ".vqf"
295   !insertmacro ${_action} ".w64"
296   !insertmacro ${_action} ".wav"
297   !insertmacro ${_action} ".wma"
298   !insertmacro ${_action} ".wv"
299   !insertmacro ${_action} ".xa"
300   !insertmacro ${_action} ".xm"
301 !macroend
302
303 !macro MacroVideoExtensions _action
304   !insertmacro ${_action} ".3g2"
305   !insertmacro ${_action} ".3gp"
306   !insertmacro ${_action} ".3gp2"
307   !insertmacro ${_action} ".3gpp"
308   !insertmacro ${_action} ".amv"
309   !insertmacro ${_action} ".asf"
310   !insertmacro ${_action} ".avi"
311   !insertmacro ${_action} ".divx"
312   !insertmacro ${_action} ".dv"
313   !insertmacro ${_action} ".flv"
314   !insertmacro ${_action} ".gxf"
315   !insertmacro ${_action} ".m1v"
316   !insertmacro ${_action} ".m2t"
317   !insertmacro ${_action} ".m2v"
318   !insertmacro ${_action} ".m2ts"
319   !insertmacro ${_action} ".m4v"
320   !insertmacro ${_action} ".mkv"
321   !insertmacro ${_action} ".mov"
322   !insertmacro ${_action} ".mp2"
323   !insertmacro ${_action} ".mp2v"
324   !insertmacro ${_action} ".mp4"
325   !insertmacro ${_action} ".mp4v"
326   !insertmacro ${_action} ".mpa"
327   !insertmacro ${_action} ".mpe"
328   !insertmacro ${_action} ".mpeg"
329   !insertmacro ${_action} ".mpeg1"
330   !insertmacro ${_action} ".mpeg2"
331   !insertmacro ${_action} ".mpeg4"
332   !insertmacro ${_action} ".mpg"
333   !insertmacro ${_action} ".mpv2"
334   !insertmacro ${_action} ".mts"
335   !insertmacro ${_action} ".mxf"
336   !insertmacro ${_action} ".nsv"
337   !insertmacro ${_action} ".nuv"
338   !insertmacro ${_action} ".ogg"
339   !insertmacro ${_action} ".ogm"
340   !insertmacro ${_action} ".ogx"
341   !insertmacro ${_action} ".ogv"
342   !insertmacro ${_action} ".rec"
343   !insertmacro ${_action} ".rm"
344   !insertmacro ${_action} ".rmvb"
345   !insertmacro ${_action} ".tod"
346   !insertmacro ${_action} ".ts"
347   !insertmacro ${_action} ".tts"
348   !insertmacro ${_action} ".vob"
349   !insertmacro ${_action} ".vro"
350   !insertmacro ${_action} ".webm"
351   !insertmacro ${_action} ".wmv"
352 !macroend
353
354 !macro MacroOtherExtensions _action
355   !insertmacro ${_action} ".asx"
356   !insertmacro ${_action} ".b4s"
357   !insertmacro ${_action} ".bin"
358   !insertmacro ${_action} ".cue"
359   !insertmacro ${_action} ".ifo"
360   !insertmacro ${_action} ".m3u"
361   !insertmacro ${_action} ".m3u8"
362   !insertmacro ${_action} ".pls"
363   !insertmacro ${_action} ".ram"
364   !insertmacro ${_action} ".sdp"
365   !insertmacro ${_action} ".vlc"
366   !insertmacro ${_action} ".xspf"
367 !macroend
368
369 !macro MacroSkinExtensions _action
370   !insertmacro ${_action} ".vlt"
371   !insertmacro ${_action} ".wsz"
372 !macroend
373
374 ; One macro to rule them all
375 !macro MacroAllExtensions _action
376   !insertmacro MacroAudioExtensions ${_action}
377   !insertmacro MacroVideoExtensions ${_action}
378   !insertmacro MacroOtherExtensions ${_action}
379 !macroend
380
381 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
382 ; 2. Context menu entries ;
383 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
384
385 ; Generic function for adding the context menu for one ext.
386 !macro AddContextMenuExt EXT
387   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" $ContextMenuEntry_PlayWith
388   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --no-playlist-enqueue "%1"'
389
390   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" $ContextMenuEntry_AddToPlaylist
391   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --playlist-enqueue "%1"'
392 !macroend
393
394 !macro AddContextMenu EXT
395   Push $R0
396   ReadRegStr $R0 HKCR ${EXT} ""
397   !insertmacro AddContextMenuExt $R0
398   Pop $R0
399 !macroend
400
401 !macro DeleteContextMenuExt EXT
402   DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC
403   DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC
404 !macroend
405
406 !macro DeleteContextMenu EXT
407   Push $R0
408   ReadRegStr $R0 HKCR ${EXT} ""
409   !insertmacro DeleteContextMenuExt $R0
410   Pop $R0
411 !macroend
412
413 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
414 ; 3. Delete prefs           ;
415 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
416
417 !macro delprefs
418   StrCpy $0 0
419   !define Index 'Line${__LINE__}'
420   "${Index}-Loop:"
421   ; FIXME
422   ; this will loop through all the logged users and "virtual" windows users
423   ; (it looks like users are only present in HKEY_USERS when they are logged in)
424     ClearErrors
425     EnumRegKey $1 HKU "" $0
426     StrCmp $1 "" "${Index}-End"
427     IntOp $0 $0 + 1
428     ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData
429     StrCmp $2 "" "${Index}-Loop"
430     RMDir /r "$2\vlc"
431     Goto "${Index}-Loop"
432   "${Index}-End:"
433   !undef Index
434 !macroend
435
436 ;;;;;;;;;;;;;;;
437 ; 4. Logging  ;
438 ;;;;;;;;;;;;;;;
439 Var UninstallLog
440 !macro OpenUninstallLog
441   FileOpen $UninstallLog "$INSTDIR\uninstall.log" a
442   FileSeek $UninstallLog 0 END
443 !macroend
444
445 !macro CloseUninstallLog
446   FileClose $UninstallLog
447   SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN
448 !macroend
449
450 ;;;;;;;;;;;;;;;;;;;;
451 ; 5. Installations ;
452 ;;;;;;;;;;;;;;;;;;;;
453 !macro InstallFile FILEREGEX
454   File "${FILEREGEX}"
455   !define Index 'Line${__LINE__}'
456   FindFirst $0 $1 "$INSTDIR\${FILEREGEX}"
457   StrCmp $0 "" "${Index}-End"
458   "${Index}-Loop:"
459     StrCmp $1 "" "${Index}-End"
460     FileWrite $UninstallLog "$1$\r$\n"
461     FindNext $0 $1
462     Goto "${Index}-Loop"
463   "${Index}-End:"
464   !undef Index
465 !macroend
466
467 !macro InstallFolder FOLDER
468   File /r "${FOLDER}"
469   Push "${FOLDER}"
470   Call InstallFolderInternal
471 !macroend
472
473 Function InstallFolderInternal
474   Pop $9
475   !define Index 'Line${__LINE__}'
476   FindFirst $0 $1 "$INSTDIR\$9\*"
477   StrCmp $0 "" "${Index}-End"
478   "${Index}-Loop:"
479     StrCmp $1 "" "${Index}-End"
480     StrCmp $1 "." "${Index}-Next"
481     StrCmp $1 ".." "${Index}-Next"
482     IfFileExists "$9\$1\*" 0 "${Index}-Write"
483       Push $0
484       Push $9
485       Push "$9\$1"
486       Call InstallFolderInternal
487       Pop $9
488       Pop $0
489       Goto "${Index}-Next"
490     "${Index}-Write:"
491     FileWrite $UninstallLog "$9\$1$\r$\n"
492     "${Index}-Next:"
493     FindNext $0 $1
494     Goto "${Index}-Loop"
495   "${Index}-End:"
496   !undef Index
497 FunctionEnd
498 ;;; End of Macros
499
500
501 ;;;;;;;;;;;;;;;;;;;;;;
502 ; Installer sections ;
503 ; The CORE of the    ;
504 ; installer          ;
505 ;;;;;;;;;;;;;;;;;;;;;;
506
507 Section $Name_Section01 SEC01
508   SectionIn 1 2 3 RO
509   SetShellVarContext all
510   SetOutPath "$INSTDIR"
511
512   !insertmacro OpenUninstallLog
513
514   ; VLC.exe, libvlc.dll
515   !insertmacro InstallFile vlc.exe
516   !insertmacro InstallFile vlc.exe.manifest
517   !insertmacro InstallFile vlc-cache-gen.exe
518
519   ; All dlls
520   !insertmacro InstallFile *.dll
521
522   ; Text files
523   !insertmacro InstallFile *.txt
524
525   ; Subfolders
526   !insertmacro InstallFolder plugins
527   !insertmacro InstallFolder locale
528 @BUILD_OSDMENU_TRUE@ !insertmacro InstallFolder osdmenu
529 @BUILD_SKINS_TRUE@   !insertmacro InstallFolder skins
530 @BUILD_HTTPD_TRUE@   !insertmacro InstallFolder http
531 @BUILD_LUA_TRUE@     !insertmacro InstallFolder lua
532
533   ; Generate the cache and add it to uninstall.log
534   ExecWait "$INSTDIR\vlc-cache-gen.exe $INSTDIR\plugins"
535   FindFirst $0 $1 "$INSTDIR\plugins\*.dat"
536   FileWrite $UninstallLog "plugins\$1$\r$\n"
537   FindClose $0
538
539
540
541   ; URLs
542   WriteIniStr "$INSTDIR\${PRODUCT_GROUP} Website.url" "InternetShortcut" "URL" \
543     "${PRODUCT_WEB_SITE}"
544   FileWrite $UninstallLog "${PRODUCT_GROUP} Website.url$\r$\n"
545   WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" \
546     "${PRODUCT_WEB_SITE}/doc/"
547   FileWrite $UninstallLog "Documentation.url$\r$\n"
548   WriteIniStr "$INSTDIR\New_Skins.url" "InternetShortcut" "URL" \
549     "${PRODUCT_WEB_SITE}/vlc/skins.php"
550   FileWrite $UninstallLog "New_Skins.url$\r$\n"
551
552   !insertmacro CloseUninstallLog
553
554   ; Add VLC to "recommended programs" for the following extensions
555   WriteRegStr HKCR Applications\vlc.exe "" ""
556   WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player"
557   WriteRegStr HKCR Applications\vlc.exe\shell\Open "" $ContextMenuEntry_PlayWith
558   WriteRegStr HKCR Applications\vlc.exe\shell\Open\command "" \
559     '"$INSTDIR\vlc.exe" --started-from-file "%1"'
560   !insertmacro MacroAllExtensions WriteRegStrSupportedTypes
561
562 ; Windows default programs Registration
563   ; Vista and above detection
564   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
565   StrCpy $R1 $R0 1
566   StrCmp $R1 '6' lbl_vista lbl_done
567
568   lbl_vista:
569   WriteRegStr HKLM "Software\RegisteredApplications" "VLC" "Software\Clients\Media\VLC\Capabilities"
570   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationName" "VLC media player"
571   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities" "ApplicationDescription" "VLC - The video swiss knife"
572   WriteRegStr HKLM "Software\Clients\Media\VLC" "" "VLC media player"
573   WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "HideIconsCommand" "$\"$INSTDIR\spad-setup.exe$\" /HideIcons /S"
574   WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "ShowIconsCommand" "$\"$INSTDIR\spad-setup.exe$\" /ShowIcons /S"
575   WriteRegStr HKLM "Software\Clients\Media\VLC\InstallInfo" "ReinstallCommand" "$\"$INSTDIR\spad-setup.exe$\" /Reinstall /S"
576   WriteRegDWORD HKLM "Software\Clients\Media\VLC\InstallInfo" "IconsVisible" 0x001
577
578   lbl_done:
579 SectionEnd
580
581 Section $Name_Section02a SEC02a
582   SectionIn 1 2 3
583   CreateDirectory "$SMPROGRAMS\VideoLAN"
584   CreateShortCut "$SMPROGRAMS\VideoLAN\Reset VLC media player preferences and cache files.lnk" \
585     "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache vlc://quit"
586   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \
587     "$INSTDIR\vlc.exe" ""
588   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player skinned.lnk" \
589     "$INSTDIR\vlc.exe" "-Iskins"
590   CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \
591     "$INSTDIR\Documentation.url"
592   CreateShortCut "$SMPROGRAMS\VideoLAN\Release Notes.lnk" \
593     "$INSTDIR\NEWS.txt" ""
594   CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_GROUP} Website.lnk" \
595     "$INSTDIR\${PRODUCT_GROUP} Website.url"
596 SectionEnd
597
598 Section $Name_Section02b SEC02b
599   SectionIn 1 2 3
600   CreateShortCut "$DESKTOP\VLC media player.lnk" \
601     "$INSTDIR\vlc.exe" ""
602 SectionEnd
603
604 !ifdef INSTALL_MOZILLA
605 Section /o $Name_Section03 SEC03
606   SectionIn 3
607
608   SetOutPath "$INSTDIR"
609   !insertmacro OpenUninstallLog
610   !insertmacro InstallFile npvlc.dll
611   !insertmacro InstallFile npvlc.dll.manifest
612   !insertmacro CloseUninstallLog
613
614   !define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
615   WriteRegStr HKLM ${Moz} "Description" "VLC Multimedia Plugin"
616   WriteRegStr HKLM ${Moz} "Path" "$INSTDIR\npvlc.dll"
617   WriteRegStr HKLM ${Moz} "Product" "VLC media player"
618   WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN"
619   WriteRegStr HKLM ${Moz} "Version" "${VERSION}"
620 SectionEnd
621 !endif
622
623 !ifdef INSTALL_ACTIVEX
624 Section $Name_Section04 SEC04
625   SectionIn 3
626
627   SetOutPath "$INSTDIR"
628   !insertmacro OpenUninstallLog
629   !insertmacro InstallFile axvlc.dll
630   !insertmacro InstallFile axvlc.dll.manifest
631   !insertmacro CloseUninstallLog
632   RegDLL "$INSTDIR\axvlc.dll"
633 SectionEnd
634 !endif
635
636
637 Section $Name_Section05 SEC05
638   SectionIn 1 2 3
639   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" $ContextMenuEntry_PlayWith
640   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \
641     '"$INSTDIR\vlc.exe" --started-from-file cdda://%1'
642   WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" $ContextMenuEntry_PlayWith
643   WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \
644     '"$INSTDIR\vlc.exe" --started-from-file dvd://%1'
645
646   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" ""
647   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" $Action_OnArrivalDVD
648   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
649   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeProgID" "VLC.DVDMovie"
650   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeVerb" "Open"
651   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "VideoLAN VLC media player"
652
653   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" ""
654   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" $Action_OnArrivalAudioCD
655   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
656   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeProgID" "VLC.CDAudio"
657   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeVerb" "Open"
658   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Provider" "VideoLAN VLC media player"
659
660   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoCDMovieOnArrival" "VLCPlayVCDMovieOnArrival" ""
661   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "Action" $Action_OnArrivalVCDMovie
662   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
663   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "InvokeProgID" "VLC.VCDMovie"
664   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "InvokeVerb" "Open"
665   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival" "Provider" "VideoLAN VLC media player"
666
667   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlaySuperVideoCDMovieOnArrival" "VLCPlaySVCDMovieOnArrival" ""
668   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "Action" $Action_OnArrivalSVCDMovie
669   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
670   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "InvokeProgID" "VLC.SVCDMovie"
671   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "InvokeVerb" "Open"
672   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival" "Provider" "VideoLAN VLC media player"
673
674   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDAudioOnArrival" "VLCPlayDVDAudioOnArrival" ""
675   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "Action" $Action_OnArrivalDVDAudio
676   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
677   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "InvokeProgID" "VLC.OPENFolder"
678   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "InvokeVerb" "Open"
679   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival" "Provider" "VideoLAN VLC media player"
680
681   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "VLCPlayVideoFilesOnArrival" ""
682   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "Action" $Action_OnArrivalVideoFiles
683   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
684   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "InvokeProgID" "VLC.OPENFolder"
685   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "InvokeVerb" "Open"
686   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival" "Provider" "VideoLAN VLC media player"
687
688   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "VLCPlayMusicFilesOnArrival" ""
689   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "Action" $Action_OnArrivalMusicFiles
690   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'
691   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "InvokeProgID" "VLC.OPENFolder"
692   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "InvokeVerb" "Open"
693   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival" "Provider" "VideoLAN VLC media player"
694
695   WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie"
696   WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Open"
697   WriteRegStr HKCR "VLC.DVDMovie\shell\Open\command" "" \
698     '"$INSTDIR\vlc.exe" --started-from-file dvd://%1'
699   WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
700
701   WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio"
702   WriteRegStr HKCR "VLC.CDAudio\shell" "" "Open"
703   WriteRegStr HKCR "VLC.CDAudio\shell\Open\command" "" \
704     '"$INSTDIR\vlc.exe" --started-from-file cdda://%1'
705   WriteRegStr HKCR "VLC.CDAudio\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
706
707   WriteRegStr HKCR "VLC.VCDMovie" "" "VLC VCD Movie"
708   WriteRegStr HKCR "VLC.VCDMovie\shell" "" "Open"
709   WriteRegStr HKCR "VLC.VCDMovie\shell\Open\command" "" \
710      '"$INSTDIR\vlc.exe" --started-from-file vcd://%1'
711   WriteRegStr HKCR "VLC.VCDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
712
713   WriteRegStr HKCR "VLC.SVCDMovie" "" "VLC SVCD Movie"
714   WriteRegStr HKCR "VLC.SVCDMovie\shell" "" "Open"
715   WriteRegStr HKCR "VLC.SVCDMovie\shell\Open\command" "" \
716      '"$INSTDIR\vlc.exe" --started-from-file vcd://%1'
717   WriteRegStr HKCR "VLC.SVCDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
718
719   WriteRegStr HKCR "VLC.OPENFolder" "" "VLC Play content"
720   WriteRegStr HKCR "VLC.OPENFolder\shell" "" "Open"
721   WriteRegStr HKCR "VLC.OPENFolder\shell\Open\command" "" \
722      '"$INSTDIR\vlc.exe" %1'
723   WriteRegStr HKCR "VLC.OPENFolder\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
724
725 SectionEnd
726
727
728 SectionGroup /e !$Name_Section06 SEC06
729   SectionGroup $Name_SectionGroupAudio
730     !insertmacro MacroAudioExtensions RegisterExtensionSection
731   SectionGroupEnd
732   SectionGroup $Name_SectionGroupVideo
733     !insertmacro MacroVideoExtensions RegisterExtensionSection
734   SectionGroupEnd
735   SectionGroup $Name_SectionGroupOther
736     !insertmacro MacroOtherExtensions RegisterExtensionSection
737     !insertmacro MacroSkinExtensions RegisterSkinExtensionSection
738   SectionGroupEnd
739 SectionGroupEnd
740
741 Section $Name_Section07 SEC07
742   SectionIn 1 3
743   !insertmacro MacroAllExtensions AddContextMenu
744   !insertmacro AddContextMenuExt "Directory"
745 SectionEnd
746
747 Section $Name_Section08 SEC08
748   !insertmacro delprefs
749 SectionEnd
750
751 ; Installer section descriptions
752 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
753   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $Desc_Section01
754   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} $Desc_Section02a
755   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} $Desc_Section02b
756 @BUILD_MOZILLA_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $Desc_Section03
757 @BUILD_ACTIVEX_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $Desc_Section04
758   !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $Desc_Section05
759   !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $Desc_Section06
760   !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $Desc_Section07
761   !insertmacro MUI_DESCRIPTION_TEXT ${SEC08} $Desc_Section08
762 !insertmacro MUI_FUNCTION_DESCRIPTION_END
763
764 ;;; Start function
765 Function .onInit
766
767 UAC_Elevate:
768     UAC::RunElevated
769     StrCmp 1223 $0 UAC_ElevationAborted
770     StrCmp 0 $0 0 UAC_Err
771     StrCmp 1 $1 0 UAC_Success
772     Quit
773
774 UAC_Err:
775     MessageBox mb_iconstop "Unable to elevate, error $0"
776     Abort
777
778 UAC_ElevationAborted:
779     MessageBox mb_iconstop "This installer requires admin access, aborting!"
780     Abort
781
782 UAC_Success:
783     StrCmp 1 $3 +4
784     StrCmp 3 $1 0 UAC_ElevationAborted
785     MessageBox mb_iconstop "This installer requires admin access, try again"
786     goto UAC_Elevate
787   !insertmacro MUI_LANGDLL_DISPLAY
788
789   !include "languages\english.nsh"
790   StrCmp $LANGUAGE ${LANG_FRENCH} French 0
791   StrCmp $LANGUAGE ${LANG_GERMAN} German 0
792   StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
793   StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
794   StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
795   StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
796   StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
797   StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
798   StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
799   StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
800   StrCmp $LANGUAGE ${LANG_DANISH} Danish 0
801   StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
802   StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
803   StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
804 ;  StrCmp $LANGUAGE ${LANG_BENGALI} Bengali 0
805 ;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
806 ;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
807   StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
808   StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0
809   StrCmp $LANGUAGE ${LANG_LITHUANIAN} Lithuanian 0
810   StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
811   French:
812   !include "languages\french.nsh"
813   Goto EndLanguageCmp
814   German:
815   !include "languages\german.nsh"
816   Goto EndLanguageCmp
817   Italian:
818   !include "languages\italian.nsh"
819   Goto EndLanguageCmp
820   Hungarian:
821   !include "languages\hungarian.nsh"
822   Goto EndLanguageCmp
823   Romanian:
824   !include "languages\romanian.nsh"
825   Goto EndLanguageCmp
826   Catalan:
827   !include "languages\catalan.nsh"
828   Goto EndLanguageCmp
829   Bulgarian:
830   !include "languages\bulgarian.nsh"
831   Goto EndLanguageCmp
832   Slovak:
833   !include "languages\slovak.nsh"
834   Goto EndLanguageCmp
835   Polish:
836   !include "languages\polish.nsh"
837   Goto EndLanguageCmp
838   Dutch:
839   !include "languages\dutch.nsh"
840   Goto EndLanguageCmp
841   Danish:
842   !include "languages\danish.nsh"
843   Goto EndLanguageCmp
844   Schinese:
845   !include "languages\schinese.nsh"
846   Goto EndLanguageCmp
847   Finnish:
848   !include "languages\finnish.nsh"
849   Goto EndLanguageCmp
850   Japanese:
851   !include "languages\japanese.nsh"
852   Goto EndLanguageCmp
853   Bengali:
854   !include "languages\bengali.nsh"
855   Goto EndLanguageCmp
856   Punjabi:
857   !include "languages\punjabi.nsh"
858   Goto EndLanguageCmp
859   Slovenian:
860   !include "languages\slovenian.nsh"
861   Goto EndLanguageCmp
862   Spanish:
863   !include "languages\spanish.nsh"
864   Goto EndLanguageCmp
865   Estonian:
866   !include "languages\estonian.nsh"
867   Goto EndLanguageCmp
868   Lithuanian:
869   !include "languages\lithuanian.nsh"
870   Goto EndLanguageCmp
871   Brazilian:
872   !include "languages\brazilian_portuguese.nsh"
873   EndLanguageCmp:
874
875   ReadRegStr $R0  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
876   "UninstallString"
877   StrCmp $R0 "" done
878
879   MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled IDNO done
880
881   ;Run the uninstaller
882   ;uninst:
883     ClearErrors
884     ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
885   done:
886
887 FunctionEnd
888
889 Function .OnInstFailed
890     UAC::Unload
891 FunctionEnd
892
893 Function .OnInstSuccess
894     UAC::Unload
895 FunctionEnd
896
897 ;; End function
898 Section -Post
899   WriteUninstaller "$INSTDIR\uninstall.exe"
900   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR
901   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"
902   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"
903
904   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
905     "DisplayName" "$(^Name)"
906   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
907     "UninstallString" "$INSTDIR\uninstall.exe"
908   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
909     "InstallLocation" "$INSTDIR"
910   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
911     "DisplayIcon" "$INSTDIR\vlc.exe"
912   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
913     "DisplayVersion" "${PRODUCT_VERSION}"
914   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
915     "URLInfoAbout" "${PRODUCT_WEB_SITE}"
916   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
917     "Publisher" "${PRODUCT_PUBLISHER}"
918   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
919     "VersionMajor"  "@VERSION_MAJOR@"
920   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
921     "VersionMinor" "@VERSION_MINOR@"
922 SectionEnd
923
924 ;;;;;;;;;;;;;;;;;;;;;;;;
925 ; Uninstaller sections ;
926 ;;;;;;;;;;;;;;;;;;;;;;;;
927
928 ; TrimNewlines (copied from NSIS documentation)
929 ; input, top of stack  (e.g. whatever$\r$\n)
930 ; output, top of stack (replaces, with e.g. whatever)
931 ; modifies no other variables.
932
933 Function un.TrimNewlines
934  Exch $R0
935  Push $R1
936  Push $R2
937  StrCpy $R1 0
938
939  loop:
940    IntOp $R1 $R1 - 1
941    StrCpy $R2 $R0 1 $R1
942    StrCmp $R2 "$\r" loop
943    StrCmp $R2 "$\n" loop
944    IntOp $R1 $R1 + 1
945    IntCmp $R1 0 no_trim_needed
946    StrCpy $R0 $R0 $R1
947
948  no_trim_needed:
949    Pop $R2
950    Pop $R1
951    Exch $R0
952 FunctionEnd
953
954 Function un.RemoveEmptyDirs
955   Pop $9
956   !define Index 'Line${__LINE__}'
957   FindFirst $0 $1 "$INSTDIR$9*"
958   StrCmp $0 "" "${Index}-End"
959   "${Index}-Loop:"
960     StrCmp $1 "" "${Index}-End"
961     StrCmp $1 "." "${Index}-Next"
962     StrCmp $1 ".." "${Index}-Next"
963       Push $0
964       Push $1
965       Push $9
966       Push "$9$1\"
967       Call un.RemoveEmptyDirs
968       Pop $9
969       Pop $1
970       Pop $0
971     "${Index}-Remove:"
972     RMDir "$INSTDIR$9$1"
973     "${Index}-Next:"
974     FindNext $0 $1
975     Goto "${Index}-Loop"
976   "${Index}-End:"
977   FindClose $0
978   !undef Index
979 FunctionEnd
980
981 Section "un.$Name_Section91" SEC91
982   SectionIn 1 2 3 RO
983   SetShellVarContext all
984
985   !insertmacro MacroAllExtensions DeleteContextMenu
986   !insertmacro MacroAllExtensions UnRegisterExtensionSection
987   !insertmacro MacroSkinExtensions UnRegisterExtensionSection
988   !insertmacro DeleteContextMenuExt "Directory"
989
990   ;remove activex plugin
991   UnRegDLL "$INSTDIR\axvlc.dll"
992   Delete /REBOOTOK "$INSTDIR\axvlc.dll"
993   Delete /REBOOTOK "$INSTDIR\axvlc.dll.manifest"
994
995   ;remove mozilla plugin
996   Push $R0
997   Push $R1
998   Push $R2
999
1000   !define Index 'Line${__LINE__}'
1001   StrCpy $R1 "0"
1002
1003   "${Index}-Loop:"
1004
1005     ; Check for Key
1006     EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"
1007     StrCmp $R0 "" "${Index}-End"
1008     IntOp $R1 $R1 + 1
1009     ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"
1010     StrCmp $R2 "" "${Index}-Loop" ""
1011
1012     ; old files (0.8.5 and before) that may be lying around
1013     Delete /REBOOTOK "$R2\npvlc.dll"
1014     Delete /REBOOTOK "$R2\libvlc.dll"
1015     Delete /REBOOTOK "$R2\vlcintf.xpt"
1016     Goto "${Index}-Loop"
1017
1018   "${Index}-End:"
1019   !undef Index
1020   Delete /REBOOTOK "$INSTDIR\npvlc.dll"
1021   Delete /REBOOTOK "$INSTDIR\npvlc.dll.manifest"
1022
1023   RMDir "$SMPROGRAMS\VideoLAN"
1024   RMDir /r $SMPROGRAMS\VideoLAN
1025
1026   FileOpen $UninstallLog "$INSTDIR\uninstall.log" r
1027   UninstallLoop:
1028     ClearErrors
1029     FileRead $UninstallLog $R0
1030     IfErrors UninstallEnd
1031     Push $R0
1032     Call un.TrimNewLines
1033     Pop $R0
1034     Delete "$INSTDIR\$R0"
1035     Goto UninstallLoop
1036   UninstallEnd:
1037   FileClose $UninstallLog
1038   Delete "$INSTDIR\uninstall.log"
1039   Delete "$INSTDIR\uninstall.exe"
1040   Push "\"
1041   Call un.RemoveEmptyDirs
1042   RMDir "$INSTDIR"
1043
1044   DeleteRegKey HKLM Software\VideoLAN
1045
1046   DeleteRegKey HKCR Applications\vlc.exe
1047   DeleteRegKey HKCR AudioCD\shell\PlayWithVLC
1048   DeleteRegKey HKCR DVD\shell\PlayWithVLC
1049   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival"
1050   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival
1051   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"
1052   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival
1053   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoCDMovieOnArrival" "VLCPlayVCDMovieOnArrival"
1054   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival
1055   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlaySuperVideoCDMovieOnArrival" "VLCPlaySVCDMovieOnArrival"
1056   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival
1057   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDAudioOnArrival" "VLCPlayDVDAudioOnArrival"
1058   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival
1059   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "VLCPlayVideoFilesOnArrival"
1060   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival
1061   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "VLCPlayMusicFilesOnArrival"
1062   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival
1063
1064   DeleteRegKey HKLM Software\Clients\Media\VLC
1065   DeleteRegValue HKLM "Software\RegisteredApplications" "VLC"
1066   DeleteRegKey HKCR "VLC.MediaFile"
1067   DeleteRegKey HKCR "VLC.DVDMovie"
1068   DeleteRegKey HKCR "VLC.CDAudio"
1069   DeleteRegKey HKCR "VLC.VCDMovie"
1070   DeleteRegKey HKCR "VLC.SVCDMovie"
1071   DeleteRegKey HKCR "VLC.OPENFolder"
1072
1073
1074   DeleteRegKey HKLM \
1075     "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
1076
1077   DeleteRegKey HKLM \
1078     "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
1079
1080   Delete "$DESKTOP\VLC media player.lnk"
1081
1082   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
1083   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
1084   SetAutoClose true
1085 SectionEnd
1086
1087 Section /o "un.$Name_Section92" SEC92
1088   !insertmacro delprefs
1089 SectionEnd
1090
1091 ; Uninstaller section descriptions
1092 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
1093   !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} $Desc_Section91
1094   !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} $Desc_Section92
1095 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
1096
1097 Function un.OnUnInstFailed
1098     UAC::Unload
1099 FunctionEnd
1100
1101 Function un.OnUnInstSuccess
1102     UAC::Unload
1103     Delete "$INSTDIR\UAC.dll"
1104 FunctionEnd
1105
1106 Function un.onInit
1107
1108 UAC_Elevate:
1109     UAC::RunElevated
1110     StrCmp 1223 $0 UAC_ElevationAborted
1111     StrCmp 0 $0 0 UAC_Err
1112     StrCmp 1 $1 0 UAC_Success
1113     Quit
1114
1115 UAC_Err:
1116     MessageBox mb_iconstop "Unable to elevate, error $0"
1117     Abort
1118
1119 UAC_ElevationAborted:
1120     MessageBox mb_iconstop "This installer requires admin access, aborting!"
1121     Abort
1122
1123 UAC_Success:
1124     StrCmp 1 $3 +4
1125     StrCmp 3 $1 0 UAC_ElevationAborted
1126     MessageBox mb_iconstop "This installer requires admin access, try again"
1127     goto UAC_Elevate
1128
1129   !insertmacro MUI_UNGETLANGUAGE
1130
1131   !include "languages\english.nsh"
1132   StrCmp $LANGUAGE ${LANG_FRENCH} French 0
1133   StrCmp $LANGUAGE ${LANG_GERMAN} German 0
1134   StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
1135   StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
1136   StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
1137   StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
1138   StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
1139   StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
1140   StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
1141   StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
1142   StrCmp $LANGUAGE ${LANG_DANISH} Danish 0
1143   StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
1144   StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
1145   StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
1146 ;  StrCmp $LANGUAGE ${LANG_BENGALI} Bengali 0
1147 ;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
1148 ;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
1149   StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
1150   StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0
1151   StrCmp $LANGUAGE ${LANG_LITHUANIAN} Lithuanian 0
1152   StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
1153   French:
1154   !include "languages\french.nsh"
1155   Goto EndLanguageCmp
1156   German:
1157   !include "languages\german.nsh"
1158   Goto EndLanguageCmp
1159   Italian:
1160   !include "languages\italian.nsh"
1161   Goto EndLanguageCmp
1162   Hungarian:
1163   !include "languages\hungarian.nsh"
1164   Goto EndLanguageCmp
1165   Romanian:
1166   !include "languages\romanian.nsh"
1167   Goto EndLanguageCmp
1168   Catalan:
1169   !include "languages\catalan.nsh"
1170   Goto EndLanguageCmp
1171   Bulgarian:
1172   !include "languages\bulgarian.nsh"
1173   Goto EndLanguageCmp
1174   Slovak:
1175   !include "languages\slovak.nsh"
1176   Goto EndLanguageCmp
1177   Polish:
1178   !include "languages\polish.nsh"
1179   Goto EndLanguageCmp
1180   Dutch:
1181   !include "languages\dutch.nsh"
1182   Goto EndLanguageCmp
1183   Danish:
1184   !include "languages\danish.nsh"
1185   Goto EndLanguageCmp
1186   Schinese:
1187   !include "languages\schinese.nsh"
1188   Goto EndLanguageCmp
1189   Finnish:
1190   !include "languages\finnish.nsh"
1191   Goto EndLanguageCmp
1192   Japanese:
1193   !include "languages\japanese.nsh"
1194   Goto EndLanguageCmp
1195   Bengali:
1196   !include "languages\bengali.nsh"
1197   Goto EndLanguageCmp
1198   Punjabi:
1199   !include "languages\punjabi.nsh"
1200   Goto EndLanguageCmp
1201   Slovenian:
1202   !include "languages\slovenian.nsh"
1203   Goto EndLanguageCmp
1204   Spanish:
1205   !include "languages\spanish.nsh"
1206   Goto EndLanguageCmp
1207   Estonian:
1208   !include "languages\estonian.nsh"
1209   Goto EndLanguageCmp
1210   Lithuanian:
1211   !include "languages\lithuanian.nsh"
1212   Goto EndLanguageCmp
1213   Brazilian:
1214   !include "languages\brazilian_portuguese.nsh"
1215   EndLanguageCmp:
1216
1217 FunctionEnd