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