b6dd8f4c4b43759ea003d308423700e391b99f49
[blender.git] / release / windows / installer / 00.sconsblender.nsi
1 ;
2 ; $Id$
3 ;
4 ; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net)
5 ;
6
7 !include "MUI.nsh"
8
9 Name "Blender VERSION" 
10
11 !define MUI_ABORTWARNING
12
13 !define MUI_WELCOMEPAGE_TEXT  "This wizard will guide you through the installation of Blender.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\nNote to Win2k/XP users: You may require administrator privileges to install Blender successfully."
14 !define MUI_WELCOMEFINISHPAGE_BITMAP "01.installer.bmp"
15 !define MUI_HEADERIMAGE
16 !define MUI_HEADERIMAGE_BITMAP  "00.header.bmp"
17 !define MUI_COMPONENTSPAGE_SMALLDESC
18 !define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe"
19 !define MUI_CHECKBITMAP "00.checked.bmp"
20
21 !insertmacro MUI_PAGE_WELCOME
22 !insertmacro MUI_PAGE_LICENSE "DISTDIR\Copyright.txt"
23 !insertmacro MUI_PAGE_COMPONENTS
24     
25 !insertmacro MUI_PAGE_DIRECTORY
26 Page custom DataLocation
27 !insertmacro MUI_PAGE_INSTFILES
28 !insertmacro MUI_PAGE_FINISH
29   
30 !insertmacro MUI_UNPAGE_WELCOME
31 !insertmacro MUI_UNPAGE_CONFIRM
32 !insertmacro MUI_UNPAGE_INSTFILES
33 !insertmacro MUI_UNPAGE_FINISH
34
35
36 Icon "00.installer.ico"
37 UninstallIcon "00.installer.ico"
38
39 ;--------------------------------
40 ;Languages
41  
42   !insertmacro MUI_LANGUAGE "English"
43     
44 ;--------------------------------
45 ;Language Strings
46
47   ;Description
48   LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder."
49   LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)"
50   LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop."
51   LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc."
52   LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location"
53 ;--------------------------------
54 ;Data
55
56 Caption "Blender VERSION Installer"
57 OutFile "DISTDIR\..\blender-VERSION-windows.exe"
58
59 InstallDir "$PROGRAMFILES\Blender Foundation\Blender"
60
61 BrandingText "http://www.blender.org/bf"
62 ComponentText "This will install Blender VERSION on your computer."
63
64 DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder."
65
66 ; GetWindowsVersion
67 ;
68 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
69 ; Updated by Joost Verburg
70 ;
71 ; Returns on top of stack
72 ;
73 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
74 ; or
75 ; '' (Unknown Windows Version)
76 ;
77 ; Usage:
78 ;   Call GetWindowsVersion
79 ;   Pop $R0
80 ;   ; at this point $R0 is "NT 4.0" or whatnot
81
82 Function GetWindowsVersion
83
84   Push $R0
85   Push $R1
86
87   ReadRegStr $R0 HKLM \
88   "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
89
90   IfErrors 0 lbl_winnt
91    
92   ; we are not NT
93   ReadRegStr $R0 HKLM \
94   "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
95  
96   StrCpy $R1 $R0 1
97   StrCmp $R1 '4' 0 lbl_error
98  
99   StrCpy $R1 $R0 3
100  
101   StrCmp $R1 '4.0' lbl_win32_95
102   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
103  
104   lbl_win32_95:
105     StrCpy $R0 '95'
106   Goto lbl_done
107  
108   lbl_win32_98:
109     StrCpy $R0 '98'
110   Goto lbl_done
111  
112   lbl_win32_ME:
113     StrCpy $R0 'ME'
114   Goto lbl_done
115  
116   lbl_winnt:
117
118   StrCpy $R1 $R0 1
119  
120   StrCmp $R1 '3' lbl_winnt_x
121   StrCmp $R1 '4' lbl_winnt_x
122  
123   StrCpy $R1 $R0 3
124  
125   StrCmp $R1 '5.0' lbl_winnt_2000
126   StrCmp $R1 '5.1' lbl_winnt_XP
127   StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
128  
129   lbl_winnt_x:
130     StrCpy $R0 "NT $R0" 6
131   Goto lbl_done
132  
133   lbl_winnt_2000:
134     Strcpy $R0 '2000'
135   Goto lbl_done
136  
137   lbl_winnt_XP:
138     Strcpy $R0 'XP'
139   Goto lbl_done
140  
141   lbl_winnt_2003:
142     Strcpy $R0 '2003'
143   Goto lbl_done
144  
145   lbl_error:
146     Strcpy $R0 ''
147   lbl_done:
148  
149   Pop $R1
150   Exch $R0
151
152 FunctionEnd
153
154 Var BLENDERHOME
155 Var winversion
156
157 Function SetWinXPPath
158   StrCpy $BLENDERHOME "$PROFILE\Application Data\Blender Foundation\Blender"
159 FunctionEnd
160
161 Function SetWin9xPath
162   StrCpy $BLENDERHOME $INSTDIR
163 FunctionEnd
164
165 Function .onInit
166   Call GetWindowsVersion
167   Pop $R0
168   Strcpy $winversion $R0
169   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "data.ini"
170 FunctionEnd
171
172 Var HWND
173 Var DLGITEM
174 Var is2KXP
175
176 Function DataLocation
177   !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" ""
178
179   ; Set default choice
180   !insertmacro MUI_INSTALLOPTIONS_WRITE "data.ini" "Field 3" "State" 1
181   
182   StrCpy $R1 $winversion 2
183   StrCmp $R1 "NT" do_win2kxp
184   StrCmp $winversion "2000" do_win2kxp
185   StrCmp $winversion "XP" do_win2kxp
186   StrCmp $winversion "2003" do_win2kxp
187   
188   ;else...
189   Strcpy $is2KXP "false"
190
191   Goto continue
192
193   do_win2kXP:
194     Strcpy $is2KXP "true"
195     
196   continue: 
197   
198   !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "data.ini"
199   Pop $HWND
200   
201   Strcmp $is2KXP "true" do_dlg
202   
203   ; Disable App Data option on Win9x
204   
205   GetDlgItem $DLGITEM $HWND 1201
206   EnableWindow $DLGITEM 0  
207   
208   do_dlg:
209   
210     !insertmacro MUI_INSTALLOPTIONS_SHOW
211     !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 2" "State" ; App Dir
212     Strcmp $R0 1 do_app_data
213     !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 3" "State" ; Inst Dir
214     Strcmp $R0 1 do_inst_path
215     !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 4" "State" ; Home Dir
216     Strcmp $R0 1 do_home_path
217   
218   Goto end
219   
220   do_app_data:
221     Call SetWinXPPath
222     Goto end
223   do_home_path:
224     ReadEnvStr $BLENDERHOME "HOME"
225     Goto end
226   do_inst_path:
227     Call SetWin9xPath
228   end:
229   
230 FunctionEnd
231
232 Section "Blender-VERSION (required)" SecCopyUI
233   SectionIn RO
234     
235 ; Sets $BLENDERHOME to suit Windows version...
236
237   ; Set output path to the installation directory.
238   SetOutPath $INSTDIR
239   ; Put file there
240  [ROOTDIRCONTS]
241      
242   SetOutPath $BLENDERHOME\.blender
243   [DOTBLENDERCONTS]
244   
245   SetOutPath $BLENDERHOME\.blender\scripts
246   [SCRIPTCONTS]
247   SetOutPath $BLENDERHOME\.blender\bpydata
248   [BPYCONTS]
249   
250   ; Language files
251   [LANGUAGECONTS]
252   
253   SetOutPath $INSTDIR
254   ; Write the installation path into the registry
255   WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR"
256   ; Write the uninstall keys for Windows
257   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)"
258   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
259   WriteUninstaller "uninstall.exe"
260 SectionEnd
261
262 Section "Add Start Menu shortcuts" Section2
263   SetOutPath $INSTDIR
264   CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"
265   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
266   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0
267   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0
268   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0
269   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0
270   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url"
271 SectionEnd
272
273 Section "Add Desktop Blender-VERSION shortcut" Section3
274   SetOutPath $INSTDIR
275   CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
276 SectionEnd
277
278 Section "Open .blend files with Blender-VERSION" Section4
279   SetOutPath $INSTDIR
280   ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b"
281   ;do it the manual way! ;)
282   
283   WriteRegStr HKCR ".blend" "" "blendfile"
284   WriteRegStr HKCR "blendfile" "" "Blender .blend File"
285   WriteRegStr HKCR "blendfile\shell" "" "open"
286   WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1
287   WriteRegStr HKCR "blendfile\shell\open\command" "" \
288     '"$INSTDIR\blender.exe" "%1"'
289   
290 SectionEnd
291
292 UninstallText "This will uninstall Blender VERSION. Hit next to continue."
293
294 Section "Uninstall"
295   ; remove registry keys
296   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
297   DeleteRegKey HKLM SOFTWARE\BlenderFoundation
298   ; remove files
299   [DELROOTDIRCONTS]
300   
301   Delete $INSTDIR\.blender\.bfont.ttf
302   Delete $INSTDIR\.blender\.Blanguages
303   ; remove shortcuts, if any.
304   Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
305   Delete "$DESKTOP\Blender.lnk"
306   ; remove directories used.
307   RMDir /r $INSTDIR\.blender\locale 
308   RMDir /r $INSTDIR\.blender\scripts
309   RMDir /r $INSTDIR\.blender\bpydata
310   RMDir $INSTDIR\.blender
311   RMDir "$SMPROGRAMS\Blender Foundation\Blender"
312   RMDir "$SMPROGRAMS\Blender Foundation"
313   RMDir "$INSTDIR"
314   RMDir "$INSTDIR\.."
315 SectionEnd
316
317 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
318   !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI)
319   !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
320   !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
321   !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
322 !insertmacro MUI_FUNCTION_DESCRIPTION_END