diff options
Diffstat (limited to 'release/windows/installer')
-rw-r--r-- | release/windows/installer/00.sconsblender.nsi | 341 |
1 files changed, 341 insertions, 0 deletions
diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi new file mode 100644 index 00000000000..f96cbd771af --- /dev/null +++ b/release/windows/installer/00.sconsblender.nsi @@ -0,0 +1,341 @@ +; +; $Id$ +; +; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net) +; + +!include "MUI.nsh" + +Name "Blender VERSION" + +!define MUI_ABORTWARNING + +!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." +!define MUI_WELCOMEFINISHPAGE_BITMAP "01.installer.bmp" +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "00.header.bmp" +!define MUI_COMPONENTSPAGE_SMALLDESC +!define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe" +!define MUI_CHECKBITMAP "00.checked.bmp" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "DISTDIR\Copyright.txt" +!insertmacro MUI_PAGE_COMPONENTS + +!insertmacro MUI_PAGE_DIRECTORY +Page custom DataLocation +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_WELCOME +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES +!insertmacro MUI_UNPAGE_FINISH + + +Icon "00.installer.ico" +UninstallIcon "00.installer.ico" + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + +;-------------------------------- +;Language Strings + + ;Description + LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder." + LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)" + LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop." + LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc." + LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location" +;-------------------------------- +;Data + +Caption "Blender VERSION Installer" +OutFile "DISTDIR\..\blender-VERSION-windows.exe" + +InstallDir "$PROGRAMFILES\Blender Foundation\Blender" + +BrandingText "http://www.blender.org/bf" +ComponentText "This will install Blender VERSION on your computer." + +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." + +; GetWindowsVersion +; +; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/ +; Updated by Joost Verburg +; +; Returns on top of stack +; +; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003) +; or +; '' (Unknown Windows Version) +; +; Usage: +; Call GetWindowsVersion +; Pop $R0 +; ; at this point $R0 is "NT 4.0" or whatnot + +Function GetWindowsVersion + + Push $R0 + Push $R1 + + ReadRegStr $R0 HKLM \ + "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion + + IfErrors 0 lbl_winnt + + ; we are not NT + ReadRegStr $R0 HKLM \ + "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber + + StrCpy $R1 $R0 1 + StrCmp $R1 '4' 0 lbl_error + + StrCpy $R1 $R0 3 + + StrCmp $R1 '4.0' lbl_win32_95 + StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98 + + lbl_win32_95: + StrCpy $R0 '95' + Goto lbl_done + + lbl_win32_98: + StrCpy $R0 '98' + Goto lbl_done + + lbl_win32_ME: + StrCpy $R0 'ME' + Goto lbl_done + + lbl_winnt: + + StrCpy $R1 $R0 1 + + StrCmp $R1 '3' lbl_winnt_x + StrCmp $R1 '4' lbl_winnt_x + + StrCpy $R1 $R0 3 + + StrCmp $R1 '5.0' lbl_winnt_2000 + StrCmp $R1 '5.1' lbl_winnt_XP + StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error + + lbl_winnt_x: + StrCpy $R0 "NT $R0" 6 + Goto lbl_done + + lbl_winnt_2000: + Strcpy $R0 '2000' + Goto lbl_done + + lbl_winnt_XP: + Strcpy $R0 'XP' + Goto lbl_done + + lbl_winnt_2003: + Strcpy $R0 '2003' + Goto lbl_done + + lbl_error: + Strcpy $R0 '' + lbl_done: + + Pop $R1 + Exch $R0 + +FunctionEnd + +Var BLENDERHOME +Var winversion + +Function SetWinXPPath + StrCpy $BLENDERHOME "$PROFILE\Application Data\Blender Foundation\Blender" +FunctionEnd + +Function SetWin9xPath + StrCpy $BLENDERHOME $INSTDIR +FunctionEnd + +Function .onInit + Call GetWindowsVersion + Pop $R0 + Strcpy $winversion $R0 + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "data.ini" +FunctionEnd + +Var HWND +Var DLGITEM +Var is2KXP + +Function DataLocation + !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "" + + StrCpy $R1 $winversion 2 + StrCmp $R1 "NT" do_win2kxp + StrCmp $winversion "2000" do_win2kxp + StrCmp $winversion "XP" do_win2kxp + StrCmp $winversion "2003" do_win2kxp + + ;else... + Strcpy $is2KXP "false" + !insertmacro MUI_INSTALLOPTIONS_WRITE "data.ini" "Field 3" "State" 1 + + Goto continue + + do_win2kXP: + Strcpy $is2KXP "true" + + !insertmacro MUI_INSTALLOPTIONS_WRITE "data.ini" "Field 2" "State" 1 + + continue: + + !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "data.ini" + Pop $HWND + + Strcmp $is2KXP "true" do_dlg + + ; Disable App Data option on Win9x + + GetDlgItem $DLGITEM $HWND 1201 + EnableWindow $DLGITEM 0 + + do_dlg: + + !insertmacro MUI_INSTALLOPTIONS_SHOW + !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 2" "State" ; App Dir + Strcmp $R0 1 do_app_data + !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 3" "State" ; Inst Dir + Strcmp $R0 1 do_inst_path + !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 4" "State" ; Home Dir + Strcmp $R0 1 do_home_path + + Goto end + + do_app_data: + Call SetWinXPPath + Goto end + do_home_path: + ReadEnvStr $BLENDERHOME "HOME" + Goto end + do_inst_path: + Strcmp $is2KXP "true" warning + Call SetWin9xPath + Goto end + warning: + IfFileExists "$PROFILE\Application Data\Blender Foundation\Blender\.blender\.bfont.ttf" disp_warning + Call SetWin9xPath + Goto end + disp_warning: + MessageBox MB_OK "Please note that user data files have been found in $PROFILE\Application Data\Blender Foundation\Blender. Blender will automatically use these instead of the files in $INSTDIR. Please remove the .blender folder from Application Data if you wish to use this option." + Call SetWin9xPath + end: + +FunctionEnd + +Section "Blender-VERSION (required)" SecCopyUI + SectionIn RO + +; Sets $BLENDERHOME to suit Windows version... + + ; Set output path to the installation directory. + SetOutPath $INSTDIR + ; Put file there + [ROOTDIRCONTS] + + SetOutPath $BLENDERHOME\.blender + [DOTBLENDERCONTS] + + SetOutPath $BLENDERHOME\.blender\scripts + [SCRIPTCONTS] + SetOutPath $BLENDERHOME\.blender\bpydata + File DISTDIR\.blender\bpydata\readme.txt + + SetOutPath $BLENDERHOME\.blender\locale\ca\LC_MESSAGES + ;File DISTDIR\.blender\locale\ca\LC_MESSAGES\blender.mo + [LANGUAGECONTS] + + SetOutPath $INSTDIR + ; Write the installation path into the registry + WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR" + ; Write the uninstall keys for Windows + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteUninstaller "uninstall.exe" +SectionEnd + +Section "Add Start Menu shortcuts" Section2 + SetOutPath $INSTDIR + CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\" + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0 + CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url" +SectionEnd + +Section "Add Desktop Blender-VERSION shortcut" Section3 + SetOutPath $INSTDIR + CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0 +SectionEnd + +Section "Open .blend files with Blender-VERSION" Section4 + SetOutPath $INSTDIR + ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b" + ;do it the manual way! ;) + + WriteRegStr HKCR ".blend" "" "blendfile" + WriteRegStr HKCR "blendfile" "" "Blender .blend File" + WriteRegStr HKCR "blendfile\shell" "" "open" + WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1 + WriteRegStr HKCR "blendfile\shell\open\command" "" \ + '"$INSTDIR\blender.exe" "%1"' + +SectionEnd + +UninstallText "This will uninstall Blender VERSION. Hit next to continue." + +Section "Uninstall" + ; remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" + DeleteRegKey HKLM SOFTWARE\BlenderFoundation + ; remove files + Delete $INSTDIR\blender.exe + Delete $INSTDIR\python23.dll + Delete $INSTDIR\sdl.dll + Delete $INSTDIR\gnu_gettext.dll + Delete $INSTDIR\Copyright.txt + Delete $INSTDIR\Blender.html + Delete $INSTDIR\GPL-license.txt + Delete $INSTDIR\python-license.txt + Delete $INSTDIR\Release_SHORTVERS.txt + Delete $INSTDIR\Help.url + Delete $INSTDIR\uninstall.exe + Delete $INSTDIR\.blender\.bfont.ttf + Delete $INSTDIR\.blender\.Blanguages + ; remove shortcuts, if any. + Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*" + Delete "$DESKTOP\Blender.lnk" + ; remove directories used. + RMDir /r $INSTDIR\.blender\locale + RMDir /r $INSTDIR\.blender\scripts + RMDir /r $INSTDIR\.blender\bpydata + RMDir $INSTDIR\.blender + RMDir "$SMPROGRAMS\Blender Foundation\Blender" + RMDir "$SMPROGRAMS\Blender Foundation" + RMDir "$INSTDIR" + RMDir "$INSTDIR\.." +SectionEnd + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI) + !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2) + !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3) + !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4) +!insertmacro MUI_FUNCTION_DESCRIPTION_END |