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