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