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