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