]> git.sesse.net Git - vlc/blob - extras/package/win32/vlc.win32.nsi.in
ed255c1e77e45814164d2bde5fb5a038d7db0c90
[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
136 ; Reserve files for solid compression
137   !insertmacro MUI_RESERVEFILE_LANGDLL
138   !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
139
140 ; MUI end ------
141
142 ;;;;;;;;;;;;;;;;;;;;;;;
143 ; Macro and Functions ;
144 ;;;;;;;;;;;;;;;;;;;;;;;
145
146 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
147 ; 1. File type associations ;
148 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
149
150 ;; Function that registers one extension for VLC
151 Function RegisterExtension
152   ; back up old value for extension $R0 (eg. ".opt")
153   ReadRegStr $1 HKCR "$R0" ""
154   StrCmp $1 "" NoBackup
155     StrCmp $1 "VLC$R0" "NoBackup"
156     WriteRegStr HKCR "$R0" "VLC.backup" $1
157 NoBackup:
158   WriteRegStr HKCR "$R0" "" "VLC$R0"
159   ReadRegStr $0 HKCR "VLC$R0" ""
160   WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"
161   WriteRegStr HKCR "VLC$R0\shell" "" "Open"
162   WriteRegStr HKCR "VLC$R0\shell\Open" "" $ShellAssociation_Play
163   WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
164   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
165
166 ;;; Vista Only part
167   ; Vista and above detection
168   ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
169   StrCpy $R2 $R1 1
170   StrCmp $R2 '6' ForVista ToEnd
171 ForVista:
172   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
173
174 ToEnd:
175 FunctionEnd
176
177 ;; Function that registers one skin extension for VLC
178 Function RegisterSkinExtension
179   ; back up old value for extension $R0 (eg. ".opt")
180   ReadRegStr $1 HKCR "$R0" ""
181   StrCmp $1 "" NoBackup
182     StrCmp $1 "VLC$R0" "NoBackup"
183     WriteRegStr HKCR "$R0" "VLC.backup" $1
184 NoBackup:
185   WriteRegStr HKCR "$R0" "" "VLC$R0"
186   ReadRegStr $0 HKCR "VLC$R0" ""
187   WriteRegStr HKCR "VLC$R0" "" "VLC skin file ($R0)"
188   WriteRegStr HKCR "VLC$R0\shell" "" "Open"
189   WriteRegStr HKCR "VLC$R0\shell\Open" "" ""
190   WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" -Iskins --skins2-last "%1"'
191   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
192
193 ;;; Vista Only part
194   ; Vista and above detection
195   ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
196   StrCpy $R2 $R1 1
197   StrCmp $R2 '6' ForVista ToEnd
198 ForVista:
199   WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
200
201 ToEnd:
202 FunctionEnd
203
204 ;; Function that removes one extension that VLC owns.
205 Function un.RegisterExtension
206   ;start of restore script
207   ReadRegStr $1 HKCR "$R0" ""
208   StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it
209     ; Read the old value from Backup
210     ReadRegStr $1 HKCR "$R0" "VLC.backup"
211     StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
212       DeleteRegKey HKCR "$R0"
213     Goto NoOwn
214 Restore:
215       WriteRegStr HKCR "$R0" "" $1
216       DeleteRegValue HKCR "$R0" "VLC.backup"
217 NoOwn:
218     DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings
219     DeleteRegKey HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations\VLC$R0" ; for vista
220 FunctionEnd
221
222 !macro RegisterExtensionSection EXT
223   Section ${EXT}
224     SectionIn 1 3
225     Push $R0
226     StrCpy $R0 ${EXT}
227     Call RegisterExtension
228     Pop $R0
229   SectionEnd
230 !macroend
231
232 !macro RegisterSkinExtensionSection EXT
233   Section /o ${EXT}
234     SectionIn 1 3
235     Push $R0
236     StrCpy $R0 ${EXT}
237     Call RegisterSkinExtension
238     Pop $R0
239   SectionEnd
240 !macroend
241
242 !macro UnRegisterExtensionSection EXT
243   Push $R0
244   StrCpy $R0 ${EXT}
245   Call un.RegisterExtension
246   Pop $R0
247 !macroend
248
249 !macro WriteRegStrSupportedTypes EXT
250   WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""
251 !macroend
252
253 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
254 ; Extension lists  Macros                    ;
255 ; Those macros calls the previous functions  ;
256 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
257
258 !macro MacroAudioExtensions _action
259   !insertmacro ${_action} ".a52"
260   !insertmacro ${_action} ".aac"
261   !insertmacro ${_action} ".ac3"
262   !insertmacro ${_action} ".adt"
263   !insertmacro ${_action} ".adts"
264   !insertmacro ${_action} ".aif"
265   !insertmacro ${_action} ".aifc"
266   !insertmacro ${_action} ".aiff"
267   !insertmacro ${_action} ".au"
268   !insertmacro ${_action} ".amr"
269   !insertmacro ${_action} ".aob"
270   !insertmacro ${_action} ".ape"
271   !insertmacro ${_action} ".cda"
272   !insertmacro ${_action} ".dts"
273   !insertmacro ${_action} ".flac"
274   !insertmacro ${_action} ".it"
275   !insertmacro ${_action} ".m4a"
276   !insertmacro ${_action} ".m4p"
277   !insertmacro ${_action} ".mid"
278   !insertmacro ${_action} ".mka"
279   !insertmacro ${_action} ".mlp"
280   !insertmacro ${_action} ".mod"
281   !insertmacro ${_action} ".mp1"
282   !insertmacro ${_action} ".mp2"
283   !insertmacro ${_action} ".mp3"
284   !insertmacro ${_action} ".mpc"
285   !insertmacro ${_action} ".oma"
286   !insertmacro ${_action} ".oga"
287   !insertmacro ${_action} ".rmi"
288   !insertmacro ${_action} ".snd"
289   !insertmacro ${_action} ".s3m"
290   !insertmacro ${_action} ".spx"
291   !insertmacro ${_action} ".tta"
292   !insertmacro ${_action} ".voc"
293   !insertmacro ${_action} ".vqf"
294   !insertmacro ${_action} ".w64"
295   !insertmacro ${_action} ".wav"
296   !insertmacro ${_action} ".wma"
297   !insertmacro ${_action} ".wv"
298   !insertmacro ${_action} ".xa"
299   !insertmacro ${_action} ".xm"
300 !macroend
301
302 !macro MacroVideoExtensions _action
303   !insertmacro ${_action} ".3g2"
304   !insertmacro ${_action} ".3gp"
305   !insertmacro ${_action} ".3gp2"
306   !insertmacro ${_action} ".3gpp"
307   !insertmacro ${_action} ".amv"
308   !insertmacro ${_action} ".asf"
309   !insertmacro ${_action} ".avi"
310   !insertmacro ${_action} ".divx"
311   !insertmacro ${_action} ".dv"
312   !insertmacro ${_action} ".flv"
313   !insertmacro ${_action} ".gxf"
314   !insertmacro ${_action} ".m1v"
315   !insertmacro ${_action} ".m2t"
316   !insertmacro ${_action} ".m2v"
317   !insertmacro ${_action} ".m2ts"
318   !insertmacro ${_action} ".m4v"
319   !insertmacro ${_action} ".mkv"
320   !insertmacro ${_action} ".mov"
321   !insertmacro ${_action} ".mp2"
322   !insertmacro ${_action} ".mp2v"
323   !insertmacro ${_action} ".mp4"
324   !insertmacro ${_action} ".mp4v"
325   !insertmacro ${_action} ".mpa"
326   !insertmacro ${_action} ".mpe"
327   !insertmacro ${_action} ".mpeg"
328   !insertmacro ${_action} ".mpeg1"
329   !insertmacro ${_action} ".mpeg2"
330   !insertmacro ${_action} ".mpeg4"
331   !insertmacro ${_action} ".mpg"
332   !insertmacro ${_action} ".mpv2"
333   !insertmacro ${_action} ".mts"
334   !insertmacro ${_action} ".mxf"
335   !insertmacro ${_action} ".nsv"
336   !insertmacro ${_action} ".nuv"
337   !insertmacro ${_action} ".ogg"
338   !insertmacro ${_action} ".ogm"
339   !insertmacro ${_action} ".ogx"
340   !insertmacro ${_action} ".ogv"
341   !insertmacro ${_action} ".ps"
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 mozilla\npvlc.dll
611   !insertmacro InstallFile mozilla\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 activex\axvlc.dll
630   !insertmacro InstallFile activex\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_SIMPCHINESE} SChinese 0
801   StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
802   StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
803 ;  StrCmp $LANGUAGE ${LANG_BENGALI} Bengali 0
804 ;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
805 ;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
806   StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
807   StrCmp $LANGUAGE ${LANG_SPANISH} Estonian 0
808   StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
809   French:
810   !include "languages\french.nsh"
811   Goto EndLanguageCmp
812   German:
813   !include "languages\german.nsh"
814   Goto EndLanguageCmp
815   Italian:
816   !include "languages\italian.nsh"
817   Goto EndLanguageCmp
818   Hungarian:
819   !include "languages\hungarian.nsh"
820   Goto EndLanguageCmp
821   Romanian:
822   !include "languages\romanian.nsh"
823   Goto EndLanguageCmp
824   Catalan:
825   !include "languages\catalan.nsh"
826   Goto EndLanguageCmp
827   Bulgarian:
828   !include "languages\bulgarian.nsh"
829   Goto EndLanguageCmp
830   Slovak:
831   !include "languages\slovak.nsh"
832   Goto EndLanguageCmp
833   Polish:
834   !include "languages\polish.nsh"
835   Goto EndLanguageCmp
836   Dutch:
837   !include "languages\dutch.nsh"
838   Goto EndLanguageCmp
839   Schinese:
840   !include "languages\schinese.nsh"
841   Goto EndLanguageCmp
842   Finnish:
843   !include "languages\finnish.nsh"
844   Goto EndLanguageCmp
845   Japanese:
846   !include "languages\japanese.nsh"
847   Goto EndLanguageCmp
848   Bengali:
849   !include "languages\bengali.nsh"
850   Goto EndLanguageCmp
851   Punjabi:
852   !include "languages\punjabi.nsh"
853   Goto EndLanguageCmp
854   Slovenian:
855   !include "languages\slovenian.nsh"
856   Goto EndLanguageCmp
857   Spanish:
858   !include "languages\spanish.nsh"
859   Goto EndLanguageCmp
860   Estonian:
861   !include "languages\estonian.nsh"
862   Goto EndLanguageCmp
863   Brazilian:
864   !include "languages\brazilian_portuguese.nsh"
865   EndLanguageCmp:
866
867   ReadRegStr $R0  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
868   "UninstallString"
869   StrCmp $R0 "" done
870
871   MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled IDNO done
872
873   ;Run the uninstaller
874   ;uninst:
875     ClearErrors
876     ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
877   done:
878
879 FunctionEnd
880
881 Function .OnInstFailed
882     UAC::Unload
883 FunctionEnd
884
885 Function .OnInstSuccess
886     UAC::Unload
887 FunctionEnd
888
889 ;; End function
890 Section -Post
891   WriteUninstaller "$INSTDIR\uninstall.exe"
892   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR
893   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"
894   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"
895
896   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
897     "DisplayName" "$(^Name)"
898   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
899     "UninstallString" "$INSTDIR\uninstall.exe"
900   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
901     "InstallLocation" "$INSTDIR"
902   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
903     "DisplayIcon" "$INSTDIR\vlc.exe"
904   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
905     "DisplayVersion" "${PRODUCT_VERSION}"
906   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
907     "URLInfoAbout" "${PRODUCT_WEB_SITE}"
908   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
909     "Publisher" "${PRODUCT_PUBLISHER}"
910   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
911     "VersionMajor"  "@VERSION_MAJOR@"
912   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
913     "VersionMinor" "@VERSION_MINOR@"
914 SectionEnd
915
916 ;;;;;;;;;;;;;;;;;;;;;;;;
917 ; Uninstaller sections ;
918 ;;;;;;;;;;;;;;;;;;;;;;;;
919
920 ; TrimNewlines (copied from NSIS documentation)
921 ; input, top of stack  (e.g. whatever$\r$\n)
922 ; output, top of stack (replaces, with e.g. whatever)
923 ; modifies no other variables.
924
925 Function un.TrimNewlines
926  Exch $R0
927  Push $R1
928  Push $R2
929  StrCpy $R1 0
930
931  loop:
932    IntOp $R1 $R1 - 1
933    StrCpy $R2 $R0 1 $R1
934    StrCmp $R2 "$\r" loop
935    StrCmp $R2 "$\n" loop
936    IntOp $R1 $R1 + 1
937    IntCmp $R1 0 no_trim_needed
938    StrCpy $R0 $R0 $R1
939
940  no_trim_needed:
941    Pop $R2
942    Pop $R1
943    Exch $R0
944 FunctionEnd
945
946 Function un.RemoveEmptyDirs
947   Pop $9
948   !define Index 'Line${__LINE__}'
949   FindFirst $0 $1 "$INSTDIR$9*"
950   StrCmp $0 "" "${Index}-End"
951   "${Index}-Loop:"
952     StrCmp $1 "" "${Index}-End"
953     StrCmp $1 "." "${Index}-Next"
954     StrCmp $1 ".." "${Index}-Next"
955       Push $0
956       Push $1
957       Push $9
958       Push "$9$1\"
959       Call un.RemoveEmptyDirs
960       Pop $9
961       Pop $1
962       Pop $0
963     "${Index}-Remove:"
964     RMDir "$INSTDIR$9$1"
965     "${Index}-Next:"
966     FindNext $0 $1
967     Goto "${Index}-Loop"
968   "${Index}-End:"
969   FindClose $0
970   !undef Index
971 FunctionEnd
972
973 Section "un.$Name_Section91" SEC91
974   SectionIn 1 2 3 RO
975   SetShellVarContext all
976
977   !insertmacro MacroAllExtensions DeleteContextMenu
978   !insertmacro MacroAllExtensions UnRegisterExtensionSection
979   !insertmacro MacroSkinExtensions UnRegisterExtensionSection
980   !insertmacro DeleteContextMenuExt "Directory"
981
982   ;remove activex plugin
983   UnRegDLL "$INSTDIR\axvlc.dll"
984   Delete /REBOOTOK "$INSTDIR\axvlc.dll"
985   Delete /REBOOTOK "$INSTDIR\axvlc.dll.manifest"
986
987   ;remove mozilla plugin
988   Push $R0
989   Push $R1
990   Push $R2
991
992   !define Index 'Line${__LINE__}'
993   StrCpy $R1 "0"
994
995   "${Index}-Loop:"
996
997     ; Check for Key
998     EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"
999     StrCmp $R0 "" "${Index}-End"
1000     IntOp $R1 $R1 + 1
1001     ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"
1002     StrCmp $R2 "" "${Index}-Loop" ""
1003
1004     ; old files (0.8.5 and before) that may be lying around
1005     Delete /REBOOTOK "$R2\npvlc.dll"
1006     Delete /REBOOTOK "$R2\libvlc.dll"
1007     Delete /REBOOTOK "$R2\vlcintf.xpt"
1008     Goto "${Index}-Loop"
1009
1010   "${Index}-End:"
1011   !undef Index
1012   Delete /REBOOTOK "$INSTDIR\npvlc.dll"
1013   Delete /REBOOTOK "$INSTDIR\npvlc.dll.manifest"
1014
1015   RMDir "$SMPROGRAMS\VideoLAN"
1016   RMDir /r $SMPROGRAMS\VideoLAN
1017
1018   FileOpen $UninstallLog "$INSTDIR\uninstall.log" r
1019   UninstallLoop:
1020     ClearErrors
1021     FileRead $UninstallLog $R0
1022     IfErrors UninstallEnd
1023     Push $R0
1024     Call un.TrimNewLines
1025     Pop $R0
1026     Delete "$INSTDIR\$R0"
1027     Goto UninstallLoop
1028   UninstallEnd:
1029   FileClose $UninstallLog
1030   Delete "$INSTDIR\uninstall.log"
1031   Delete "$INSTDIR\uninstall.exe"
1032   Push "\"
1033   Call un.RemoveEmptyDirs
1034   RMDir "$INSTDIR"
1035
1036   DeleteRegKey HKLM Software\VideoLAN
1037
1038   DeleteRegKey HKCR Applications\vlc.exe
1039   DeleteRegKey HKCR AudioCD\shell\PlayWithVLC
1040   DeleteRegKey HKCR DVD\shell\PlayWithVLC
1041   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival"
1042   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival
1043   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"
1044   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival
1045   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoCDMovieOnArrival" "VLCPlayVCDMovieOnArrival"
1046   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival
1047   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlaySuperVideoCDMovieOnArrival" "VLCPlaySVCDMovieOnArrival"
1048   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival
1049   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDAudioOnArrival" "VLCPlayDVDAudioOnArrival"
1050   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival
1051   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "VLCPlayVideoFilesOnArrival"
1052   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival
1053   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "VLCPlayMusicFilesOnArrival"
1054   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival
1055
1056   DeleteRegKey HKLM Software\Clients\Media\VLC
1057   DeleteRegValue HKLM "Software\RegisteredApplications" "VLC"
1058   DeleteRegKey HKCR "VLC.MediaFile"
1059   DeleteRegKey HKCR "VLC.DVDMovie"
1060   DeleteRegKey HKCR "VLC.CDAudio"
1061   DeleteRegKey HKCR "VLC.VCDMovie"
1062   DeleteRegKey HKCR "VLC.SVCDMovie"
1063   DeleteRegKey HKCR "VLC.OPENFolder"
1064
1065
1066   DeleteRegKey HKLM \
1067     "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
1068
1069   DeleteRegKey HKLM \
1070     "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
1071
1072   Delete "$DESKTOP\VLC media player.lnk"
1073
1074   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
1075   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
1076   SetAutoClose true
1077 SectionEnd
1078
1079 Section /o "un.$Name_Section92" SEC92
1080   !insertmacro delprefs
1081 SectionEnd
1082
1083 ; Uninstaller section descriptions
1084 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
1085   !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} $Desc_Section91
1086   !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} $Desc_Section92
1087 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
1088
1089 Function un.OnUnInstFailed
1090     UAC::Unload
1091 FunctionEnd
1092
1093 Function un.OnUnInstSuccess
1094     UAC::Unload
1095     Delete "$INSTDIR\UAC.dll"
1096 FunctionEnd
1097
1098 Function un.onInit
1099
1100 UAC_Elevate:
1101     UAC::RunElevated
1102     StrCmp 1223 $0 UAC_ElevationAborted
1103     StrCmp 0 $0 0 UAC_Err
1104     StrCmp 1 $1 0 UAC_Success
1105     Quit
1106
1107 UAC_Err:
1108     MessageBox mb_iconstop "Unable to elevate, error $0"
1109     Abort
1110
1111 UAC_ElevationAborted:
1112     MessageBox mb_iconstop "This installer requires admin access, aborting!"
1113     Abort
1114
1115 UAC_Success:
1116     StrCmp 1 $3 +4
1117     StrCmp 3 $1 0 UAC_ElevationAborted
1118     MessageBox mb_iconstop "This installer requires admin access, try again"
1119     goto UAC_Elevate
1120
1121   !insertmacro MUI_UNGETLANGUAGE
1122
1123   !include "languages\english.nsh"
1124   StrCmp $LANGUAGE ${LANG_FRENCH} French 0
1125   StrCmp $LANGUAGE ${LANG_GERMAN} German 0
1126   StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
1127   StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
1128   StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
1129   StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
1130   StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
1131   StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
1132   StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
1133   StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
1134   StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
1135   StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
1136   StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
1137 ;  StrCmp $LANGUAGE ${LANG_BENGALI} Bengali 0
1138 ;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
1139 ;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
1140   StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
1141   StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0
1142   StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
1143   French:
1144   !include "languages\french.nsh"
1145   Goto EndLanguageCmp
1146   German:
1147   !include "languages\german.nsh"
1148   Goto EndLanguageCmp
1149   Italian:
1150   !include "languages\italian.nsh"
1151   Goto EndLanguageCmp
1152   Hungarian:
1153   !include "languages\hungarian.nsh"
1154   Goto EndLanguageCmp
1155   Romanian:
1156   !include "languages\romanian.nsh"
1157   Goto EndLanguageCmp
1158   Catalan:
1159   !include "languages\catalan.nsh"
1160   Goto EndLanguageCmp
1161   Bulgarian:
1162   !include "languages\bulgarian.nsh"
1163   Goto EndLanguageCmp
1164   Slovak:
1165   !include "languages\slovak.nsh"
1166   Goto EndLanguageCmp
1167   Polish:
1168   !include "languages\polish.nsh"
1169   Goto EndLanguageCmp
1170   Dutch:
1171   !include "languages\dutch.nsh"
1172   Goto EndLanguageCmp
1173   Schinese:
1174   !include "languages\schinese.nsh"
1175   Goto EndLanguageCmp
1176   Finnish:
1177   !include "languages\finnish.nsh"
1178   Goto EndLanguageCmp
1179   Japanese:
1180   !include "languages\japanese.nsh"
1181   Goto EndLanguageCmp
1182   Bengali:
1183   !include "languages\bengali.nsh"
1184   Goto EndLanguageCmp
1185   Punjabi:
1186   !include "languages\punjabi.nsh"
1187   Goto EndLanguageCmp
1188   Slovenian:
1189   !include "languages\slovenian.nsh"
1190   Goto EndLanguageCmp
1191   Spanish:
1192   !include "languages\spanish.nsh"
1193   Goto EndLanguageCmp
1194   Estonian:
1195   !include "languages\estonian.nsh"
1196   Goto EndLanguageCmp
1197   Brazilian:
1198   !include "languages\brazilian_portuguese.nsh"
1199   EndLanguageCmp:
1200
1201 FunctionEnd