=== Windows Installer ===
[blender.git] / release / windows / installer / 00.sconsblender.nsi
1 ;\r
2 ; $Id$\r
3 ;\r
4 ; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net)\r
5 ;\r
6 ; Requires the MoreInfo plugin - http://nsis.sourceforge.net/MoreInfo_plug-in\r
7 ;\r
8 \r
9 !include "MUI.nsh"\r
10 !include "WinVer.nsh"\r
11 !include "FileFunc.nsh"\r
12 !include "WordFunc.nsh"\r
13 !include "nsDialogs.nsh"\r
14 \r
15 SetCompressor /SOLID lzma\r
16 \r
17 Name "Blender [VERSION]" \r
18 \r
19 !define MUI_ABORTWARNING\r
20 \r
21 !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."\r
22 !define MUI_WELCOMEFINISHPAGE_BITMAP "[RELDIR]\01.installer.bmp"\r
23 !define MUI_HEADERIMAGE\r
24 !define MUI_HEADERIMAGE_BITMAP  "[RELDIR]\00.header.bmp"\r
25 !define MUI_COMPONENTSPAGE_SMALLDESC\r
26 !define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe"\r
27 !define MUI_CHECKBITMAP "[RELDIR]\00.checked.bmp"\r
28 !define MUI_UNWELCOMEFINISHPAGE_BITMAP "[RELDIR]\01.installer.bmp"\r
29 \r
30 !insertmacro MUI_PAGE_WELCOME\r
31 !insertmacro MUI_PAGE_LICENSE "[DISTDIR]\Copyright.txt"\r
32 !insertmacro MUI_PAGE_COMPONENTS\r
33     \r
34 !insertmacro MUI_PAGE_DIRECTORY\r
35 Page custom DataLocation DataLocationOnLeave\r
36 !insertmacro MUI_PAGE_INSTFILES\r
37 !insertmacro MUI_PAGE_FINISH\r
38   \r
39 !insertmacro MUI_UNPAGE_WELCOME\r
40 !insertmacro MUI_UNPAGE_CONFIRM\r
41 !insertmacro MUI_UNPAGE_INSTFILES\r
42 !insertmacro MUI_UNPAGE_FINISH\r
43 \r
44 !insertmacro Locate\r
45 !insertmacro VersionCompare\r
46 \r
47 \r
48 Icon "[RELDIR]\00.installer.ico"\r
49 UninstallIcon "[RELDIR]\00.installer.ico"\r
50 \r
51 ;--------------------------------\r
52 ;Languages\r
53  \r
54   !insertmacro MUI_LANGUAGE "English"\r
55     \r
56 ;--------------------------------\r
57 ;Language Strings\r
58 \r
59   ;Description\r
60   LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder."\r
61   LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)"\r
62   LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop."\r
63   LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc."\r
64   LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location"\r
65 ;--------------------------------\r
66 ;Data\r
67 \r
68 Caption "Blender [VERSION] Installer"\r
69 OutFile "[DISTDIR]\..\blender-[VERSION]-windows[BITNESS].exe"\r
70 InstallDir "$PROGRAMFILES[BITNESS]\Blender Foundation\Blender"\r
71 \r
72 BrandingText "Blender Foundation | http://www.blender.org"\r
73 ComponentText "This will install Blender [VERSION] on your computer."\r
74 \r
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."\r
76 \r
77 SilentUnInstall normal\r
78 \r
79 Var BLENDERHOME\r
80 Var SHORTVERSION ; This is blender_version_decimal() from path_util.c\r
81 \r
82 ; custom controls\r
83 Var HWND\r
84 \r
85 Var HWND_APPDATA\r
86 Var HWND_INSTDIR\r
87 Var HWND_HOMEDIR\r
88 \r
89 Function .onInit\r
90   ClearErrors\r
91   StrCpy $SHORTVERSION "[SHORTVERSION]"\r
92 FunctionEnd\r
93 \r
94 Function DataLocation\r
95   nsDialogs::Create /NOUNLOAD 1018\r
96   Pop $HWND\r
97   \r
98   ${If} $HWND == error\r
99     Abort\r
100   ${EndIf}\r
101   \r
102   ${NSD_CreateLabel} 0 0 100% 12u "Please specify where you wish to install Blender's user data files."\r
103   ${NSD_CreateRadioButton} 0 20 100% 12u "Use the Application Data directory (Requires Windows 2000 or better)"\r
104   Pop $HWND_APPDATA\r
105   ${NSD_CreateRadioButton} 0 50 100% 12u "Use the installation directory (ie. location chosen to install blender.exe)."\r
106   Pop $HWND_INSTDIR\r
107   ${NSD_CreateRadioButton} 0 80 100% 12u "I have defined a %HOME% variable, please install files here."\r
108   Pop $HWND_HOMEDIR\r
109   \r
110   ${If} ${AtMostWinME}\r
111     GetDlgItem $0 $HWND $HWND_APPDATA\r
112     EnableWindow $0 0\r
113     SendMessage $HWND_INSTDIR ${BM_SETCHECK} 1 0\r
114   ${Else}\r
115     SendMessage $HWND_APPDATA ${BM_SETCHECK} 1 0\r
116   ${EndIf}\r
117   \r
118   nsDialogs::Show\r
119   \r
120 FunctionEnd\r
121 \r
122 Function DataLocationOnLeave\r
123   ${NSD_GetState} $HWND_APPDATA $R0\r
124   ${If} $R0 == "1"\r
125     StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender"\r
126   ${Else}\r
127     ${NSD_GetState} $HWND_INSTDIR $R0\r
128     ${If} $R0 == "1"\r
129       StrCpy $BLENDERHOME $INSTDIR\r
130     ${Else}\r
131       ${NSD_GetState} $HWND_HOMEDIR $R0\r
132       ${If} $R0 == "1"\r
133         ReadEnvStr $BLENDERHOME "HOME"\r
134       ${EndIf}\r
135     ${EndIf}\r
136   ${EndIf}\r
137 FunctionEnd\r
138 \r
139 Section "Blender-[VERSION] (required)" SecCopyUI\r
140   SectionIn RO\r
141 \r
142   ; Set output path to the installation directory.\r
143   SetOutPath $INSTDIR\r
144   ; the contents of Blender installation root dir\r
145   [ROOTDIRCONTS]\r
146   \r
147   ; all datafiles (python, scripts, config)\r
148   [DODATAFILES]\r
149   \r
150   SetOutPath $INSTDIR\r
151   ; Write the installation path into the registry\r
152   WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "Install_Dir" "$INSTDIR"\r
153   WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "ConfigData_Dir" "$BLENDERHOME"\r
154   WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "ShortVersion" "[SHORTVERSION]"\r
155   ; Write the uninstall keys for Windows\r
156   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)"\r
157   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'\r
158   WriteUninstaller "uninstall.exe"\r
159 \r
160   ; Let's now run silent vcredist installer\r
161   SetOutPath $TEMP\r
162   [VCREDIST]\r
163 \r
164 SectionEnd\r
165 \r
166 Section "Add Start Menu shortcuts" Section2\r
167   SetShellVarContext all\r
168   CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"\r
169   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0\r
170   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0\r
171   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0\r
172   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0\r
173   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0\r
174   CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url"\r
175 SectionEnd\r
176 \r
177 Section "Add Desktop Blender-[VERSION] shortcut" Section3\r
178   CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0\r
179 SectionEnd\r
180 \r
181 Section "Open .blend files with Blender-[VERSION]" Section4\r
182   \r
183   WriteRegStr HKCR ".blend" "" "blendfile"\r
184   WriteRegStr HKCR "blendfile" "" "Blender .blend File"\r
185   WriteRegStr HKCR "blendfile\shell" "" "open"\r
186   WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1\r
187   WriteRegStr HKCR "blendfile\shell\open\command" "" \\r
188     '"$INSTDIR\blender.exe" "%1"'\r
189   \r
190 SectionEnd\r
191 \r
192 UninstallText "This will uninstall Blender [VERSION], and all datafiles from the installation dir. Hit next to continue."\r
193 \r
194 Section "Uninstall"\r
195   ; remove registry keys\r
196   ReadRegStr $BLENDERHOME HKLM "SOFTWARE\BlenderFoundation" "ConfigData_Dir"\r
197   ReadRegStr $SHORTVERSION HKLM "SOFTWARE\BlenderFoundation" "ShortVersion"\r
198   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender"\r
199   DeleteRegKey HKLM "SOFTWARE\BlenderFoundation"\r
200   SetShellVarContext all\r
201 \r
202   StrCpy $0 "$SMPROGRAMS\Blender Foundation\"\r
203   MessageBox MB_OK $0\r
204   ; remove files\r
205   [DELROOTDIRCONTS]\r
206 \r
207   Delete "$INSTDIR\uninstall.exe"\r
208 \r
209   MessageBox MB_YESNO "Erase $BLENDERHOME? This includes all installed scripts and configuration files and any file you may have created there." IDNO Next\r
210   RMDir /r "$BLENDERHOME"\r
211 Next:\r
212   ; remove shortcuts, if any.\r
213   Delete "$DESKTOP\Blender.lnk"\r
214   ; remove all link related directories and files\r
215   RMDir /r "$SMPROGRAMS\Blender Foundation\"\r
216   ; remove entire installation directory, including any file created by the user\r
217   RMDir /r "$INSTDIR"\r
218 SectionEnd\r
219 \r
220 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
221   !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI)\r
222   !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)\r
223   !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)\r
224   !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)\r
225 !insertmacro MUI_FUNCTION_DESCRIPTION_END\r
226 \r