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