Merged from linuxport rev21200:21590. Updated.
[xbmc:xbmc-antiquated.git] / XBMC / project / Win32BuildSetup / XBMC for Windows.nsi
1 ;XBMC for Windows install script\r
2 ;Copyright (C) 2005-2008 Team XBMC\r
3 ;http://xbmc.org\r
4 \r
5 ;Script by chadoe\r
6 \r
7 ;--------------------------------\r
8 ;Include Modern UI\r
9 \r
10   !include "MUI2.nsh"\r
11   !include "nsDialogs.nsh"\r
12   !include "LogicLib.nsh"\r
13 ;--------------------------------\r
14 ;General\r
15 \r
16   ;Name and file\r
17   Name "XBMC Media Center"\r
18   OutFile "XBMCSetup-Rev${xbmc_revision}.exe"\r
19 \r
20   XPStyle on\r
21   \r
22   ;Default installation folder\r
23   InstallDir "$PROGRAMFILES\XBMC"\r
24 \r
25   ;Get installation folder from registry if available\r
26   InstallDirRegKey HKCU "Software\XBMC" ""\r
27 \r
28   ;Request application privileges for Windows Vista\r
29   RequestExecutionLevel admin\r
30 \r
31 ;--------------------------------\r
32 ;Variables\r
33 \r
34   Var StartMenuFolder\r
35   Var PageProfileState\r
36   \r
37 ;--------------------------------\r
38 ;Interface Settings\r
39 \r
40   !define MUI_HEADERIMAGE\r
41   !define MUI_ICON "..\..\xbmc\win32\xbmc.ico"\r
42   ;!define MUI_HEADERIMAGE_BITMAP "xbmc-banner.bmp"\r
43   ;!define MUI_HEADERIMAGE_RIGHT\r
44   !define MUI_WELCOMEFINISHPAGE_BITMAP "xbmc-left.bmp"\r
45   !define MUI_COMPONENTSPAGE_SMALLDESC\r
46   ;!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\webapps\ROOT\RELEASE-NOTES.txt"\r
47   !define MUI_FINISHPAGE_LINK "Please visit http://xbmc.org for more information."\r
48   !define MUI_FINISHPAGE_LINK_LOCATION "http://xbmc.org"\r
49   !define MUI_FINISHPAGE_RUN "$INSTDIR\XBMC.exe"\r
50   !define MUI_FINISHPAGE_RUN_PARAMETERS "-fs"\r
51   !define MUI_FINISHPAGE_RUN_NOTCHECKED\r
52   !define MUI_ABORTWARNING  \r
53 ;--------------------------------\r
54 ;Pages\r
55 \r
56   !insertmacro MUI_PAGE_WELCOME\r
57   !insertmacro MUI_PAGE_LICENSE "..\..\LICENSE.GPL"\r
58   !insertmacro MUI_PAGE_COMPONENTS\r
59   !insertmacro MUI_PAGE_DIRECTORY\r
60   Page custom ProfileSettings ProfileSettingsLeave\r
61   \r
62   ;Start Menu Folder Page Configuration\r
63   !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" \r
64   !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\XBMC" \r
65   !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"\r
66   !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder  \r
67 \r
68   !insertmacro MUI_PAGE_INSTFILES\r
69   !insertmacro MUI_PAGE_FINISH\r
70 \r
71   !insertmacro MUI_UNPAGE_WELCOME\r
72   !insertmacro MUI_UNPAGE_CONFIRM\r
73   UninstPage custom un.UnPageProfile un.UnPageProfileLeave\r
74   !insertmacro MUI_UNPAGE_INSTFILES\r
75   !insertmacro MUI_UNPAGE_FINISH\r
76 \r
77 ;--------------------------------\r
78 ;Languages\r
79 \r
80   !insertmacro MUI_LANGUAGE "English"\r
81 \r
82 ;--------------------------------\r
83 ;Installer Sections\r
84 \r
85 InstType "Full"\r
86 InstType "Minimal" \r
87 \r
88 Section "XBMC" SecXBMC\r
89   SetShellVarContext current\r
90   SectionIn RO\r
91   SectionIn 1 2 #section is in installtype Full and Minimal\r
92   ;ADD YOUR OWN FILES HERE...\r
93   SetOutPath "$INSTDIR"\r
94   File "${xbmc_root}\Xbmc\XBMC.exe"\r
95   File "${xbmc_root}\Xbmc\copying.txt"\r
96   File "${xbmc_root}\Xbmc\LICENSE.GPL"\r
97   File "${xbmc_root}\Xbmc\known_issues.txt"\r
98   File "${xbmc_root}\Xbmc\*.dll"\r
99   SetOutPath "$INSTDIR\credits"\r
100   File /r /x *.so "${xbmc_root}\Xbmc\credits\*.*"\r
101   SetOutPath "$INSTDIR\media"\r
102   File /r /x *.so "${xbmc_root}\Xbmc\media\*.*"\r
103   SetOutPath "$INSTDIR\sounds"\r
104   File /r /x *.so "${xbmc_root}\Xbmc\sounds\*.*"\r
105   SetOutPath "$INSTDIR\system"\r
106   File /r /x *.so /x mplayer "${xbmc_root}\Xbmc\system\*.*"\r
107   \r
108   ;Turn off overwrite to prevent files in xbmc\userdata\ from being overwritten\r
109   SetOverwrite off\r
110   \r
111   SetOutPath "$INSTDIR\userdata"\r
112   File /r /x *.so  "${xbmc_root}\Xbmc\userdata\*.*"\r
113   \r
114   ;Turn on overwrite for rest of install\r
115   SetOverwrite on\r
116   \r
117   SetOutPath "$INSTDIR\visualisations"\r
118   File "${xbmc_root}\Xbmc\visualisations\*_win32.vis"\r
119   SetOutPath "$INSTDIR\visualisations\projectM"\r
120   File /nonfatal /r "${xbmc_root}\Xbmc\visualisations\projectM\*.*"\r
121   SetOutPath "$INSTDIR\web"\r
122   File /r "${xbmc_root}\Xbmc\web\*.*"\r
123 \r
124   ;Store installation folder\r
125   WriteRegStr HKCU "Software\XBMC" "" $INSTDIR\r
126 \r
127   ;Create uninstaller\r
128   WriteUninstaller "$INSTDIR\Uninstall.exe"\r
129   \r
130   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application\r
131   ;Create shortcuts\r
132   SetOutPath "$INSTDIR"\r
133   CreateDirectory "$SMPROGRAMS\$StartMenuFolder"\r
134   ${If} $PageProfileState == "1"\r
135     CreateShortCut "$SMPROGRAMS\$StartMenuFolder\XBMC.lnk" "$INSTDIR\XBMC.exe" \\r
136       "-fs -p" "$INSTDIR\XBMC.exe" 0 SW_SHOWNORMAL \\r
137       "" "Start XBMC in fullscreen."\r
138     CreateShortCut "$SMPROGRAMS\$StartMenuFolder\XBMC (Windowed).lnk" "$INSTDIR\XBMC.exe" \\r
139       "-p" "$INSTDIR\XBMC.exe" 0 SW_SHOWNORMAL \\r
140       "" "Start XBMC in windowed mode."\r
141   ${Else}\r
142     CreateShortCut "$SMPROGRAMS\$StartMenuFolder\XBMC.lnk" "$INSTDIR\XBMC.exe" \\r
143       "-fs" "$INSTDIR\XBMC.exe" 0 SW_SHOWNORMAL \\r
144       "" "Start XBMC in fullscreen."\r
145     CreateShortCut "$SMPROGRAMS\$StartMenuFolder\XBMC (Windowed).lnk" "$INSTDIR\XBMC.exe" \\r
146       "" "$INSTDIR\XBMC.exe" 0 SW_SHOWNORMAL \\r
147       "" "Start XBMC in windowed mode."\r
148   ${EndIf}\r
149   CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall XBMC.lnk" "$INSTDIR\Uninstall.exe" \\r
150     "" "$INSTDIR\Uninstall.exe" 0 SW_SHOWNORMAL \\r
151     "" "Uninstall XBMC."\r
152   \r
153   WriteINIStr "$SMPROGRAMS\$StartMenuFolder\Visit XBMC Online.url" "InternetShortcut" "URL" "http://xbmc.org"\r
154   !insertmacro MUI_STARTMENU_WRITE_END  \r
155   \r
156   ;add entry to add/remove programs\r
157   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
158                  "DisplayName" "XBMC Media Center"\r
159   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
160                  "UninstallString" "$INSTDIR\uninstall.exe"\r
161   WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
162                  "NoModify" 1\r
163   WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
164                  "NoRepair" 1\r
165   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
166                  "InstallLocation" "$INSTDIR"\r
167   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
168                  "DisplayIcon" "$INSTDIR\XBMC.exe,0"\r
169   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
170                  "Publisher" "Team XBMC"\r
171   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
172                  "HelpLink" "http://xbmc.org/forum/index.php"\r
173   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
174                  "HelpLink" "http://xbmc.org/forum/index.php"\r
175   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC" \\r
176                  "URLInfoAbout" "http://xbmc.org"\r
177 SectionEnd\r
178 \r
179 SectionGroup "Language" SecLanguages\r
180 Section "English" SecLanguageEnglish\r
181   SectionIn 1 2 #section is in installtype Full and Minimal\r
182   SectionIn RO\r
183   SetOutPath "$INSTDIR\language\English"\r
184   File /r "${xbmc_root}\Xbmc\language\English\*.*"\r
185 SectionEnd\r
186 ;languages.nsi is generated by genNsisIncludes.bat\r
187 !include /nonfatal "languages.nsi"\r
188 SectionGroupEnd\r
189 \r
190 SectionGroup "Skins" SecSkins\r
191 Section "PM3.HD" SecSkinPM3.HD\r
192   SectionIn 1 2 #section is in installtype Full and Minimal\r
193   SectionIn RO\r
194   SetOutPath "$INSTDIR\skin\PM3.HD"\r
195   File /r "${xbmc_root}\Xbmc\skin\PM3.HD\*.*"\r
196 SectionEnd\r
197 ;skins.nsi is generated by genNsisIncludes.bat\r
198 !include /nonfatal "skins.nsi"\r
199 SectionGroupEnd\r
200 \r
201 ;SectionGroup "Scripts" SecScripts\r
202 ;scripts.nsi is generated by genNsisIncludes.bat\r
203 !include /nonfatal "scripts.nsi"\r
204 ;SectionGroupEnd\r
205 \r
206 ;SectionGroup "Plugins" SecPlugins\r
207 ;plugins.nsi is generated by genNsisIncludes.bat\r
208 !include /nonfatal "plugins.nsi"\r
209 ;SectionGroupEnd\r
210 \r
211 ;--------------------------------\r
212 ;Descriptions\r
213 \r
214   ;Language strings\r
215   LangString DESC_SecXBMC ${LANG_ENGLISH} "XBMC Media Center."\r
216 \r
217   ;Assign language strings to sections\r
218   !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
219   !insertmacro MUI_DESCRIPTION_TEXT ${SecXBMC} $(DESC_SecXBMC)\r
220   !insertmacro MUI_FUNCTION_DESCRIPTION_END\r
221   \r
222 ;--------------------------------\r
223 ; Profile settings\r
224 \r
225 Var PageProfileDialog\r
226 Var PageProfileRadioButton1\r
227 Var PageProfileRadioButton2\r
228 \r
229 Function ProfileSettings\r
230   !insertmacro MUI_HEADER_TEXT "Choose Profile path" "Choose where XBMC should store it's data."\r
231   nsDialogs::Create /NOUNLOAD 1018\r
232   Pop $PageProfileDialog\r
233 \r
234   ${If} $PageProfileDialog == error\r
235     Abort\r
236   ${EndIf}\r
237   
238   ${NSD_CreateRadioButton} 0 10u 100% 32u "Store data in $APPDATA\XBMC\ $\nDefault mode. XBMC stores all data and plugins in the user profile directory."\r
239   Pop $PageProfileRadioButton1\r
240   \r
241   ${NSD_CreateRadioButton} 0 40u 100% 32u "Store data in $INSTDIR\ $\nPortable mode. XBMC stores everything in the XBMC installation directory. $\nNote: This will require XBMC started with administrator rights."\r
242   Pop $PageProfileRadioButton2\r
243   \r
244   ${If} $PageProfileState == "1"\r
245     ${NSD_SetState} $PageProfileRadioButton2 ${BST_CHECKED} \r
246   ${Else}\r
247     ${NSD_SetState} $PageProfileRadioButton1 ${BST_CHECKED} \r
248   ${EndIf}\r
249 \r
250 \r
251   nsDialogs::Show\r
252 FunctionEnd\r
253 \r
254 Function ProfileSettingsLeave\r
255   ${NSD_GetState} $PageProfileRadioButton1 $0\r
256   ${If} $0 == ${BST_CHECKED}\r
257     StrCpy $PageProfileState  "0"\r
258   ${EndIf}\r
259   ${NSD_GetState} $PageProfileRadioButton2 $0\r
260   ${If} $0 == ${BST_CHECKED}\r
261     StrCpy $PageProfileState  "1"\r
262   ${EndIf} \r
263 FunctionEnd\r
264 \r
265 ;--------------------------------\r
266 ;Uninstaller Section\r
267 \r
268 Var UnPageProfileDialog\r
269 Var UnPageProfileCheckbox\r
270 Var UnPageProfileCheckbox_State\r
271 Var UnPageProfileEditBox\r
272 \r
273 Function un.UnPageProfile\r
274     !insertmacro MUI_HEADER_TEXT "Uninstall XBMC Media Center" "Remove XBMC's profile folder from your computer."\r
275   nsDialogs::Create /NOUNLOAD 1018\r
276   Pop $UnPageProfileDialog\r
277 \r
278   ${If} $UnPageProfileDialog == error\r
279     Abort\r
280   ${EndIf}\r
281 \r
282   ${NSD_CreateLabel} 0 0 100% 12u "Do you want to delete the profile folder?"\r
283   Pop $0\r
284 \r
285   ${NSD_CreateText} 0 13u 100% 12u "$APPDATA\XBMC\"\r
286   Pop $UnPageProfileEditBox\r
287     SendMessage $UnPageProfileEditBox ${EM_SETREADONLY} 1 0\r
288 \r
289   ${NSD_CreateLabel} 0 46u 100% 24u "Leave unchecked to keep the profile folder for later use or check to delete the profile folder."\r
290   Pop $0\r
291 \r
292   ${NSD_CreateCheckbox} 0 71u 100% 8u "Yes, also delete the profile folder."\r
293   Pop $UnPageProfileCheckbox\r
294   \r
295 \r
296   nsDialogs::Show\r
297 FunctionEnd\r
298 \r
299 Function un.UnPageProfileLeave\r
300 ${NSD_GetState} $UnPageProfileCheckbox $UnPageProfileCheckbox_State\r
301 FunctionEnd\r
302 \r
303 Section "Uninstall"\r
304 \r
305   SetShellVarContext current\r
306 \r
307   ;ADD YOUR OWN FILES HERE...\r
308   Delete "$INSTDIR\XBMC.exe"\r
309   Delete "$INSTDIR\copying.txt"\r
310   Delete "$INSTDIR\known_issues.txt"\r
311   Delete "$INSTDIR\LICENSE.GPL"\r
312   Delete "$INSTDIR\glew32.dll"\r
313   Delete "$INSTDIR\SDL.dll"\r
314   Delete "$INSTDIR\xbmc.log"\r
315   Delete "$INSTDIR\xbmc.old.log"\r
316   Delete "$INSTDIR\msvcp71.dll"\r
317   Delete "$INSTDIR\msvcr71.dll"\r
318   RMDir /r "$INSTDIR\credits"\r
319   RMDir /r "$INSTDIR\language"\r
320   RMDir /r "$INSTDIR\media"\r
321   RMDir /r "$INSTDIR\plugins"\r
322   RMDir /r "$INSTDIR\scripts"\r
323   RMDir /r "$INSTDIR\skin"\r
324   RMDir /r "$INSTDIR\sounds"\r
325   RMDir /r "$INSTDIR\system"\r
326   RMDir /r "$INSTDIR\visualisations"\r
327   RMDir /r "$INSTDIR\web"\r
328   RMDir /r "$INSTDIR\cache"\r
329 \r
330   Delete "$INSTDIR\Uninstall.exe"\r
331   \r
332 ;Uninstall User Data if option is checked, otherwise skip\r
333   ${If} $UnPageProfileCheckbox_State == ${BST_CHECKED}\r
334     RMDir /r "$INSTDIR\userdata"  \r
335     RMDir "$INSTDIR"\r
336     RMDir /r "$APPDATA\XBMC\"\r
337   ${Else}\r
338 ;Even if userdata is kept in %appdata%\xbmc\userdata, the $INSTDIR\userdata should be cleaned up on uninstall if not used\r
339 ;If guisettings.xml exists in the XBMC\userdata directory, do not delete XBMC\userdata directory\r
340 ;If that file does not exists, then delete that folder and $INSTDIR\r
341     IfFileExists $INSTDIR\userdata\guisettings.xml +3\r
342       RMDir /r "$INSTDIR\userdata"  \r
343       RMDir "$INSTDIR"\r
344   ${EndIf}\r
345 \r
346   \r
347   !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder\r
348   Delete "$SMPROGRAMS\$StartMenuFolder\XBMC.lnk"\r
349   Delete "$SMPROGRAMS\$StartMenuFolder\XBMC (Windowed).lnk"\r
350   Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall XBMC.lnk"\r
351   Delete "$SMPROGRAMS\$StartMenuFolder\Visit XBMC Online.url"\r
352   RMDir "$SMPROGRAMS\$StartMenuFolder"  \r
353   DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\XBMC"\r
354 \r
355   DeleteRegKey /ifempty HKCU "Software\XBMC"\r
356 \r
357 SectionEnd\r