Orange:
[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 SilentUnInstall normal
67
68 ; GetWindowsVersion
69 ;
70 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
71 ; Updated by Joost Verburg
72 ;
73 ; Returns on top of stack
74 ;
75 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
76 ; or
77 ; '' (Unknown Windows Version)
78 ;
79 ; Usage:
80 ;   Call GetWindowsVersion
81 ;   Pop $R0
82 ;   ; at this point $R0 is "NT 4.0" or whatnot
83
84 Function GetWindowsVersion
85
86   Push $R0
87   Push $R1
88
89   ReadRegStr $R0 HKLM \
90   "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
91
92   IfErrors 0 lbl_winnt
93    
94   ; we are not NT
95   ReadRegStr $R0 HKLM \
96   "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
97  
98   StrCpy $R1 $R0 1
99   StrCmp $R1 '4' 0 lbl_error
100  
101   StrCpy $R1 $R0 3
102  
103   StrCmp $R1 '4.0' lbl_win32_95
104   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
105  
106   lbl_win32_95:
107     StrCpy $R0 '95'
108   Goto lbl_done
109  
110   lbl_win32_98:
111     StrCpy $R0 '98'
112   Goto lbl_done
113  
114   lbl_win32_ME:
115     StrCpy $R0 'ME'
116   Goto lbl_done
117  
118   lbl_winnt:
119
120   StrCpy $R1 $R0 1
121  
122   StrCmp $R1 '3' lbl_winnt_x
123   StrCmp $R1 '4' lbl_winnt_x
124  
125   StrCpy $R1 $R0 3
126  
127   StrCmp $R1 '5.0' lbl_winnt_2000
128   StrCmp $R1 '5.1' lbl_winnt_XP
129   StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
130  
131   lbl_winnt_x:
132     StrCpy $R0 "NT $R0" 6
133   Goto lbl_done
134  
135   lbl_winnt_2000:
136     Strcpy $R0 '2000'
137   Goto lbl_done
138  
139   lbl_winnt_XP:
140     Strcpy $R0 'XP'
141   Goto lbl_done
142  
143   lbl_winnt_2003:
144     Strcpy $R0 '2003'
145   Goto lbl_done
146  
147   lbl_error:
148     Strcpy $R0 ''
149   lbl_done:
150  
151   Pop $R1
152   Exch $R0
153
154 FunctionEnd
155
156 Var BLENDERHOME
157 Var winversion
158
159 Function SetWinXPPath
160   StrCpy $BLENDERHOME "$PROFILE\Application Data\Blender Foundation\Blender"
161 FunctionEnd
162
163 Function SetWin9xPath
164   StrCpy $BLENDERHOME $INSTDIR
165 FunctionEnd
166
167 Function .onInit
168   Call GetWindowsVersion
169   Pop $R0
170   Strcpy $winversion $R0
171   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "data.ini"
172 FunctionEnd
173
174 Var HWND
175 Var DLGITEM
176 Var is2KXP
177
178 Function DataLocation
179   !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" ""
180
181   ; Set default choice
182   !insertmacro MUI_INSTALLOPTIONS_WRITE "data.ini" "Field 3" "State" 1
183   
184   StrCpy $R1 $winversion 2
185   StrCmp $R1 "NT" do_win2kxp
186   StrCmp $winversion "2000" do_win2kxp
187   StrCmp $winversion "XP" do_win2kxp
188   StrCmp $winversion "2003" do_win2kxp
189   
190   ;else...
191   Strcpy $is2KXP "false"
192
193   Goto continue
194
195   do_win2kXP:
196     Strcpy $is2KXP "true"
197     
198   continue: 
199   
200   !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "data.ini"
201   Pop $HWND
202   
203   Strcmp $is2KXP "true" do_dlg
204   
205   ; Disable App Data option on Win9x
206   
207   GetDlgItem $DLGITEM $HWND 1201
208   EnableWindow $DLGITEM 0  
209   
210   do_dlg:
211   
212     !insertmacro MUI_INSTALLOPTIONS_SHOW
213     !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 2" "State" ; App Dir
214     Strcmp $R0 1 do_app_data
215     !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 3" "State" ; Inst Dir
216     Strcmp $R0 1 do_inst_path
217     !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 4" "State" ; Home Dir
218     Strcmp $R0 1 do_home_path
219   
220   Goto end
221   
222   do_app_data:
223     Call SetWinXPPath
224     Goto end
225   do_home_path:
226     ReadEnvStr $BLENDERHOME "HOME"
227     Goto end
228   do_inst_path:
229     Call SetWin9xPath
230   end:
231   
232 FunctionEnd
233
234 Section "Blender-VERSION (required)" SecCopyUI
235   SectionIn RO
236     
237 ; Sets $BLENDERHOME to suit Windows version...
238
239   ; Set output path to the installation directory.
240   SetOutPath $INSTDIR
241   ; Put file there
242  [ROOTDIRCONTS]
243      
244   SetOutPath $BLENDERHOME\.blender
245   [DOTBLENDERCONTS]
246   
247   SetOutPath $BLENDERHOME\.blender\scripts
248   [SCRIPTCONTS]
249   SetOutPath $BLENDERHOME\.blender\scripts\bpymodules
250   [SCRIPTMODCONTS]
251   SetOutPath $BLENDERHOME\.blender\scripts\bpydata
252   [SCRIPTDATACONTS]
253   SetOutPath $BLENDERHOME\.blender\scripts\bpydata\config
254   [SCRIPTDATACFGCONTS]
255   SetOutPath $BLENDERHOME\plugins\include
256   [PLUGINCONTS]
257   
258   ; Language files
259   [LANGUAGECONTS]
260   
261   SetOutPath $INSTDIR
262   ; Write the installation path into the registry
263   WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR"
264   ; Write the uninstall keys for Windows
265   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)"
266   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
267   WriteUninstaller "uninstall.exe"
268 SectionEnd
269
270 Section "Add Start Menu shortcuts" Section2
271   SetOutPath $INSTDIR
272   CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"
273   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
274   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0
275   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0
276   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0
277   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0
278   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url"
279 SectionEnd
280
281 Section "Add Desktop Blender-VERSION shortcut" Section3
282   SetOutPath $INSTDIR
283   CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
284 SectionEnd
285
286 Section "Open .blend files with Blender-VERSION" Section4
287   SetOutPath $INSTDIR
288   ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b"
289   ;do it the manual way! ;)
290   
291   WriteRegStr HKCR ".blend" "" "blendfile"
292   WriteRegStr HKCR "blendfile" "" "Blender .blend File"
293   WriteRegStr HKCR "blendfile\shell" "" "open"
294   WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1
295   WriteRegStr HKCR "blendfile\shell\open\command" "" \
296     '"$INSTDIR\blender.exe" "%1"'
297   
298 SectionEnd
299
300 UninstallText "This will uninstall Blender VERSION. Hit next to continue."
301
302 Section "Uninstall"
303   ; remove registry keys
304   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
305   DeleteRegKey HKLM SOFTWARE\BlenderFoundation
306   ; remove files
307   [DELROOTDIRCONTS]
308   
309   Delete $INSTDIR\.blender\.bfont.ttf
310   Delete $INSTDIR\.blender\.Blanguages
311   ; remove shortcuts, if any.
312   Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
313   Delete "$DESKTOP\Blender.lnk"
314   ; remove directories used.
315   RMDir /r $INSTDIR\.blender\locale
316   MessageBox MB_YESNO "Erase .blender\scripts folder? (ALL contents will be erased!)" IDNO Next
317   RMDir /r $INSTDIR\.blender\scripts
318   RMDir /r $INSTDIR\.blender\scripts\bpymodules
319   RMDir /r $INSTDIR\.blender\scripts\bpydata
320   RMDir /r $INSTDIR\.blender\scripts\bpydata\config
321 Next:
322   RMDir /r $INSTDIR\plugins\include
323   RMDir /r $INSTDIR\plugins
324   RMDir $INSTDIR\.blender
325   RMDir "$SMPROGRAMS\Blender Foundation\Blender"
326   RMDir "$SMPROGRAMS\Blender Foundation"
327   RMDir "$INSTDIR"
328   RMDir "$INSTDIR\.."
329 SectionEnd
330
331 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
332   !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI)
333   !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
334   !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
335   !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
336 !insertmacro MUI_FUNCTION_DESCRIPTION_END