]> git.sesse.net Git - vlc/blob - vlc.win32.nsi
* added faac support to Mac OSX build
[vlc] / vlc.win32.nsi
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 \r
15 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
16 ; NSIS Modern User Interface configuration ;\r
17 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
18 \r
19 ; MUI 1.67 compatible ------\r
20 !include "MUI.nsh"\r
21 \r
22 ; MUI Settings\r
23 !define MUI_ABORTWARNING\r
24 !define MUI_ICON "vlc48x48.ico"\r
25 !define MUI_UNICON "vlc48x48.ico"\r
26 !define MUI_COMPONENTSPAGE_SMALLDESC\r
27 \r
28 ; Welcome page\r
29 !insertmacro MUI_PAGE_WELCOME\r
30 ; License page\r
31 !insertmacro MUI_PAGE_LICENSE "COPYING.txt"\r
32 ; Components page\r
33 !insertmacro MUI_PAGE_COMPONENTS\r
34 ; Directory page\r
35 !insertmacro MUI_PAGE_DIRECTORY\r
36 ; Instfiles page\r
37 !insertmacro MUI_PAGE_INSTFILES\r
38 ; Finish page\r
39 !define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe"\r
40 !insertmacro MUI_PAGE_FINISH\r
41 \r
42 ; Uninstaller pages\r
43 !insertmacro MUI_UNPAGE_INSTFILES\r
44 \r
45 ; Language files\r
46 !insertmacro MUI_LANGUAGE "English"\r
47 \r
48 ; Reserve files\r
49 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS\r
50 \r
51 ; MUI end ------\r
52 \r
53 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
54 ; File type associations ;\r
55 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
56 \r
57 Function RegisterExtension\r
58   ; back up old value for extension $R0 (eg. ".opt")\r
59   ReadRegStr $1 HKCR "$R0" ""\r
60   StrCmp $1 "" NoBackup\r
61     StrCmp $1 "VLC$R0" "NoBackup"\r
62     WriteRegStr HKCR "$R0" "VLC.backup" $1\r
63 NoBackup:\r
64   WriteRegStr HKCR "$R0" "" "VLC$R0"\r
65   ReadRegStr $0 HKCR "VLC$R0" ""\r
66   WriteRegStr HKCR "VLC$R0" "" "VLC media file"\r
67   WriteRegStr HKCR "VLC$R0\shell" "" "Play"\r
68   WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '$INSTDIR\vlc.exe "%1"'\r
69   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" "$INSTDIR\vlc.exe,0"\r
70 FunctionEnd\r
71 \r
72 Function un.RegisterExtension\r
73   ;start of restore script\r
74   ReadRegStr $1 HKCR "$R0" ""\r
75   StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it\r
76     ReadRegStr $1 HKCR "$R0" "VLC.backup"\r
77     StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key\r
78       DeleteRegKey HKCR "$R0"\r
79     Goto NoOwn\r
80 Restore:\r
81       WriteRegStr HKCR "$R0" "" $1\r
82       DeleteRegValue HKCR "$R0" "VLC.backup"\r
83 NoOwn:\r
84     DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings\r
85 FunctionEnd\r
86 \r
87 !macro RegisterExtensionSection EXT\r
88   Section /o ${EXT}\r
89     Push $R0\r
90     StrCpy $R0 ${EXT}\r
91     Call RegisterExtension\r
92     Pop $R0\r
93   SectionEnd\r
94 !macroend\r
95 \r
96 !macro UnRegisterExtensionSection EXT\r
97   Push $R0\r
98   StrCpy $R0 ${EXT}\r
99   Call un.RegisterExtension\r
100   Pop $R0\r
101 !macroend\r
102 \r
103 ;;;;;;;;;;;;;;;;;;;;;;;;;\r
104 ; General configuration ;\r
105 ;;;;;;;;;;;;;;;;;;;;;;;;;\r
106 \r
107 Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
108 OutFile ..\vlc-${VERSION}-win32.exe\r
109 InstallDir "$PROGRAMFILES\VideoLAN\VLC"\r
110 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "Install_Dir"\r
111 SetCompressor lzma\r
112 ShowInstDetails show\r
113 ShowUnInstDetails show\r
114 SetOverwrite ifnewer\r
115 CRCCheck on\r
116 \r
117 InstType "Normal"\r
118 InstType "Full"\r
119 \r
120 Section "Media player (required)" SEC01\r
121   SectionIn 1 2 3 RO\r
122   SetShellVarContext all\r
123   SetOutPath "$INSTDIR"\r
124 \r
125   File  vlc.exe\r
126   File  vlc.exe.manifest\r
127   File  *.txt\r
128 \r
129   File  /r plugins\r
130   File  /r locale\r
131   File  /r skins\r
132   File  /r skins2\r
133   File  /r http\r
134 \r
135   WriteRegStr HKCR Applications\vlc.exe "" ""\r
136   WriteRegStr HKCR Applications\vlc.exe\shell "" "Play"\r
137   WriteRegStr HKCR Applications\vlc.exe\shell\Play\command "" \\r
138     '$INSTDIR\vlc.exe "%1"'\r
139 \r
140 SectionEnd\r
141 \r
142 Section "Start Menu + Desktop Shortcut" SEC02\r
143   SectionIn 1 2 3\r
144   CreateDirectory "$SMPROGRAMS\VideoLAN"\r
145   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \\r
146     "$INSTDIR\vlc.exe" "--intf wxwin"\r
147   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (skins).lnk" \\r
148     "$INSTDIR\vlc.exe" "--intf skins"\r
149   CreateShortCut "$DESKTOP\VLC media player.lnk" "$INSTDIR\vlc.exe"\r
150   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" \\r
151     "${PRODUCT_WEB_SITE}"\r
152   CreateShortCut "$SMPROGRAMS\VideoLAN\Website.lnk" \\r
153     "$INSTDIR\${PRODUCT_NAME}.url"\r
154 SectionEnd\r
155 \r
156 Section /o "Mozilla plugin" SEC03\r
157   SectionIn 2 3\r
158   File  /r mozilla\r
159 \r
160   WriteRegStr HKLM \\r
161     SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION} \\r
162     "Path" '"$INSTDIR\mozilla\npvlc.dll"'\r
163 SectionEnd\r
164 \r
165 SubSection "File type associations" SEC04\r
166   ; Make sure we have the same list in uninstall\r
167   !insertmacro RegisterExtensionSection ".a52"\r
168   !insertmacro RegisterExtensionSection ".aac"\r
169   !insertmacro RegisterExtensionSection ".ac3"\r
170   !insertmacro RegisterExtensionSection ".asf"\r
171   !insertmacro RegisterExtensionSection ".asx"\r
172   !insertmacro RegisterExtensionSection ".avi"\r
173   !insertmacro RegisterExtensionSection ".bin"\r
174   !insertmacro RegisterExtensionSection ".cue"\r
175   !insertmacro RegisterExtensionSection ".dat"\r
176   !insertmacro RegisterExtensionSection ".divx"\r
177   !insertmacro RegisterExtensionSection ".dts"\r
178   !insertmacro RegisterExtensionSection ".dv"\r
179   !insertmacro RegisterExtensionSection ".flac"\r
180   !insertmacro RegisterExtensionSection ".m1v"\r
181   !insertmacro RegisterExtensionSection ".m2v"\r
182   !insertmacro RegisterExtensionSection ".m3u"\r
183   !insertmacro RegisterExtensionSection ".mka"\r
184   !insertmacro RegisterExtensionSection ".mkv"\r
185   !insertmacro RegisterExtensionSection ".mov"\r
186   !insertmacro RegisterExtensionSection ".mp1"\r
187   !insertmacro RegisterExtensionSection ".mp2"\r
188   !insertmacro RegisterExtensionSection ".mp3"\r
189   !insertmacro RegisterExtensionSection ".mp4"\r
190   !insertmacro RegisterExtensionSection ".mpeg"\r
191   !insertmacro RegisterExtensionSection ".mpeg1"\r
192   !insertmacro RegisterExtensionSection ".mpeg2"\r
193   !insertmacro RegisterExtensionSection ".mpeg4"\r
194   !insertmacro RegisterExtensionSection ".mpg"\r
195   !insertmacro RegisterExtensionSection ".ogg"\r
196   !insertmacro RegisterExtensionSection ".ogm"\r
197   !insertmacro RegisterExtensionSection ".pls"\r
198   !insertmacro RegisterExtensionSection ".spx"\r
199   !insertmacro RegisterExtensionSection ".vob"\r
200   !insertmacro RegisterExtensionSection ".wav"\r
201   !insertmacro RegisterExtensionSection ".wma"\r
202   !insertmacro RegisterExtensionSection ".wmv"\r
203 SubSectionEnd\r
204 \r
205 Section -Post\r
206   WriteUninstaller "$INSTDIR\uninstall.exe"\r
207   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR\r
208   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"\r
209   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"\r
210 \r
211   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
212     "DisplayName" "$(^Name)"\r
213   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
214     "UninstallString" "$INSTDIR\uninstall.exe"\r
215   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
216     "DisplayIcon" "$INSTDIR\vlc.exe"\r
217   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
218     "DisplayVersion" "${PRODUCT_VERSION}"\r
219   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
220     "URLInfoAbout" "${PRODUCT_WEB_SITE}"\r
221   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
222     "Publisher" "${PRODUCT_PUBLISHER}"\r
223 SectionEnd\r
224 \r
225 ; Section descriptions\r
226 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
227   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \\r
228     "The media player itself"\r
229   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} \\r
230     "Adds icons to your start menu and your desktop for easy access"\r
231   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \\r
232     "The VLC mozilla plugin"\r
233   !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \\r
234     "Sets VLC media player as the default application for the specified file type"\r
235 !insertmacro MUI_FUNCTION_DESCRIPTION_END\r
236 \r
237 \r
238 Function un.onUninstSuccess\r
239   HideWindow\r
240   MessageBox MB_ICONINFORMATION|MB_OK \\r
241     "$(^Name) was successfully removed from your computer."\r
242 FunctionEnd\r
243 \r
244 Function un.onInit\r
245   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 \\r
246     "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2\r
247   Abort\r
248 FunctionEnd\r
249 \r
250 Section Uninstall\r
251   SetShellVarContext all\r
252 \r
253   ; Make sure we have the same list in install\r
254   !insertmacro UnRegisterExtensionSection ".a52"\r
255   !insertmacro UnRegisterExtensionSection ".aac"\r
256   !insertmacro UnRegisterExtensionSection ".ac3"\r
257   !insertmacro UnRegisterExtensionSection ".asf"\r
258   !insertmacro UnRegisterExtensionSection ".asx"\r
259   !insertmacro UnRegisterExtensionSection ".avi"\r
260   !insertmacro UnRegisterExtensionSection ".bin"\r
261   !insertmacro UnRegisterExtensionSection ".cue"\r
262   !insertmacro UnRegisterExtensionSection ".dat"\r
263   !insertmacro UnRegisterExtensionSection ".divx"\r
264   !insertmacro UnRegisterExtensionSection ".dts"\r
265   !insertmacro UnRegisterExtensionSection ".dv"\r
266   !insertmacro UnRegisterExtensionSection ".flac"\r
267   !insertmacro UnRegisterExtensionSection ".m1v"\r
268   !insertmacro UnRegisterExtensionSection ".m2v"\r
269   !insertmacro UnRegisterExtensionSection ".m3u"\r
270   !insertmacro UnRegisterExtensionSection ".mka"\r
271   !insertmacro UnRegisterExtensionSection ".mkv"\r
272   !insertmacro UnRegisterExtensionSection ".mov"\r
273   !insertmacro UnRegisterExtensionSection ".mp1"\r
274   !insertmacro UnRegisterExtensionSection ".mp2"\r
275   !insertmacro UnRegisterExtensionSection ".mp3"\r
276   !insertmacro UnRegisterExtensionSection ".mp4"\r
277   !insertmacro UnRegisterExtensionSection ".mpeg"\r
278   !insertmacro UnRegisterExtensionSection ".mpeg1"\r
279   !insertmacro UnRegisterExtensionSection ".mpeg2"\r
280   !insertmacro UnRegisterExtensionSection ".mpeg4"\r
281   !insertmacro UnRegisterExtensionSection ".mpg"\r
282   !insertmacro UnRegisterExtensionSection ".ogg"\r
283   !insertmacro UnRegisterExtensionSection ".ogm"\r
284   !insertmacro UnRegisterExtensionSection ".pls"\r
285   !insertmacro UnRegisterExtensionSection ".spx"\r
286   !insertmacro UnRegisterExtensionSection ".vob"\r
287   !insertmacro UnRegisterExtensionSection ".wav"\r
288   !insertmacro UnRegisterExtensionSection ".wma"\r
289   !insertmacro UnRegisterExtensionSection ".wmv"\r
290 \r
291   RMDir "$SMPROGRAMS\VideoLAN"\r
292   RMDir /r $SMPROGRAMS\VideoLAN\r
293   RMDir /r $INSTDIR\r
294   DeleteRegKey HKLM Software\VideoLAN\r
295 \r
296   DeleteRegKey HKCR Applications\vlc.exe\r
297 \r
298   DeleteRegKey HKLM \\r
299     SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}\r
300 \r
301   DeleteRegKey HKLM \\r
302     Software\Microsoft\Windows\CurrentVersion\Uninstall\VideoLAN\r
303 \r
304   Delete "$DESKTOP\VLC media player.lnk"\r
305 \r
306   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"\r
307   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"\r
308   SetAutoClose true\r
309 SectionEnd\r