]> git.sesse.net Git - vlc/blob - extras/package/win32/vlc.win32.nsi.in
Don't build/package mozilla plugin for win64
[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 @HAVE_WIN64_FALSE@ !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 !ifdef INSTALL_MOZILLA
757   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $Desc_Section03
758 !endif
759 @BUILD_ACTIVEX_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $Desc_Section04
760   !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $Desc_Section05
761   !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $Desc_Section06
762   !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $Desc_Section07
763   !insertmacro MUI_DESCRIPTION_TEXT ${SEC08} $Desc_Section08
764 !insertmacro MUI_FUNCTION_DESCRIPTION_END
765
766 ;;; Start function
767 Function .onInit
768
769 UAC_Elevate:
770     UAC::RunElevated
771     StrCmp 1223 $0 UAC_ElevationAborted
772     StrCmp 0 $0 0 UAC_Err
773     StrCmp 1 $1 0 UAC_Success
774     Quit
775
776 UAC_Err:
777     MessageBox mb_iconstop "Unable to elevate, error $0"
778     Abort
779
780 UAC_ElevationAborted:
781     MessageBox mb_iconstop "This installer requires admin access, aborting!"
782     Abort
783
784 UAC_Success:
785     StrCmp 1 $3 +4
786     StrCmp 3 $1 0 UAC_ElevationAborted
787     MessageBox mb_iconstop "This installer requires admin access, try again"
788     goto UAC_Elevate
789   !insertmacro MUI_LANGDLL_DISPLAY
790
791   !include "languages\english.nsh"
792   StrCmp $LANGUAGE ${LANG_FRENCH} French 0
793   StrCmp $LANGUAGE ${LANG_GERMAN} German 0
794   StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
795   StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
796   StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
797   StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
798   StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
799   StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
800   StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
801   StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
802   StrCmp $LANGUAGE ${LANG_DANISH} Danish 0
803   StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
804   StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
805   StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
806 ;  StrCmp $LANGUAGE ${LANG_BENGALI} Bengali 0
807 ;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
808 ;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
809   StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
810   StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0
811   StrCmp $LANGUAGE ${LANG_LITHUANIAN} Lithuanian 0
812   StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
813   French:
814   !include "languages\french.nsh"
815   Goto EndLanguageCmp
816   German:
817   !include "languages\german.nsh"
818   Goto EndLanguageCmp
819   Italian:
820   !include "languages\italian.nsh"
821   Goto EndLanguageCmp
822   Hungarian:
823   !include "languages\hungarian.nsh"
824   Goto EndLanguageCmp
825   Romanian:
826   !include "languages\romanian.nsh"
827   Goto EndLanguageCmp
828   Catalan:
829   !include "languages\catalan.nsh"
830   Goto EndLanguageCmp
831   Bulgarian:
832   !include "languages\bulgarian.nsh"
833   Goto EndLanguageCmp
834   Slovak:
835   !include "languages\slovak.nsh"
836   Goto EndLanguageCmp
837   Polish:
838   !include "languages\polish.nsh"
839   Goto EndLanguageCmp
840   Dutch:
841   !include "languages\dutch.nsh"
842   Goto EndLanguageCmp
843   Danish:
844   !include "languages\danish.nsh"
845   Goto EndLanguageCmp
846   Schinese:
847   !include "languages\schinese.nsh"
848   Goto EndLanguageCmp
849   Finnish:
850   !include "languages\finnish.nsh"
851   Goto EndLanguageCmp
852   Japanese:
853   !include "languages\japanese.nsh"
854   Goto EndLanguageCmp
855   Bengali:
856   !include "languages\bengali.nsh"
857   Goto EndLanguageCmp
858   Punjabi:
859   !include "languages\punjabi.nsh"
860   Goto EndLanguageCmp
861   Slovenian:
862   !include "languages\slovenian.nsh"
863   Goto EndLanguageCmp
864   Spanish:
865   !include "languages\spanish.nsh"
866   Goto EndLanguageCmp
867   Estonian:
868   !include "languages\estonian.nsh"
869   Goto EndLanguageCmp
870   Lithuanian:
871   !include "languages\lithuanian.nsh"
872   Goto EndLanguageCmp
873   Brazilian:
874   !include "languages\brazilian_portuguese.nsh"
875   EndLanguageCmp:
876
877   ReadRegStr $R0  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
878   "UninstallString"
879   StrCmp $R0 "" done
880
881   MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled IDNO done
882
883   ;Run the uninstaller
884   ;uninst:
885     ClearErrors
886     ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
887   done:
888
889 FunctionEnd
890
891 Function .OnInstFailed
892     UAC::Unload
893 FunctionEnd
894
895 Function .OnInstSuccess
896     UAC::Unload
897 FunctionEnd
898
899 ;; End function
900 Section -Post
901   WriteUninstaller "$INSTDIR\uninstall.exe"
902   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR
903   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"
904   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"
905
906   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
907     "DisplayName" "$(^Name)"
908   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
909     "UninstallString" "$INSTDIR\uninstall.exe"
910   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
911     "InstallLocation" "$INSTDIR"
912   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
913     "DisplayIcon" "$INSTDIR\vlc.exe"
914   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
915     "DisplayVersion" "${PRODUCT_VERSION}"
916   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
917     "URLInfoAbout" "${PRODUCT_WEB_SITE}"
918   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
919     "Publisher" "${PRODUCT_PUBLISHER}"
920   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
921     "VersionMajor"  "@VERSION_MAJOR@"
922   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \
923     "VersionMinor" "@VERSION_MINOR@"
924 SectionEnd
925
926 ;;;;;;;;;;;;;;;;;;;;;;;;
927 ; Uninstaller sections ;
928 ;;;;;;;;;;;;;;;;;;;;;;;;
929
930 ; TrimNewlines (copied from NSIS documentation)
931 ; input, top of stack  (e.g. whatever$\r$\n)
932 ; output, top of stack (replaces, with e.g. whatever)
933 ; modifies no other variables.
934
935 Function un.TrimNewlines
936  Exch $R0
937  Push $R1
938  Push $R2
939  StrCpy $R1 0
940
941  loop:
942    IntOp $R1 $R1 - 1
943    StrCpy $R2 $R0 1 $R1
944    StrCmp $R2 "$\r" loop
945    StrCmp $R2 "$\n" loop
946    IntOp $R1 $R1 + 1
947    IntCmp $R1 0 no_trim_needed
948    StrCpy $R0 $R0 $R1
949
950  no_trim_needed:
951    Pop $R2
952    Pop $R1
953    Exch $R0
954 FunctionEnd
955
956 Function un.RemoveEmptyDirs
957   Pop $9
958   !define Index 'Line${__LINE__}'
959   FindFirst $0 $1 "$INSTDIR$9*"
960   StrCmp $0 "" "${Index}-End"
961   "${Index}-Loop:"
962     StrCmp $1 "" "${Index}-End"
963     StrCmp $1 "." "${Index}-Next"
964     StrCmp $1 ".." "${Index}-Next"
965       Push $0
966       Push $1
967       Push $9
968       Push "$9$1\"
969       Call un.RemoveEmptyDirs
970       Pop $9
971       Pop $1
972       Pop $0
973     "${Index}-Remove:"
974     RMDir "$INSTDIR$9$1"
975     "${Index}-Next:"
976     FindNext $0 $1
977     Goto "${Index}-Loop"
978   "${Index}-End:"
979   FindClose $0
980   !undef Index
981 FunctionEnd
982
983 Section "un.$Name_Section91" SEC91
984   SectionIn 1 2 3 RO
985   SetShellVarContext all
986
987   !insertmacro MacroAllExtensions DeleteContextMenu
988   !insertmacro MacroAllExtensions UnRegisterExtensionSection
989   !insertmacro MacroSkinExtensions UnRegisterExtensionSection
990   !insertmacro DeleteContextMenuExt "Directory"
991
992   ;remove activex plugin
993   UnRegDLL "$INSTDIR\axvlc.dll"
994   Delete /REBOOTOK "$INSTDIR\axvlc.dll"
995   Delete /REBOOTOK "$INSTDIR\axvlc.dll.manifest"
996
997   ;remove mozilla plugin
998   Push $R0
999   Push $R1
1000   Push $R2
1001
1002   !define Index 'Line${__LINE__}'
1003   StrCpy $R1 "0"
1004
1005   "${Index}-Loop:"
1006
1007     ; Check for Key
1008     EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"
1009     StrCmp $R0 "" "${Index}-End"
1010     IntOp $R1 $R1 + 1
1011     ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"
1012     StrCmp $R2 "" "${Index}-Loop" ""
1013
1014     ; old files (0.8.5 and before) that may be lying around
1015     Delete /REBOOTOK "$R2\npvlc.dll"
1016     Delete /REBOOTOK "$R2\libvlc.dll"
1017     Delete /REBOOTOK "$R2\vlcintf.xpt"
1018     Goto "${Index}-Loop"
1019
1020   "${Index}-End:"
1021   !undef Index
1022   Delete /REBOOTOK "$INSTDIR\npvlc.dll"
1023   Delete /REBOOTOK "$INSTDIR\npvlc.dll.manifest"
1024
1025   RMDir "$SMPROGRAMS\VideoLAN"
1026   RMDir /r $SMPROGRAMS\VideoLAN
1027
1028   FileOpen $UninstallLog "$INSTDIR\uninstall.log" r
1029   UninstallLoop:
1030     ClearErrors
1031     FileRead $UninstallLog $R0
1032     IfErrors UninstallEnd
1033     Push $R0
1034     Call un.TrimNewLines
1035     Pop $R0
1036     Delete "$INSTDIR\$R0"
1037     Goto UninstallLoop
1038   UninstallEnd:
1039   FileClose $UninstallLog
1040   Delete "$INSTDIR\uninstall.log"
1041   Delete "$INSTDIR\uninstall.exe"
1042   Push "\"
1043   Call un.RemoveEmptyDirs
1044   RMDir "$INSTDIR"
1045
1046   DeleteRegKey HKLM Software\VideoLAN
1047
1048   DeleteRegKey HKCR Applications\vlc.exe
1049   DeleteRegKey HKCR AudioCD\shell\PlayWithVLC
1050   DeleteRegKey HKCR DVD\shell\PlayWithVLC
1051   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival"
1052   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival
1053   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"
1054   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival
1055   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoCDMovieOnArrival" "VLCPlayVCDMovieOnArrival"
1056   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVCDMovieOnArrival
1057   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlaySuperVideoCDMovieOnArrival" "VLCPlaySVCDMovieOnArrival"
1058   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlaySVCDMovieOnArrival
1059   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDAudioOnArrival" "VLCPlayDVDAudioOnArrival"
1060   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDAudioOnArrival
1061   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayVideoFilesOnArrival" "VLCPlayVideoFilesOnArrival"
1062   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayVideoFilesOnArrival
1063   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayMusicFilesOnArrival" "VLCPlayMusicFilesOnArrival"
1064   DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayMusicFilesOnArrival
1065
1066   DeleteRegKey HKLM Software\Clients\Media\VLC
1067   DeleteRegValue HKLM "Software\RegisteredApplications" "VLC"
1068   DeleteRegKey HKCR "VLC.MediaFile"
1069   DeleteRegKey HKCR "VLC.DVDMovie"
1070   DeleteRegKey HKCR "VLC.CDAudio"
1071   DeleteRegKey HKCR "VLC.VCDMovie"
1072   DeleteRegKey HKCR "VLC.SVCDMovie"
1073   DeleteRegKey HKCR "VLC.OPENFolder"
1074
1075
1076   DeleteRegKey HKLM \
1077     "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"
1078
1079   DeleteRegKey HKLM \
1080     "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
1081
1082   Delete "$DESKTOP\VLC media player.lnk"
1083
1084   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
1085   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
1086   SetAutoClose true
1087 SectionEnd
1088
1089 Section /o "un.$Name_Section92" SEC92
1090   !insertmacro delprefs
1091 SectionEnd
1092
1093 ; Uninstaller section descriptions
1094 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
1095   !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} $Desc_Section91
1096   !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} $Desc_Section92
1097 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END
1098
1099 Function un.OnUnInstFailed
1100     UAC::Unload
1101 FunctionEnd
1102
1103 Function un.OnUnInstSuccess
1104     UAC::Unload
1105     Delete "$INSTDIR\UAC.dll"
1106 FunctionEnd
1107
1108 Function un.onInit
1109
1110 UAC_Elevate:
1111     UAC::RunElevated
1112     StrCmp 1223 $0 UAC_ElevationAborted
1113     StrCmp 0 $0 0 UAC_Err
1114     StrCmp 1 $1 0 UAC_Success
1115     Quit
1116
1117 UAC_Err:
1118     MessageBox mb_iconstop "Unable to elevate, error $0"
1119     Abort
1120
1121 UAC_ElevationAborted:
1122     MessageBox mb_iconstop "This installer requires admin access, aborting!"
1123     Abort
1124
1125 UAC_Success:
1126     StrCmp 1 $3 +4
1127     StrCmp 3 $1 0 UAC_ElevationAborted
1128     MessageBox mb_iconstop "This installer requires admin access, try again"
1129     goto UAC_Elevate
1130
1131   !insertmacro MUI_UNGETLANGUAGE
1132
1133   !include "languages\english.nsh"
1134   StrCmp $LANGUAGE ${LANG_FRENCH} French 0
1135   StrCmp $LANGUAGE ${LANG_GERMAN} German 0
1136   StrCmp $LANGUAGE ${LANG_ITALIAN} Italian 0
1137   StrCmp $LANGUAGE ${LANG_HUNGARIAN} Hungarian 0
1138   StrCmp $LANGUAGE ${LANG_ROMANIAN} Romanian 0
1139   StrCmp $LANGUAGE ${LANG_CATALAN} Catalan 0
1140   StrCmp $LANGUAGE ${LANG_BULGARIAN} Bulgarian 0
1141   StrCmp $LANGUAGE ${LANG_SLOVAK} Slovak 0
1142   StrCmp $LANGUAGE ${LANG_POLISH} Polish 0
1143   StrCmp $LANGUAGE ${LANG_DUTCH} Dutch 0
1144   StrCmp $LANGUAGE ${LANG_DANISH} Danish 0
1145   StrCmp $LANGUAGE ${LANG_SIMPCHINESE} SChinese 0
1146   StrCmp $LANGUAGE ${LANG_FINNISH} Finnish 0
1147   StrCmp $LANGUAGE ${LANG_JAPANESE} Japanese 0
1148 ;  StrCmp $LANGUAGE ${LANG_BENGALI} Bengali 0
1149 ;  StrCmp $LANGUAGE ${LANG_PUNJABI} Punjabi 0
1150 ;  StrCmp $LANGUAGE ${LANG_SLOVENIAN} Slovenian 0
1151   StrCmp $LANGUAGE ${LANG_SPANISH} Spanish 0
1152   StrCmp $LANGUAGE ${LANG_ESTONIAN} Estonian 0
1153   StrCmp $LANGUAGE ${LANG_LITHUANIAN} Lithuanian 0
1154   StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} Brazilian EndLanguageCmp
1155   French:
1156   !include "languages\french.nsh"
1157   Goto EndLanguageCmp
1158   German:
1159   !include "languages\german.nsh"
1160   Goto EndLanguageCmp
1161   Italian:
1162   !include "languages\italian.nsh"
1163   Goto EndLanguageCmp
1164   Hungarian:
1165   !include "languages\hungarian.nsh"
1166   Goto EndLanguageCmp
1167   Romanian:
1168   !include "languages\romanian.nsh"
1169   Goto EndLanguageCmp
1170   Catalan:
1171   !include "languages\catalan.nsh"
1172   Goto EndLanguageCmp
1173   Bulgarian:
1174   !include "languages\bulgarian.nsh"
1175   Goto EndLanguageCmp
1176   Slovak:
1177   !include "languages\slovak.nsh"
1178   Goto EndLanguageCmp
1179   Polish:
1180   !include "languages\polish.nsh"
1181   Goto EndLanguageCmp
1182   Dutch:
1183   !include "languages\dutch.nsh"
1184   Goto EndLanguageCmp
1185   Danish:
1186   !include "languages\danish.nsh"
1187   Goto EndLanguageCmp
1188   Schinese:
1189   !include "languages\schinese.nsh"
1190   Goto EndLanguageCmp
1191   Finnish:
1192   !include "languages\finnish.nsh"
1193   Goto EndLanguageCmp
1194   Japanese:
1195   !include "languages\japanese.nsh"
1196   Goto EndLanguageCmp
1197   Bengali:
1198   !include "languages\bengali.nsh"
1199   Goto EndLanguageCmp
1200   Punjabi:
1201   !include "languages\punjabi.nsh"
1202   Goto EndLanguageCmp
1203   Slovenian:
1204   !include "languages\slovenian.nsh"
1205   Goto EndLanguageCmp
1206   Spanish:
1207   !include "languages\spanish.nsh"
1208   Goto EndLanguageCmp
1209   Estonian:
1210   !include "languages\estonian.nsh"
1211   Goto EndLanguageCmp
1212   Lithuanian:
1213   !include "languages\lithuanian.nsh"
1214   Goto EndLanguageCmp
1215   Brazilian:
1216   !include "languages\brazilian_portuguese.nsh"
1217   EndLanguageCmp:
1218
1219 FunctionEnd