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