BGE Animation:
[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 SetCompressor /SOLID lzma
8
9 Name "Blender [VERSION]" 
10
11 RequestExecutionLevel admin
12
13 !include "MUI.nsh"
14 !include "WinVer.nsh"
15 !include "FileFunc.nsh"
16 !include "WordFunc.nsh"
17 !include "nsDialogs.nsh"
18 !include "x64.nsh"
19
20 !define MUI_ABORTWARNING
21
22 !define MUI_WELCOMEPAGE_TEXT  "This wizard will guide you through the installation of Blender. It is recommended that you close all other applications before starting Setup."
23 !define MUI_WELCOMEFINISHPAGE_BITMAP "[RELDIR]\01.installer.bmp"
24 !define MUI_HEADERIMAGE
25 !define MUI_HEADERIMAGE_BITMAP  "[RELDIR]\00.header.bmp"
26 !define MUI_COMPONENTSPAGE_SMALLDESC
27 !define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe"
28 !define MUI_CHECKBITMAP "[RELDIR]\00.checked.bmp"
29 !define MUI_UNWELCOMEFINISHPAGE_BITMAP "[RELDIR]\01.installer.bmp"
30
31 !insertmacro MUI_PAGE_WELCOME
32 !insertmacro MUI_PAGE_LICENSE "[DISTDIR]\Copyright.txt"
33 !insertmacro MUI_PAGE_COMPONENTS
34     
35 !insertmacro MUI_PAGE_DIRECTORY
36 Page custom DataLocation DataLocationOnLeave
37 !insertmacro MUI_PAGE_INSTFILES
38 !insertmacro MUI_PAGE_FINISH
39   
40 !insertmacro MUI_UNPAGE_WELCOME
41 !insertmacro MUI_UNPAGE_CONFIRM
42 !insertmacro MUI_UNPAGE_INSTFILES
43 !insertmacro MUI_UNPAGE_FINISH
44
45 !insertmacro Locate
46 !insertmacro VersionCompare
47
48
49 Icon "[RELDIR]\00.installer.ico"
50 UninstallIcon "[RELDIR]\00.installer.ico"
51
52 ;--------------------------------
53 ;Languages
54  
55   !insertmacro MUI_LANGUAGE "English"
56     
57 ;--------------------------------
58 ;Language Strings
59
60   ;Description
61   LangString DESC_InstallFiles ${LANG_ENGLISH} "Copy all required files to the application folder."
62   LangString DESC_StartMenu ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)"
63   LangString DESC_DesktopShortcut ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop."
64   LangString DESC_BlendRegister ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc."
65   LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location"
66 ;--------------------------------
67 ;Data
68
69 Caption "Blender [VERSION] Installer"
70 OutFile "[DISTDIR]\..\blender-[VERSION]-windows[BITNESS].exe"
71 InstallDir $INSTDIR ; $INSTDIR is set inside .onInit
72 BrandingText "Blender Foundation | http://www.blender.org"
73 ComponentText "This will install Blender [VERSION] on your computer."
74
75 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."
76
77 SilentUnInstall normal
78
79 Var BLENDERHOME
80 Var SHORTVERSION ; This is blender_version_decimal() from path_util.c
81
82 ; Custom controls
83 Var HWND
84
85 Var HWND_APPDATA
86 Var HWND_INSTDIR
87 Var HWND_HOMEDIR
88
89 Function .onInit
90   ClearErrors
91   StrCpy $SHORTVERSION "[SHORTVERSION]"
92
93   ${If} ${RunningX64}
94     ${If} "[BITNESS]" == "32"
95     ${OrIf} "[BITNESS]" == "-mingw"
96       StrCpy $INSTDIR "$PROGRAMFILES32\Blender Foundation\Blender" ; Can't use InstallDir inside Section
97     ${ElseIf} "[BITNESS]" == "64"
98       StrCpy $INSTDIR "$PROGRAMFILES64\Blender Foundation\Blender"
99     ${EndIf}
100   ${Else}
101     StrCpy $INSTDIR "$PROGRAMFILES\Blender Foundation\Blender"
102   ${EndIf}
103 FunctionEnd
104
105 Function un.onInit
106 FunctionEnd
107
108 Function DataLocation
109   nsDialogs::Create /NOUNLOAD 1018
110   Pop $HWND
111   
112   ${If} $HWND == error
113     Abort
114   ${EndIf}
115   
116   ${NSD_CreateLabel} 0 0 100% 24u "Please specify where you wish to install Blender's user data files. Be aware that if you choose to use your Application Data directory, your preferences and scripts will only be accessible by the current user account."
117   ${NSD_CreateRadioButton} 0 50 100% 12u "Use Application Data directory (recommended)"
118   Pop $HWND_APPDATA
119   ${NSD_CreateRadioButton} 0 80 100% 12u "Use installation directory"
120   Pop $HWND_INSTDIR
121   ${NSD_CreateRadioButton} 0 110 100% 12u "I have defined a %HOME% variable, please install files there"
122   Pop $HWND_HOMEDIR
123   
124   ${If} ${AtMostWinME}
125     GetDlgItem $0 $HWND $HWND_APPDATA
126     EnableWindow $0 0
127     SendMessage $HWND_INSTDIR ${BM_SETCHECK} 1 0
128   ${Else}
129     SendMessage $HWND_APPDATA ${BM_SETCHECK} 1 0
130   ${EndIf}
131   
132   nsDialogs::Show
133   
134 FunctionEnd
135
136 Function DataLocationOnLeave
137   ${NSD_GetState} $HWND_APPDATA $R0
138   ${If} $R0 == "1"
139     SetShellVarContext current
140     StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender"
141     SetShellVarContext all
142   ${Else}
143     ${NSD_GetState} $HWND_INSTDIR $R0
144     ${If} $R0 == "1"
145       StrCpy $BLENDERHOME $INSTDIR
146     ${Else}
147       ${NSD_GetState} $HWND_HOMEDIR $R0
148       ${If} $R0 == "1"
149         ReadEnvStr $BLENDERHOME "HOME"
150       ${EndIf}
151     ${EndIf}
152   ${EndIf}
153 FunctionEnd
154
155 Section "Blender [VERSION] (required)" InstallFiles
156   SectionIn RO
157
158   ; Set output path to the installation directory.
159   SetOutPath $INSTDIR
160   ; The contents of Blender installation root dir
161   [ROOTDIRCONTS]
162   
163   ; All datafiles (python, scripts, config)
164   [DODATAFILES]
165   
166   SetOutPath $INSTDIR
167   ${If} ${RunningX64}
168     SetRegView 64
169   ${EndIf}
170   ; Write the installation path into the registry
171   WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "Install_Dir" "$INSTDIR"
172   WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "ConfigData_Dir" "$BLENDERHOME"
173   WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "ShortVersion" "[SHORTVERSION]"
174   ; Write the uninstall keys for Windows
175   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender"
176   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "Publisher" "Blender Foundation"
177   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "URLInfoAbout" "http://www.blender.org/"
178   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayVersion" "[VERSION]"
179   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayIcon" "$INSTDIR\blender.exe"
180   WriteRegStr   HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
181   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "NoModify" 1
182   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "NoRepair " 1
183   WriteUninstaller "uninstall.exe"
184
185 SectionEnd
186
187 Section "Add Start Menu Shortcuts" StartMenu
188   SetShellVarContext all
189   CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"
190   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
191   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0
192   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\readme.html" "" "" 0
193   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0
194   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0
195   System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)' ; refresh icons
196 SectionEnd
197
198 Section "Add Desktop Shortcut" DesktopShortcut
199   CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
200   System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)' ; refresh icons
201 SectionEnd
202
203 Section "Open .blend files with Blender" BlendRegister
204   ExecWait '"$INSTDIR\blender.exe" -r'
205 SectionEnd
206
207 UninstallText "This will uninstall Blender [VERSION], and all installed files. Before continuing make sure you have created backup of all the files you may want to keep: startup.blend, bookmarks.txt, recent-files.txt. Hit 'Uninstall' to continue."
208
209 Section "Uninstall"
210   ; Remove registry keys
211   ${If} ${RunningX64}
212     SetRegView 64
213   ${EndIf}
214   
215   ReadRegStr $BLENDERHOME HKLM "SOFTWARE\BlenderFoundation" "ConfigData_Dir"
216   ReadRegStr $SHORTVERSION HKLM "SOFTWARE\BlenderFoundation" "ShortVersion"
217   DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
218   DeleteRegKey HKLM "SOFTWARE\BlenderFoundation"
219   DeleteRegKey HKCR ".blend"
220   DeleteRegKey HKCR "blendfile"
221   DeleteRegKey HKCR "CLSID\{D45F043D-F17F-4e8a-8435-70971D9FA46D}"
222   SetShellVarContext all
223  
224   ; Remove files
225   [DELROOTDIRCONTS]
226
227   Delete "$INSTDIR\uninstall.exe"
228
229   MessageBox MB_YESNO "Recursively erase contents of $BLENDERHOME\$SHORTVERSION\scripts? NOTE: This includes all installed scripts and *any* file and directory you have manually created, installed later or copied. This also including .blend files." IDNO NextNoScriptRemove
230   RMDir /r "$BLENDERHOME\$SHORTVERSION\scripts"
231 NextNoScriptRemove:
232   MessageBox MB_YESNO "Recursively erase contents from $BLENDERHOME\$SHORTVERSION\config? NOTE: This includes your startup.blend, bookmarks and any other file and directory you may have created in that directory" IDNO NextNoConfigRemove
233   RMDir /r "$BLENDERHOME\$SHORTVERSION\config"
234 NextNoConfigRemove:
235   MessageBox MB_YESNO "Recursively erase contents from $BLENDERHOME\$SHORTVERSION\plugins? NOTE: This includes files and subdirectories in this directory" IDNO NextNoPluginRemove
236   RMDir /r "$BLENDERHOME\$SHORTVERSION\plugins"
237 NextNoPluginRemove:
238   ; Try to remove dirs, but leave them if they contain anything
239   RMDir "$BLENDERHOME\$SHORTVERSION\plugins"
240   RMDir "$BLENDERHOME\$SHORTVERSION\config"
241   RMDir "$BLENDERHOME\$SHORTVERSION\scripts"
242   RMDir "$BLENDERHOME\$SHORTVERSION"
243   RMDir "$BLENDERHOME"
244   ; Remove shortcuts
245   Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
246   Delete "$DESKTOP\Blender.lnk"
247   ; Remove all link related directories and files
248   RMDir /r "$SMPROGRAMS\Blender Foundation"
249   ; Clear out installation dir
250   RMDir /r "$INSTDIR"
251   
252   System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)' ; Refresh icons
253 SectionEnd
254
255 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
256   !insertmacro MUI_DESCRIPTION_TEXT ${InstallFiles} $(DESC_InstallFiles)
257   !insertmacro MUI_DESCRIPTION_TEXT ${StartMenu} $(DESC_StartMenu)
258   !insertmacro MUI_DESCRIPTION_TEXT ${DesktopShortcut} $(DESC_DesktopShortcut)
259   !insertmacro MUI_DESCRIPTION_TEXT ${BlendRegister} $(DESC_BlendRegister)
260 !insertmacro MUI_FUNCTION_DESCRIPTION_END
261