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