* the installer script so you can do 'scons wininst' (on win32 only, of course)
authorNathan Letwory <nathan@letworyinteractive.com>
Wed, 14 Jul 2004 14:13:20 +0000 (14:13 +0000)
committerNathan Letwory <nathan@letworyinteractive.com>
Wed, 14 Jul 2004 14:13:20 +0000 (14:13 +0000)
This installer script is modified from the original one so that the SConstruct
will dynamically add the files that need to go into the installer. This means
that adding a script to release/scripts will automatically put it in the installer.

Also, adding new resource files in bin/.blender/ will make sure that those get
added to the installer.

release/windows/installer/00.sconsblender.nsi [new file with mode: 0644]

diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi
new file mode 100644 (file)
index 0000000..f96cbd7
--- /dev/null
@@ -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