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