Orange:
[blender.git] / release / windows / installer / 00.blender.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\..\VERSION\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   File DISTDIR\blender.exe
241   File DISTDIR\blenderplayer.exe
242   File DISTDIR\python23.dll
243   File DISTDIR\python23.zip
244   File DISTDIR\sdl.dll
245   File DISTDIR\gnu_gettext.dll
246   File DISTDIR\Copyright.txt
247   File DISTDIR\Blender.html
248   File DISTDIR\python-license.txt
249   File DISTDIR\Release_SHORTVERS.txt
250   File DISTDIR\GPL-license.txt
251   File DISTDIR\Help.url
252   File DISTDIR\zlib.pyd
253      
254   SetOutPath $BLENDERHOME\.blender
255   File DISTDIR\.blender\.bfont.ttf
256   
257   SetOutPath $BLENDERHOME\.blender\scripts
258   File DISTDIR\.blender\scripts\ac3d_export.py
259   File DISTDIR\.blender\scripts\ac3d_import.py
260   File DISTDIR\.blender\scripts\Apply_def.py
261   File DISTDIR\.blender\scripts\Axiscopy.py
262   File DISTDIR\.blender\scripts\batch_name_edit.py
263   File DISTDIR\.blender\scripts\bevel_center.py
264   File DISTDIR\.blender\scripts\blender2cal3d.py
265   File DISTDIR\.blender\scripts\bvh_export.py
266   File DISTDIR\.blender\scripts\bvh_import.py
267   File DISTDIR\.blender\scripts\clean_mesh.py
268   File DISTDIR\.blender\scripts\config.py
269   File DISTDIR\.blender\scripts\DirectX8Exporter.py
270   File DISTDIR\.blender\scripts\DirectXExporter.py
271   File DISTDIR\.blender\scripts\disp_paint.py
272   File DISTDIR\.blender\scripts\doc_browser.py
273   File DISTDIR\.blender\scripts\fixfromarmature.py
274   File DISTDIR\.blender\scripts\help_browser.py
275   File DISTDIR\.blender\scripts\help_getting_started.py
276   File DISTDIR\.blender\scripts\help_manual.py
277   File DISTDIR\.blender\scripts\help_py_reference.py
278   File DISTDIR\.blender\scripts\help_release_notes.py
279   File DISTDIR\.blender\scripts\help_tutorials.py
280   File DISTDIR\.blender\scripts\help_web_blender.py
281   File DISTDIR\.blender\scripts\help_web_devcomm.py
282   File DISTDIR\.blender\scripts\help_web_eshop.py
283   File DISTDIR\.blender\scripts\help_web_usercomm.py
284   File DISTDIR\.blender\scripts\hotkeys.py
285   File DISTDIR\.blender\scripts\kloputils.py
286   File DISTDIR\.blender\scripts\knife.py
287   File DISTDIR\.blender\scripts\lightwave_export.py
288   File DISTDIR\.blender\scripts\lightwave_import.py
289   File DISTDIR\.blender\scripts\nendo_export.py
290   File DISTDIR\.blender\scripts\nendo_import.py
291   File DISTDIR\.blender\scripts\obdatacopier.py
292   File DISTDIR\.blender\scripts\obj_export.py
293   File DISTDIR\.blender\scripts\obj_import.py
294   File DISTDIR\.blender\scripts\off_export.py
295   File DISTDIR\.blender\scripts\off_import.py
296   File DISTDIR\.blender\scripts\paths_import.py
297   File DISTDIR\.blender\scripts\radiosity_export.py
298   File DISTDIR\.blender\scripts\radiosity_import.py
299   File DISTDIR\.blender\scripts\raw_export.py
300   File DISTDIR\.blender\scripts\raw_import.py
301   File DISTDIR\.blender\scripts\renameobjectbyblock.py
302   File DISTDIR\.blender\scripts\rvk1_torvk2.py
303   File DISTDIR\.blender\scripts\save_theme.py
304   File DISTDIR\.blender\scripts\sel_same.py
305   File DISTDIR\.blender\scripts\skin.py
306   File DISTDIR\.blender\scripts\slp_import.py
307   File DISTDIR\.blender\scripts\sysinfo.py
308   File DISTDIR\.blender\scripts\tex2uvbaker.py
309   File DISTDIR\.blender\scripts\truespace_export.py
310   File DISTDIR\.blender\scripts\truespace_import.py
311   File DISTDIR\.blender\scripts\unweld.py
312   File DISTDIR\.blender\scripts\uv_export.py
313   File DISTDIR\.blender\scripts\UVpaint05.py
314   File DISTDIR\.blender\scripts\videoscape_export.py
315   File DISTDIR\.blender\scripts\vrml97_export.py
316   File DISTDIR\.blender\scripts\wings_export.py
317   File DISTDIR\.blender\scripts\wings_import.py
318   File DISTDIR\.blender\scripts\wrl2export.py
319   SetOutPath $BLENDERHOME\.blender\scripts\bpymodules
320   File DISTDIR\.blender\scripts\bpymodules\ai2obj.py
321   File DISTDIR\.blender\scripts\bpymodules\BPyBlender.py
322   File DISTDIR\.blender\scripts\bpymodules\BPyRegistry.py
323   File DISTDIR\.blender\scripts\bpymodules\eps2obj.py
324   File DISTDIR\.blender\scripts\bpymodules\gimp2obj.py
325   File DISTDIR\.blender\scripts\bpymodules\meshtools.py
326   File DISTDIR\.blender\scripts\bpymodules\svg2obj.py
327   SetOutPath $BLENDERHOME\.blender\scripts\bpydata
328   File DISTDIR\.blender\scripts\bpydata\readme.txt
329   File DISTDIR\.blender\scripts\bpydata\KUlang.txt
330   SetOutPath $BLENDERHOME\.blender\scripts\bpydata\config
331   File DISTDIR\.blender\scripts\bpydata\config\readme.txt
332   
333   ; Additional Languages files
334   SetOutPath $BLENDERHOME\.blender
335   File DISTDIR\.blender\.Blanguages
336   SetOutPath $BLENDERHOME\.blender\locale\ca\LC_MESSAGES
337   File DISTDIR\.blender\locale\ca\LC_MESSAGES\blender.mo
338   SetOutPath $BLENDERHOME\.blender\locale\cs\LC_MESSAGES
339   File DISTDIR\.blender\locale\cs\LC_MESSAGES\blender.mo
340   SetOutPath $BLENDERHOME\.blender\locale\de\LC_MESSAGES
341   File DISTDIR\.blender\locale\de\LC_MESSAGES\blender.mo
342   SetOutPath $BLENDERHOME\.blender\locale\fi\LC_MESSAGES
343   File DISTDIR\.blender\locale\fi\LC_MESSAGES\blender.mo
344   SetOutPath $BLENDERHOME\.blender\locale\es\LC_MESSAGES
345   File DISTDIR\.blender\locale\es\LC_MESSAGES\blender.mo
346   SetOutPath $BLENDERHOME\.blender\locale\fr\LC_MESSAGES
347   File DISTDIR\.blender\locale\fr\LC_MESSAGES\blender.mo
348   SetOutPath $BLENDERHOME\.blender\locale\it\LC_MESSAGES
349   File DISTDIR\.blender\locale\it\LC_MESSAGES\blender.mo
350   SetOutPath $BLENDERHOME\.blender\locale\ja\LC_MESSAGES
351   File DISTDIR\.blender\locale\ja\LC_MESSAGES\blender.mo
352   SetOutPath $BLENDERHOME\.blender\locale\nl\LC_MESSAGES
353   File DISTDIR\.blender\locale\nl\LC_MESSAGES\blender.mo
354   SetOutPath $BLENDERHOME\.blender\locale\sv\LC_MESSAGES
355   File DISTDIR\.blender\locale\sv\LC_MESSAGES\blender.mo
356   SetOutPath $BLENDERHOME\.blender\locale\zh_cn\LC_MESSAGES
357   File DISTDIR\.blender\locale\zh_cn\LC_MESSAGES\blender.mo
358   SetOutPath $BLENDERHOME\.blender\locale\pt_br\LC_MESSAGES
359   File DISTDIR\.blender\locale\pt_br\LC_MESSAGES\blender.mo
360   SetOutPath $BLENDERHOME\.blender\locale\hr_HR\LC_MESSAGES
361   File DISTDIR\.blender\locale\hr_HR\LC_MESSAGES\blender.mo
362   SetOutPath $BLENDERHOME\.blender\locale\ru\LC_MESSAGES
363   File DISTDIR\.blender\locale\ru\LC_MESSAGES\blender.mo
364   SetOutPath $BLENDERHOME\.blender\locale\pl\LC_MESSAGES
365   File DISTDIR\.blender\locale\pl\LC_MESSAGES\blender.mo
366   
367   SetOutPath $INSTDIR
368   ; Write the installation path into the registry
369   WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR"
370   ; Write the uninstall keys for Windows
371   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)"
372   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
373   WriteUninstaller "uninstall.exe"
374 SectionEnd
375
376 Section "Add Start Menu shortcuts" Section2
377   SetOutPath $INSTDIR
378   CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"
379   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
380   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0
381   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0
382   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0
383   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0
384   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url"
385 SectionEnd
386
387 Section "Add Desktop Blender-VERSION shortcut" Section3
388   SetOutPath $INSTDIR
389   CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
390 SectionEnd
391
392 Section "Open .blend files with Blender-VERSION" Section4
393   SetOutPath $INSTDIR
394   ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b"
395   ;do it the manual way! ;)
396   
397   WriteRegStr HKCR ".blend" "" "blendfile"
398   WriteRegStr HKCR "blendfile" "" "Blender .blend File"
399   WriteRegStr HKCR "blendfile\shell" "" "open"
400   WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1
401   WriteRegStr HKCR "blendfile\shell\open\command" "" \
402     '"$INSTDIR\blender.exe" "%1"'
403   
404 SectionEnd
405
406 UninstallText "This will uninstall Blender VERSION. Hit next to continue."
407
408 Section "Uninstall"
409   ; remove registry keys
410   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
411   DeleteRegKey HKLM SOFTWARE\BlenderFoundation
412   ; remove files
413   Delete $INSTDIR\blender.exe
414   Delete $INSTDIR\blenderplayer.exe
415   Delete $INSTDIR\python23.dll
416   Delete $INSTDIR\python23.zip
417   Delete $INSTDIR\sdl.dll
418   Delete $INSTDIR\gnu_gettext.dll
419   Delete $INSTDIR\Copyright.txt
420   Delete $INSTDIR\Blender.html
421   Delete $INSTDIR\GPL-license.txt
422   Delete $INSTDIR\python-license.txt
423   Delete $INSTDIR\Release_SHORTVERS.txt
424   Delete $INSTDIR\Help.url
425   Delete $INSTDIR\uninstall.exe
426   Delete $INSTDIR\zlib.pyd
427   Delete $INSTDIR\.blender\.bfont.ttf
428   Delete $INSTDIR\.blender\.Blanguages
429   ; remove shortcuts, if any.
430   Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
431   Delete "$DESKTOP\Blender.lnk"
432   ; remove directories used.
433   RMDir /r $INSTDIR\.blender\locale 
434   RMDir /r $INSTDIR\.blender\scripts
435   RMDir /r $INSTDIR\.blender\scripts\bpydata
436   RMDir /r $INSTDIR\.blender\scripts\bpydata\config
437   RMDir /r $INSTDIR\.blender\scripts\bpymodules
438   RMDir $INSTDIR\.blender
439   RMDir "$SMPROGRAMS\Blender Foundation\Blender"
440   RMDir "$SMPROGRAMS\Blender Foundation"
441   RMDir "$INSTDIR"
442   RMDir "$INSTDIR\.."
443 SectionEnd
444
445 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
446   !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI)
447   !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
448   !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
449   !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
450 !insertmacro MUI_FUNCTION_DESCRIPTION_END