]> git.sesse.net Git - vlc/blob - vlc.win32.nsi.in
* playlist/* When telling the playlist to play the node, don't check for i_children...
[vlc] / 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 \r
100 !insertmacro MUI_RESERVEFILE_LANGDLL\r
101 \r
102 ; Reserve files\r
103   !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS\r
104 \r
105 ; MUI end ------\r
106 \r
107 ;;;;;;;;;;;;;;;;;;;\r
108 ; Extension lists ;\r
109 ;;;;;;;;;;;;;;;;;;;\r
110 \r
111 !macro MacroAudioExtensions _action\r
112   !insertmacro ${_action} ".a52"\r
113   !insertmacro ${_action} ".aac"\r
114   !insertmacro ${_action} ".ac3"\r
115   !insertmacro ${_action} ".dts"\r
116   !insertmacro ${_action} ".flac"\r
117   !insertmacro ${_action} ".mka"\r
118   !insertmacro ${_action} ".mp1"\r
119   !insertmacro ${_action} ".mp2"\r
120   !insertmacro ${_action} ".mp3"\r
121   !insertmacro ${_action} ".ogg"\r
122   !insertmacro ${_action} ".spx"\r
123   !insertmacro ${_action} ".wav"\r
124   !insertmacro ${_action} ".wma"\r
125 !macroend\r
126 \r
127 !macro MacroVideoExtensions _action\r
128   !insertmacro ${_action} ".asf"\r
129   !insertmacro ${_action} ".avi"\r
130   !insertmacro ${_action} ".divx"\r
131   !insertmacro ${_action} ".dv"\r
132   !insertmacro ${_action} ".m1v"\r
133   !insertmacro ${_action} ".m2v"\r
134   !insertmacro ${_action} ".mkv"\r
135   !insertmacro ${_action} ".mov"\r
136   !insertmacro ${_action} ".mp4"\r
137   !insertmacro ${_action} ".mpeg"\r
138   !insertmacro ${_action} ".mpeg1"\r
139   !insertmacro ${_action} ".mpeg2"\r
140   !insertmacro ${_action} ".mpeg4"\r
141   !insertmacro ${_action} ".mpg"\r
142   !insertmacro ${_action} ".ps"\r
143   !insertmacro ${_action} ".ts"\r
144   !insertmacro ${_action} ".ogm"\r
145   !insertmacro ${_action} ".vob"\r
146   !insertmacro ${_action} ".wmv"\r
147 !macroend\r
148 \r
149 !macro MacroOtherExtensions _action\r
150   !insertmacro ${_action} ".asx"\r
151   !insertmacro ${_action} ".bin"\r
152   !insertmacro ${_action} ".cue"\r
153   !insertmacro ${_action} ".m3u"\r
154   !insertmacro ${_action} ".pls"\r
155   !insertmacro ${_action} ".vlc"\r
156 !macroend\r
157 \r
158 !macro MacroAllExtensions _action\r
159   !insertmacro MacroAudioExtensions ${_action}\r
160   !insertmacro MacroVideoExtensions ${_action}\r
161   !insertmacro MacroOtherExtensions ${_action}\r
162 !macroend\r
163 \r
164 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
165 ; File type associations ;\r
166 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
167 \r
168 Function RegisterExtension\r
169   ; back up old value for extension $R0 (eg. ".opt")\r
170   ReadRegStr $1 HKCR "$R0" ""\r
171   StrCmp $1 "" NoBackup\r
172     StrCmp $1 "VLC$R0" "NoBackup"\r
173     WriteRegStr HKCR "$R0" "VLC.backup" $1\r
174 NoBackup:\r
175   WriteRegStr HKCR "$R0" "" "VLC$R0"\r
176   ReadRegStr $0 HKCR "VLC$R0" ""\r
177   WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"\r
178   WriteRegStr HKCR "VLC$R0\shell" "" "Play"\r
179   WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'\r
180   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'\r
181 FunctionEnd\r
182 \r
183 Function un.RegisterExtension\r
184   ;start of restore script\r
185   ReadRegStr $1 HKCR "$R0" ""\r
186   StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it\r
187     ReadRegStr $1 HKCR "$R0" "VLC.backup"\r
188     StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key\r
189       DeleteRegKey HKCR "$R0"\r
190     Goto NoOwn\r
191 Restore:\r
192       WriteRegStr HKCR "$R0" "" $1\r
193       DeleteRegValue HKCR "$R0" "VLC.backup"\r
194 NoOwn:\r
195     DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings\r
196 FunctionEnd\r
197 \r
198 !macro RegisterExtensionSection EXT\r
199   Section /o ${EXT}\r
200     SectionIn 1 3\r
201     Push $R0\r
202     StrCpy $R0 ${EXT}\r
203     Call RegisterExtension\r
204     Pop $R0\r
205   SectionEnd\r
206 !macroend\r
207 \r
208 !macro UnRegisterExtensionSection EXT\r
209   Push $R0\r
210   StrCpy $R0 ${EXT}\r
211   Call un.RegisterExtension\r
212   Pop $R0\r
213 !macroend\r
214 \r
215 !macro WriteRegStrSupportedTypes EXT\r
216   WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""\r
217 !macroend\r
218 \r
219 ;;;;;;;;;;;;;;;;;;;;;;;;\r
220 ; Context menu entries ;\r
221 ;;;;;;;;;;;;;;;;;;;;;;;;\r
222 \r
223 !macro AddContextMenu EXT\r
224   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" "Play with VLC media player"\r
225   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '$INSTDIR\vlc.exe --started-from-file --no-playlist-enqueue "%1"'\r
226 \r
227   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" "Add to VLC media player's Playlist"\r
228   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '$INSTDIR\vlc.exe --started-from-file --playlist-enqueue "%1"'\r
229 !macroend\r
230 \r
231 !macro DeleteContextMenu EXT\r
232   DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC\r
233   DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC\r
234 !macroend\r
235 \r
236 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
237 ; Delete prefs and cache ;\r
238 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
239 \r
240 !macro delprefs\r
241   SectionIn 1 3\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\Utilities"\r
397   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Reset VLC media player preferences and cache files.lnk" \\r
398     "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache --save-config vlc:quit"\r
399   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Set Audio mode to DirectX (default).lnk" \\r
400     "$INSTDIR\vlc.exe" "--aout aout_directx --save-config vlc:quit"\r
401   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Set Audio mode to Waveout.lnk" \\r
402     "$INSTDIR\vlc.exe" "--aout waveout --save-config vlc:quit"\r
403   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Set Main Interface to Skinnable.lnk" \\r
404     "$INSTDIR\vlc.exe" "-I skins --save-config vlc:quit"\r
405   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Set Main Interface to wxWidgets (default).lnk" \\r
406     "$INSTDIR\vlc.exe" "-I wxwin --save-config vlc:quit"\r
407   ; FIXME add detection for Vista. Direct3D will be default there, for all others it's DirectX\r
408   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Set Video mode to Direct3D.lnk" \\r
409     "$INSTDIR\vlc.exe" "--vout direct3d --overlay --save-config vlc:quit"\r
410   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Set Video mode to DirectX.lnk" \\r
411     "$INSTDIR\vlc.exe" "--vout directx --overlay --save-config vlc:quit"\r
412   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Set Video mode to DirectX (no hardware acceleration).lnk" \\r
413     "$INSTDIR\vlc.exe" "--vout directx --no-overlay --save-config vlc:quit"\r
414   CreateShortCut "$SMPROGRAMS\VideoLAN\Utilities\Set Video mode to OpenGL.lnk" \\r
415     "$INSTDIR\vlc.exe" "--vout opengl --overlay --save-config vlc:quit"\r
416   CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \\r
417     "$INSTDIR\Documentation.url"\r
418   CreateShortCut "$SMPROGRAMS\VideoLAN\Release Notes.lnk" \\r
419     "$INSTDIR\NEWS.txt" ""\r
420   CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_GROUP} Website.lnk" \\r
421     "$INSTDIR\${PRODUCT_GROUP} Website.url"\r
422   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \\r
423     "$INSTDIR\vlc.exe" ""\r
424 SectionEnd\r
425 \r
426 Section "Desktop Shortcut" SEC02b\r
427   SectionIn 1 2 3\r
428   CreateShortCut "$DESKTOP\VLC media player.lnk" \\r
429     "$INSTDIR\vlc.exe" ""\r
430 SectionEnd\r
431 \r
432 Section /o "Mozilla plugin" SEC03\r
433   SectionIn 1 3\r
434 \r
435   !insertmacro OpenUninstallLog\r
436   !insertmacro InstallFolder mozilla\r
437   !insertmacro CloseUninstallLog\r
438 \r
439   ; doesn't work. bug in mozilla/mozilla firefox or moz documentation (xpt file isn't loaded)\r
440   ; see mozilla bugs 184506 and 159445\r
441   ;!define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"\r
442   ;WriteRegStr HKLM ${Moz} "Description" "VideoLAN VLC plugin for Mozilla"\r
443   ;WriteRegStr HKLM ${Moz} "Path" "$INSTDIR\mozilla\npvlc.dll"\r
444   ;WriteRegStr HKLM ${Moz} "Product" "VLC media player"\r
445   ;WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN"\r
446   ;WriteRegStr HKLM ${Moz} "Version" "${VERSION}"\r
447   ;WriteRegStr HKLM ${Moz} "XPTPath" "$INSTDIR\mozilla\vlcintf.xpt"\r
448 \r
449   Push $R0\r
450   Push $R1\r
451   Push $R2\r
452 \r
453   !define Index 'Line${__LINE__}'\r
454   StrCpy $R1 "0"\r
455 \r
456   "${Index}-Loop:"\r
457 \r
458     ; Check for Key\r
459     EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"\r
460     StrCmp $R0 "" "${Index}-End"\r
461     IntOp $R1 $R1 + 1\r
462     ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"\r
463     StrCmp $R2 "" "${Index}-Loop" ""\r
464 \r
465     CopyFiles "$INSTDIR\mozilla\*" "$R2"\r
466     !ifdef LIBVLC_DLL\r
467     CopyFiles ${LIBVLC_DLL} "$R2"\r
468     !endif\r
469     Goto "${Index}-Loop"\r
470 \r
471   "${Index}-End:"\r
472   !undef Index\r
473 \r
474 SectionEnd\r
475 \r
476 Section /o "ActiveX plugin" SEC04\r
477   SectionIn 1 3\r
478   SetOutPath "$INSTDIR"\r
479   !insertmacro OpenUninstallLog\r
480   !insertmacro InstallFile activex\axvlc.dll\r
481   !insertmacro CloseUninstallLog\r
482   RegDLL "$INSTDIR\axvlc.dll"\r
483 SectionEnd\r
484 \r
485 Section /o "Context Menus" SEC05\r
486   SectionIn 3\r
487   !insertmacro MacroAllExtensions AddContextMenu\r
488   !insertmacro AddContextMenu "Directory"\r
489 SectionEnd\r
490 \r
491 SectionGroup "File type associations" SEC06\r
492   SectionGroup "Audio Files"\r
493     !insertmacro MacroAudioExtensions RegisterExtensionSection\r
494   SectionGroupEnd\r
495   SectionGroup "Video Files"\r
496     !insertmacro MacroVideoExtensions RegisterExtensionSection\r
497   SectionGroupEnd\r
498   SectionGroup "Other"\r
499     !insertmacro MacroOtherExtensions RegisterExtensionSection\r
500   SectionGroupEnd\r
501 SectionGroupEnd\r
502 \r
503 Section /o "Delete preferences and cache" SEC07\r
504   !insertmacro delprefs\r
505 SectionEnd\r
506 \r
507 ; Installer section descriptions\r
508 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
509   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \\r
510     "The media player itself"\r
511   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} \\r
512     "Adds icons to your start menu for easy access"\r
513   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} \\r
514     "Adds icon to your desktop for easy access"\r
515   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \\r
516     "The VLC Mozilla and Mozilla Firefox plugin"\r
517   !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \\r
518     "The VLC ActiveX plugin"\r
519   !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} \\r
520     "Add context menu items ('Play With VLC' and 'Add To VLC's Playlist')"\r
521   !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \\r
522     "Sets VLC media player as the default application for the specified file type"\r
523   !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \\r
524     "Deletes VLC media player preferences and cache files leftover from previous installations"\r
525 !insertmacro MUI_FUNCTION_DESCRIPTION_END\r
526 \r
527 Function .onInit\r
528   ReadRegStr $R0  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
529   "UninstallString"\r
530   StrCmp $R0 "" done\r
531  \r
532   MessageBox MB_YESNO|MB_ICONEXCLAMATION \\r
533   "VLC media player has already been installed. $\nDo you want to remove \\r
534   the previous version before installing $(^Name) ?" \\r
535   IDNO done\r
536   \r
537   ;Run the uninstaller\r
538   ;uninst:\r
539     ClearErrors\r
540     ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file\r
541   done:\r
542   !insertmacro MUI_LANGDLL_DISPLAY\r
543 FunctionEnd\r
544 \r
545 Section -Post\r
546   WriteUninstaller "$INSTDIR\uninstall.exe"\r
547   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR\r
548   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"\r
549   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"\r
550 \r
551   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
552     "DisplayName" "$(^Name)"\r
553   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
554     "UninstallString" "$INSTDIR\uninstall.exe"\r
555   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
556     "DisplayIcon" "$INSTDIR\vlc.exe"\r
557   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
558     "DisplayVersion" "${PRODUCT_VERSION}"\r
559   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
560     "URLInfoAbout" "${PRODUCT_WEB_SITE}"\r
561   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
562     "Publisher" "${PRODUCT_PUBLISHER}"\r
563 SectionEnd\r
564 \r
565 ;;;;;;;;;;;;;;;;;;;;;;;;\r
566 ; Uninstaller sections ;\r
567 ;;;;;;;;;;;;;;;;;;;;;;;;\r
568 \r
569 ; TrimNewlines (copied from NSIS documentation)\r
570 ; input, top of stack  (e.g. whatever$\r$\n)\r
571 ; output, top of stack (replaces, with e.g. whatever)\r
572 ; modifies no other variables.\r
573 \r
574 Function un.TrimNewlines\r
575  Exch $R0\r
576  Push $R1\r
577  Push $R2\r
578  StrCpy $R1 0\r
579  \r
580  loop:\r
581    IntOp $R1 $R1 - 1\r
582    StrCpy $R2 $R0 1 $R1\r
583    StrCmp $R2 "$\r" loop\r
584    StrCmp $R2 "$\n" loop\r
585    IntOp $R1 $R1 + 1\r
586    IntCmp $R1 0 no_trim_needed\r
587    StrCpy $R0 $R0 $R1\r
588  \r
589  no_trim_needed:\r
590    Pop $R2\r
591    Pop $R1\r
592    Exch $R0\r
593 FunctionEnd\r
594 \r
595 Function un.RemoveEmptyDirs\r
596   Pop $9\r
597   !define Index 'Line${__LINE__}'\r
598   FindFirst $0 $1 "$INSTDIR$9*"\r
599   StrCmp $0 "" "${Index}-End"\r
600   "${Index}-Loop:"\r
601     StrCmp $1 "" "${Index}-End"\r
602     StrCmp $1 "." "${Index}-Next"\r
603     StrCmp $1 ".." "${Index}-Next"\r
604       Push $0\r
605       Push $1\r
606       Push $9\r
607       Push "$9$1\"\r
608       Call un.RemoveEmptyDirs\r
609       Pop $9\r
610       Pop $1\r
611       Pop $0\r
612     "${Index}-Remove:"\r
613     RMDir "$INSTDIR$9$1"\r
614     "${Index}-Next:"\r
615     FindNext $0 $1\r
616     Goto "${Index}-Loop"\r
617   "${Index}-End:"\r
618   FindClose $0\r
619   !undef Index\r
620 FunctionEnd\r
621 \r
622 Section "Uninstall" SEC91\r
623   SectionIn 1 2 3 RO\r
624   SetShellVarContext all\r
625 \r
626   !insertmacro MacroAllExtensions DeleteContextMenu\r
627   !insertmacro MacroAllExtensions UnRegisterExtensionSection\r
628   !insertmacro DeleteContextMenu "Directory"\r
629 \r
630   UnRegDLL "$INSTDIR\axvlc.dll"\r
631   Delete /REBOOTOK "$INSTDIR\axvlc.dll"\r
632 \r
633   ;remove mozilla plugin\r
634   Push $R0\r
635   Push $R1\r
636   Push $R2\r
637 \r
638   !define Index 'Line${__LINE__}'\r
639   StrCpy $R1 "0"\r
640 \r
641   "${Index}-Loop:"\r
642 \r
643     ; Check for Key\r
644     EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"\r
645     StrCmp $R0 "" "${Index}-End"\r
646     IntOp $R1 $R1 + 1\r
647     ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"\r
648     StrCmp $R2 "" "${Index}-Loop" ""\r
649 \r
650     Delete "$R2\npvlc.dll"\r
651     Goto "${Index}-Loop"\r
652 \r
653   "${Index}-End:"\r
654   !undef Index\r
655 \r
656   RMDir "$SMPROGRAMS\VideoLAN"\r
657   RMDir /r $SMPROGRAMS\VideoLAN\r
658 \r
659   FileOpen $UninstallLog "$INSTDIR\uninstall.log" r\r
660   UninstallLoop:\r
661     ClearErrors\r
662     FileRead $UninstallLog $R0\r
663     IfErrors UninstallEnd\r
664     Push $R0\r
665     Call un.TrimNewLines\r
666     Pop $R0\r
667     Delete "$INSTDIR\$R0"\r
668     Goto UninstallLoop\r
669   UninstallEnd:\r
670   FileClose $UninstallLog\r
671   Delete "$INSTDIR\uninstall.log"\r
672   Delete "$INSTDIR\uninstall.exe"\r
673   Push "\"\r
674   Call un.RemoveEmptyDirs\r
675   RMDir "$INSTDIR"\r
676 \r
677   DeleteRegKey HKLM Software\VideoLAN\r
678 \r
679   DeleteRegKey HKCR Applications\vlc.exe\r
680   DeleteRegKey HKCR AudioCD\shell\PlayWithVLC\r
681   DeleteRegKey HKCR DVD\shell\PlayWithVLC\r
682   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival"\r
683   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival\r
684   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"\r
685   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival\r
686   DeleteRegKey HKCR "VLC.MediaFile"\r
687 \r
688   DeleteRegKey HKLM \\r
689     "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"\r
690 \r
691   DeleteRegKey HKLM \\r
692     "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"\r
693 \r
694   Delete "$DESKTOP\VLC media player.lnk"\r
695 \r
696   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"\r
697   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"\r
698   SetAutoClose true\r
699 SectionEnd\r
700 \r
701 Section /o "un.Delete preferences and cache" SEC92\r
702   SectionIn 1 3\r
703   !insertmacro delprefs\r
704 SectionEnd\r
705 \r
706 ; Uninstaller section descriptions\r
707 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN\r
708   !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} \\r
709     "Uninstall VLC media player and all its components"\r
710   !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} \\r
711     "Deletes VLC media player preferences and cache files"\r
712 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END\r
713 \r
714 ;Function un.onUninstSuccess\r
715 ;  HideWindow\r
716 ;  MessageBox MB_ICONINFORMATION|MB_OK \\r
717 ;    "$(^Name) was successfully removed from your computer."\r
718 ;FunctionEnd\r
719 \r
720 Function un.onInit\r
721   !insertmacro MUI_LANGDLL_DISPLAY\r
722 FunctionEnd\r