123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- ;
- ;
- ; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net)
- ;
- SetCompressor /SOLID lzma
- Name "Blender [VERSION]"
- RequestExecutionLevel admin
- !include "MUI.nsh"
- !include "WinVer.nsh"
- !include "FileFunc.nsh"
- !include "WordFunc.nsh"
- !include "nsDialogs.nsh"
- !include "x64.nsh"
- !define MUI_ABORTWARNING
- !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."
- !define MUI_WELCOMEFINISHPAGE_BITMAP "[RELDIR]\01.installer.bmp"
- !define MUI_HEADERIMAGE
- !define MUI_HEADERIMAGE_BITMAP "[RELDIR]\00.header.bmp"
- !define MUI_COMPONENTSPAGE_SMALLDESC
- !define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe"
- !define MUI_CHECKBITMAP "[RELDIR]\00.checked.bmp"
- !define MUI_UNWELCOMEFINISHPAGE_BITMAP "[RELDIR]\01.installer.bmp"
- !insertmacro MUI_PAGE_WELCOME
- !insertmacro MUI_PAGE_LICENSE "[DISTDIR]\Copyright.txt"
- !insertmacro MUI_PAGE_COMPONENTS
-
- !insertmacro MUI_PAGE_DIRECTORY
- !insertmacro MUI_PAGE_INSTFILES
- !insertmacro MUI_PAGE_FINISH
-
- !insertmacro MUI_UNPAGE_WELCOME
- UninstPage custom un.OptionalRemoveConfig un.OptionalRemoveConfigOnLeave
- !insertmacro MUI_UNPAGE_CONFIRM
- !insertmacro MUI_UNPAGE_INSTFILES
- !insertmacro MUI_UNPAGE_FINISH
- !insertmacro Locate
- !insertmacro VersionCompare
- Icon "[RELDIR]\00.installer.ico"
- UninstallIcon "[RELDIR]\00.installer.ico"
- ;--------------------------------
- ;Languages
-
- !insertmacro MUI_LANGUAGE "English"
-
- ;--------------------------------
- ;Language Strings
- ;Description
- LangString DESC_InstallFiles ${LANG_ENGLISH} "Copy all required files to the application folder."
- LangString DESC_StartMenu ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)"
- LangString DESC_DesktopShortcut ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop."
- LangString DESC_BlendRegister ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc."
- ;--------------------------------
- ;Data
- Caption "Blender [VERSION] Installer"
- OutFile "[DISTDIR]\..\blender-[VERSION]-windows[BITNESS].exe"
- InstallDir $INSTDIR ; $INSTDIR is set inside .onInit
- BrandingText "Blender Foundation | http://www.blender.org"
- ComponentText "This will install Blender [VERSION] on your computer."
- VIAddVersionKey "ProductName" "Blender"
- VIAddVersionKey "CompanyName" "http://www.blender.org"
- VIAddVersionKey "FileDescription" "Free open source 3D content creation suite."
- VIAddVersionKey "FileVersion" "[SHORTVERSION].0.0"
- VIProductVersion "[SHORTVERSION].0.0"
- 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."
- SilentUnInstall normal
- Var SHORTVERSION ; This is blender_version_decimal() from path_util.c
- Var BLENDERCONFIG
- Var REMOVECONFIG
- ; Custom controls
- Var HWND
- Var HWND_KEEPCONFIG
- Var HWND_REMOVECONFIG
- Function .onInit
- ClearErrors
- StrCpy $SHORTVERSION "[SHORTVERSION]"
- ${If} ${RunningX64}
- ${If} "[BITNESS]" == "32"
- StrCpy $INSTDIR "$PROGRAMFILES32\Blender Foundation\Blender" ; Can't use InstallDir inside Section
- ${ElseIf} "[BITNESS]" == "64"
- StrCpy $INSTDIR "$PROGRAMFILES64\Blender Foundation\Blender"
- ${EndIf}
- ${Else}
- StrCpy $INSTDIR "$PROGRAMFILES\Blender Foundation\Blender"
- ${EndIf}
- FunctionEnd
- Function un.onInit
- SetShellVarContext current
- StrCpy $BLENDERCONFIG "$APPDATA\Blender Foundation\Blender"
- SetShellVarContext all
- FunctionEnd
- Function un.OptionalRemoveConfig
- nsDialogs::Create /NOUNLOAD 1018
- Pop $HWND
-
- ${If} $HWND == error
- Abort
- ${EndIf}
-
- ${NSD_CreateRadioButton} 0 50 100% 12u "Keep configuration files, autosaved .blend files and installed addons (recommended)"
- Pop $HWND_KEEPCONFIG
- ${NSD_CreateRadioButton} 0 80 100% 12u "Remove all files, including configuration files, autosaved .blend files and installed addons"
- Pop $HWND_REMOVECONFIG
- SendMessage $HWND_KEEPCONFIG ${BM_SETCHECK} 1 0
-
- nsDialogs::Show
-
- FunctionEnd
- Function un.OptionalRemoveConfigOnLeave
- ${NSD_GetState} $HWND_REMOVECONFIG $R0
- ${If} $R0 == "1"
- StrCpy $REMOVECONFIG "1"
- ${Else}
- StrCpy $REMOVECONFIG "0"
- ${EndIf}
- FunctionEnd
- Section "Blender [VERSION] (required)" InstallFiles
- SectionIn RO
- ; Set output path to the installation directory.
- SetOutPath $INSTDIR
- ; The contents of Blender installation root dir
- [ROOTDIRCONTS]
-
- ; All datafiles (python, scripts, datafiles)
- [DODATAFILES]
-
- SetOutPath $INSTDIR
- ${If} ${RunningX64}
- SetRegView 64
- ${EndIf}
- ; Write the installation path into the registry
- WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "Install_Dir" "$INSTDIR"
- WriteRegStr HKLM "SOFTWARE\BlenderFoundation" "ShortVersion" "[SHORTVERSION]"
- ; Write the uninstall keys for Windows
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "Publisher" "Blender Foundation"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "URLInfoAbout" "http://www.blender.org/"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayVersion" "[VERSION]"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayIcon" "$INSTDIR\blender.exe"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
- WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "NoModify" 1
- WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "NoRepair " 1
- WriteUninstaller "uninstall.exe"
- SectionEnd
- Section "Add Start Menu Shortcuts" StartMenu
- SetShellVarContext all
- 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\readme.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
- System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)' ; refresh icons
- SectionEnd
- Section "Add Desktop Shortcut" DesktopShortcut
- CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
- System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)' ; refresh icons
- SectionEnd
- Section "Open .blend files with Blender" BlendRegister
- ExecWait '"$INSTDIR\blender.exe" -r'
- SectionEnd
- UninstallText "This will uninstall Blender [VERSION], and all installed files. Hit 'Uninstall' to continue."
- Section "Uninstall"
- ; Remove registry keys
- ${If} ${RunningX64}
- SetRegView 64
- ${EndIf}
-
- ReadRegStr $SHORTVERSION HKLM "SOFTWARE\BlenderFoundation" "ShortVersion"
- DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
- DeleteRegKey HKLM "SOFTWARE\BlenderFoundation"
- DeleteRegKey HKCR ".blend"
- DeleteRegKey HKCR "blendfile"
- DeleteRegKey HKCR "CLSID\{D45F043D-F17F-4e8a-8435-70971D9FA46D}"
- SetShellVarContext all
-
- ; Remove files
- [DELROOTDIRCONTS]
- [DELDATAFILES]
- [DELDATADIRS]
- Delete "$INSTDIR\uninstall.exe"
- ${If} $REMOVECONFIG == "1"
- RMDir /r "$BLENDERCONFIG\$SHORTVERSION"
- ${Endif}
- ; Remove install directory if it's empty
- RMDir $INSTDIR
- ; Remove shortcuts
- Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
- Delete "$DESKTOP\Blender.lnk"
- ; Remove all link related directories and files
- RMDir "$SMPROGRAMS\Blender Foundation\Blender"
- RMDir "$SMPROGRAMS\Blender Foundation"
-
- System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)' ; Refresh icons
- SectionEnd
- !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
- !insertmacro MUI_DESCRIPTION_TEXT ${InstallFiles} $(DESC_InstallFiles)
- !insertmacro MUI_DESCRIPTION_TEXT ${StartMenu} $(DESC_StartMenu)
- !insertmacro MUI_DESCRIPTION_TEXT ${DesktopShortcut} $(DESC_DesktopShortcut)
- !insertmacro MUI_DESCRIPTION_TEXT ${BlendRegister} $(DESC_BlendRegister)
- !insertmacro MUI_FUNCTION_DESCRIPTION_END
|