Mercurial > forge
view admin/Windows/msvc/octave.nsi.in @ 3665:4e16cc19161b octave-forge
handle dependencies in installers (main and pkg packages)
author | goffioul |
---|---|
date | Wed, 18 Jul 2007 12:40:45 +0000 |
parents | 41f860e3d879 |
children | 7edd4e6b07b9 |
line wrap: on
line source
; Script generated by the HM NIS Edit Script Wizard. !define OCTAVE_VERSION "@OCTAVE_VERSION@" !define VCLIBS_ROOT "@VCLIBS_ROOT@" !define MSYS_ROOT "@MSYS_ROOT@" !define JHANDLES_VERSION "@JHANDLES_VERSION@" !define SOFTWARE_ROOT "@SOFTWARE_ROOT@" ; Determine which configuration to use #!define ATLAS_PM !define USE_OCTPLOT !define USE_OCTAVE_FORGE !define USE_MSYS !define OCTAVE_BASE "octave-${OCTAVE_VERSION}" ; Location of various components !define OCTAVE_ROOT "${VCLIBS_ROOT}\local\${OCTAVE_BASE}" !define CONSOLE_ROOT "${SOFTWARE_ROOT}\Console2" !define SCITE_ROOT "${SOFTWARE_ROOT}\wscite" !define GMSH_ROOT "${SOFTWARE_ROOT}\Gmsh" ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "GNU Octave" !define PRODUCT_VERSION "${OCTAVE_VERSION}" !define PRODUCT_PUBLISHER "" !define PRODUCT_WEB_SITE "http://www.octave.org" !define OCTAVE_FORGE_WEB_SITE "http://octave.sourceforge.net" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\octave-${OCTAVE_VERSION}.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" !define PRODUCT_ROOT_KEY "HKLM" !define PRODUCT_KEY "Software\Octave" ; MUI 1.67 compatible ------ !include "MUI.nsh" !include "Sections.nsh" !include "WordFunc.nsh" !insertmacro WordReplace !define LA_GEN "Generic (works on all systems)" !define LA_P4 "Intel Pentium 4 with SSE2" !ifdef ATLAS_PM !define LA_PM "Intel Pentium M with SSE2" !define LA_COUNT 3 !define LA_ALL "${LA_GEN}|${LA_P4}|${LA_PM}" !else !define LA_COUNT 2 !define LA_ALL "${LA_GEN}|${LA_P4}" !endif ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page !define MUI_LICENSEPAGE_TEXT_BOTTOM "Click Next to continue." !define MUI_LICENSEPAGE_BUTTON "Next >" !insertmacro MUI_PAGE_LICENSE "${VCLIBS_ROOT}\license\COPYING.GPL" ; CPU detection page Page custom AtlasCpu AtlasCpuEnd ; Components page !define MUI_PAGE_CUSTOMFUNCTION_LEAVE componentsLeave !insertmacro MUI_PAGE_COMPONENTS ; Graphics backend selection Page custom Graphics GraphicsEnd ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Start menu page var ICONS_GROUP !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "GNU Octave" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page ;!define MUI_FINISHPAGE_RUN "$INSTDIR\bin\octave-${OCTAVE_VERSION}.exe" !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "English" ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "octave-${OCTAVE_VERSION}-setup.exe" InstallDir "$PROGRAMFILES\Octave" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show XPStyle on Var IS_WIN2K Var DEFAULT_GRAPHICS_BACKEND SectionGroup /e "Core" GRP_CORE Section "Core" SEC_CORE SetOutPath "$INSTDIR\bin" SetOverwrite try ; octave executables File "${OCTAVE_ROOT}\bin\cruft.dll" File "${OCTAVE_ROOT}\bin\octave-${OCTAVE_VERSION}.exe" File "${OCTAVE_ROOT}\bin\octave-bug" File "${OCTAVE_ROOT}\bin\octave-bug-${OCTAVE_VERSION}" File "${OCTAVE_ROOT}\bin\octave.dll" File "${OCTAVE_ROOT}\bin\octave.exe" File "${OCTAVE_ROOT}\bin\octinterp.dll" File "..\cygwin\octave.ico" ; octave compiled modules SetOutPath "$INSTDIR\libexec" File /r /x "COM" "${OCTAVE_ROOT}\libexec\*.*" ; octave script modules SetOutPath "$INSTDIR\share" File /r /x "packages" /x "octave_packages" "${OCTAVE_ROOT}\share\*.*" ; support libraries and executables SetOutPath "$INSTDIR\bin" File "${VCLIBS_ROOT}\bin\pcre70.dll" File "${VCLIBS_ROOT}\bin\readline.dll" File "${VCLIBS_ROOT}\bin\libfftw3-3.dll" File "${VCLIBS_ROOT}\bin\hdf5.dll" File "${VCLIBS_ROOT}\bin\glpk_4_19.dll" File "${VCLIBS_ROOT}\bin\fftw-wisdom.exe" File "${VCLIBS_ROOT}\bin\zlib1.dll" ; licenses SetOutPath "$INSTDIR\license" File "${VCLIBS_ROOT}\license\COPYING.GPL" File "${VCLIBS_ROOT}\license\COPYING.HDF5" ; README SetOutPath "$INSTDIR" File "README.txt" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Octave.lnk" "$INSTDIR\bin\octave-${OCTAVE_VERSION}.exe" "" \ "$INSTDIR\bin\octave.ico" 0 CreateShortCut "$DESKTOP\Octave.lnk" "$INSTDIR\bin\octave-${OCTAVE_VERSION}.exe" "" \ "$INSTDIR\bin\octave.ico" 0 !insertmacro MUI_STARTMENU_WRITE_END ; Create __default_graphics__.m ClearErrors FileOpen $0 "$INSTDIR\share\octave\${OCTAVE_VERSION}\m\startup\__default_graphics__.m" w IfErrors error1 StrCpy $1 $DEFAULT_GRAPHICS_BACKEND FileWrite $0 'function ret = __default_graphics__, ret="$1";, endfunction$\n' IfErrors error2 FileClose $0 Goto done error2: FileClose $0 error1: MessageBox MB_OK|MB_ICONSTOP "Error while creating __default_graphics__.m file. Octave may not work correctly." done: SectionEnd Section "Development files" SEC_DEV SetOverwrite try SetOutPath "$INSTDIR\include" File /r "${OCTAVE_ROOT}\include\*.*" SetOutPath "$INSTDIR\lib" File /r /x *.lib.${OCTAVE_VERSION} /x octave_fixed.lib "${OCTAVE_ROOT}\lib\*.*" SetOutPath "$INSTDIR\bin" File "${OCTAVE_ROOT}\bin\mkoctfile.exe" File "/oname=mkoctfile-${OCTAVE_VERSION}.exe" "${OCTAVE_ROOT}\bin\mkoctfile.exe" ;File "${OCTAVE_ROOT}\bin\mkoctfile" ;File "${OCTAVE_ROOT}\bin\mkoctfile-${OCTAVE_VERSION}" File "${OCTAVE_ROOT}\bin\octave-config.exe" File "/oname=octave-config-${OCTAVE_VERSION}" "${OCTAVE_ROOT}\bin\octave-config.exe" ;File "${OCTAVE_ROOT}\bin\octave-config" ;File "${OCTAVE_ROOT}\bin\octave-config-${OCTAVE_VERSION}" File "${VCLIBS_ROOT}\bin\cc-msvc.exe" ; Additional dependent library files (required by mkoctfile, although not really used) SetOutPath "$INSTDIR\lib" File "${VCLIBS_ROOT}\lib\blas.lib" File "${VCLIBS_ROOT}\lib\lapack.lib" File "${VCLIBS_ROOT}\lib\fftw3.lib" File "${VCLIBS_ROOT}\lib\readline.lib" File "${VCLIBS_ROOT}\lib\hdf5.lib" File "${VCLIBS_ROOT}\lib\zlib.lib" File "${VCLIBS_ROOT}\lib\f2c.lib" ; Additional headers required by some octave headers ; HDF5 SetOutPath "$INSTDIR\include" File "${VCLIBS_ROOT}\include\H5*.h" File "${VCLIBS_ROOT}\include\hdf5.h" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application !insertmacro MUI_STARTMENU_WRITE_END SectionEnd !ifdef USE_MSYS !include "octave_msys.nsi" !endif SectionGroup /e "Linear Algebra Libraries" GRP_LINALG Section "Generic" SEC_LA_GEN SetOutPath "$INSTDIR\bin" SetOverwrite try File /oname=blas.dll "${VCLIBS_ROOT}\bin\blas.dll" File /oname=lapack.dll "${VCLIBS_ROOT}\bin\lapack.dll" SectionEnd Section /o "P4/SSE2" SEC_LA_P4SSE2 SetOutPath "$INSTDIR\bin" SetOverwrite try File /oname=blas.dll "${VCLIBS_ROOT}\bin\blas_atl_WinNT_P4SSE2.dll" File /oname=lapack.dll "${VCLIBS_ROOT}\bin\lapack_atl_WinNT_P4SSE2.dll" SectionEnd !ifdef ATLAS_PM Section /o "PM/SSE2" SEC_LA_PMSSE2 SetOutPath "$INSTDIR\bin" SetOverwrite try File /oname=blas.dll "${VCLIBS_ROOT}\bin\blas_atl_PMSSE2.dll" File /oname=lapack.dll "${VCLIBS_ROOT}\bin\lapack_atl_PMSSE2.dll" SectionEnd !endif SectionGroupEnd Section /o "C/C++ Runtime Libraries" SEC_VC ;Call InstallRuntime SetOverwrite try StrCmp $IS_WIN2K 1 is_win2k is_winxp is_winxp: SetOutPath "$INSTDIR\bin\Microsoft.VC80.CRT" File "${VCLIBS_ROOT}\bin\Microsoft.VC80.CRT\*.*" Goto done is_win2k: SetOutPath "$INSTDIR\bin" File "${VCLIBS_ROOT}\bin\Microsoft.VC80.CRT\*.dll" Goto done done: SectionEnd SectionGroupEnd !ifdef USE_OCTAVE_FORGE SectionGroup "Octave Forge" GRP_FORGE !include "octave_forge.nsi" SectionGroupEnd !endif SectionGroup /e "Graphics" GRP_GRAPHICS !ifdef JHANDLES_VERSION Section "JHandles" SEC_JHANDLES SetOverwrite try SetOutPath "$INSTDIR\share\octave\packages\jhandles-${JHANDLES_VERSION}" File /r "${OCTAVE_ROOT}\share\octave\packages\jhandles-${JHANDLES_VERSION}\*" SetOutPath "$INSTDIR\bin" File "${VCLIBS_ROOT}\bin\jogl.jar" File "${VCLIBS_ROOT}\bin\jogl.dll" File "${VCLIBS_ROOT}\bin\jogl_awt.dll" File "${VCLIBS_ROOT}\bin\jogl_cg.dll" File "${VCLIBS_ROOT}\bin\gluegen-rt.jar" File "${VCLIBS_ROOT}\bin\gluegen-rt.dll" SetOutPath "$INSTDIR\license" File "${VCLIBS_ROOT}\license\COPYING.JOGL" SectionEnd !endif Section "Gnuplot" SEC_GNUPLOT SetOverwrite try SetOutPath "$INSTDIR\bin" File "${VCLIBS_ROOT}\bin\pgnuplot.exe" File "${VCLIBS_ROOT}\bin\pgnuplot_win.exe" File "${VCLIBS_ROOT}\bin\wgnuplot.exe" File "${VCLIBS_ROOT}\bin\wgnuplot.hlp" File "${VCLIBS_ROOT}\bin\wgnuplot.mnu" File "${VCLIBS_ROOT}\bin\bgd.dll" File "${VCLIBS_ROOT}\bin\freetype6.dll" File "${VCLIBS_ROOT}\bin\iconv.dll" File "${VCLIBS_ROOT}\bin\intl.dll" File "${VCLIBS_ROOT}\bin\jpeg6b.dll" File "${VCLIBS_ROOT}\bin\libcairo-2.dll" File "${VCLIBS_ROOT}\bin\libglib-2.0-0.dll" File "${VCLIBS_ROOT}\bin\libgmodule-2.0-0.dll" File "${VCLIBS_ROOT}\bin\libgobject-2.0-0.dll" File "${VCLIBS_ROOT}\bin\libgthread-2.0-0.dll" File "${VCLIBS_ROOT}\bin\libpango-1.0-0.dll" File "${VCLIBS_ROOT}\bin\libpangocairo-1.0-0.dll" File "${VCLIBS_ROOT}\bin\libpangowin32-1.0-0.dll" File "${VCLIBS_ROOT}\bin\libpng13.dll" File "${VCLIBS_ROOT}\bin\zlib1.dll" #SetOutPath "$INSTDIR\etc" #File /r "${VCLIBS_ROOT}\etc\*.*" SetOutPath "$INSTDIR\share\gnuplot" File /r "${VCLIBS_ROOT}\share\gnuplot\*.*" SetOutPath "$INSTDIR\doc\gnuplot" File /r "${VCLIBS_ROOT}\doc\gnuplot*.*" SetOutPath "$INSTDIR\license" File "${VCLIBS_ROOT}\license\COPYING.LIBGD" File "${VCLIBS_ROOT}\license\COPYING.GNUPLOT" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application ; CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Help.lnk" "$INSTDIR\bin\wgnuplot.hlp" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd !ifdef USE_OCTPLOT Section "Octplot" SEC_OPLOT SetOverwrite try SetOutPath "$INSTDIR\bin" File "${VCLIBS_ROOT}\bin\fltkdll.dll" File "${VCLIBS_ROOT}\bin\jpeg6b.dll" File "${VCLIBS_ROOT}\bin\libpng13.dll" File "${VCLIBS_ROOT}\bin\freetype6.dll" SetOutPath "$INSTDIR\share\octplot" File /r "${OCTAVE_ROOT}\share\octplot\*.*" SetOutPath "$INSTDIR\license" File "${VCLIBS_ROOT}\license\COPYING.FLTK" SectionEnd !endif SectionGroupEnd Sectiongroup /e "Documentation" GRP_DOC Section "HTML" DOC_HTML SetOverwrite try SetOutPath "$INSTDIR\doc\HTML\faq" File "${OCTAVE_ROOT}\doc\HTML\faq\*.*" SetOutPath "$INSTDIR\doc\HTML\interpreter" File "${OCTAVE_ROOT}\doc\HTML\interpreter\*.*" SetOutPath "$INSTDIR\doc\HTML\liboctave" File "${OCTAVE_ROOT}\doc\HTML\liboctave\*.*" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Documentation\HTML" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\HTML\Octave.lnk" "$INSTDIR\doc\HTML\interpreter\index.html" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\HTML\Octave C++ API.lnk" "$INSTDIR\doc\HTML\liboctave\index.html" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\HTML\FAQ.lnk" "$INSTDIR\doc\HTML\faq\index.html" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section "PDF" DOC_PDF SetOverwrite try SetOutPath "$INSTDIR\doc\PDF" File "${OCTAVE_ROOT}\doc\PDF\Octave-FAQ.pdf" File "${OCTAVE_ROOT}\doc\PDF\octave.pdf" File "${OCTAVE_ROOT}\doc\PDF\octave-a4.pdf" File "${OCTAVE_ROOT}\doc\PDF\liboctave.pdf" File "${OCTAVE_ROOT}\doc\PDF\refcard-*.pdf" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Documentation\PDF" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\PDF\Octave.lnk" "$INSTDIR\doc\PDF\octave.pdf" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\PDF\Quick Refernce Card.lnk" "$INSTDIR\doc\PDF\refcard-a4.pdf" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\PDF\Octave C++ API.lnk" "$INSTDIR\doc\PDF\liboctave.pdf" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\PDF\FAQ.lnk" "$INSTDIR\doc\PDF\Octave-FAQ.pdf" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd SectionGroupEnd SectionGroup /e "Misc" GRP_MISC Section "Tools" SEC_TOOLS SetOutPath "$INSTDIR\bin" SetOverwrite try File "${VCLIBS_ROOT}\bin\less.exe" ;File "${VCLIBS_ROOT}\bin\pcre70.dll" File "${VCLIBS_ROOT}\bin\sed.exe" File "${VCLIBS_ROOT}\bin\iconv.dll" File "${VCLIBS_ROOT}\bin\intl.dll" File "${VCLIBS_ROOT}\bin\makeinfo.exe" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section "SciTE editor" SEC_SCITE SetOutPath "$INSTDIR\tools\wscite" SetOverwrite try File /r /x License.txt /x matlab.properties "${SCITE_ROOT}\*.*" File "matlab.properties.octave" StrCpy $0 "$INSTDIR\tools\wscite\matlab.properties.octave" StrCpy $1 "$INSTDIR\tools\wscite\matlab.properties" Call ReplaceOctDir Delete "$INSTDIR\tools\wscite\matlab.properties.octave" SetOutPath "$INSTDIR\license" File /oname=COPYRIGHT.SCITE "${SCITE_ROOT}\License.txt" SetOutPath "$INSTDIR" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\SciTE editor.lnk" "$INSTDIR\tools\wscite\SciTE.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section /o "Console" SEC_CONSOLE SetOutPath "$INSTDIR\tools\console" SetOverwrite try File /x console.xml "${CONSOLE_ROOT}\*.*" IfFileExists "$WINDIR\system32\msvcr71.dll" no_runtime_71 File "C:\WINDOWS\system32\msvcr71.dll" File "C:\WINDOWS\system32\msvcp71.dll" no_runtime_71: StrCpy $0 "$INSTDIR\tools\console\console_oct.xml" StrCpy $1 "$INSTDIR\tools\console\console.xml" Call ReplaceOctDir Delete "$INSTDIR\tools\console\console_oct.xml" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Octave.lnk" "$INSTDIR\tools\console\Console.exe" \ "" "$INSTDIR\bin\octave.ico" CreateShortCut "$DESKTOP\Octave.lnk" "$INSTDIR\tools\console\Console.exe" "" \ "$INSTDIR\bin\octave.ico" 0 !insertmacro MUI_STARTMENU_WRITE_END SectionEnd SectionGroupEnd Section -AdditionalIcons SetOutPath $INSTDIR !insertmacro MUI_STARTMENU_WRITE_BEGIN Application WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Octave Home Page.lnk" "$INSTDIR\${PRODUCT_NAME}.url" WriteIniStr "$INSTDIR\Octave-Forge.url" "InternetShortcut" "URL" "${OCTAVE_FORGE_WEB_SITE}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Octave-Forge Home Page.lnk" "$INSTDIR\Octave-Forge.url" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe" CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Documentation" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation\README.lnk" "$INSTDIR\README.txt" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\octave-${OCTAVE_VERSION}.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Packages" "$INSTDIR\share\octave\packages" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\octave-${OCTAVE_VERSION}.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_KEY}" "InstallPath" "$INSTDIR" WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_KEY}" "Version" "${OCTAVE_VERSION}" InitPluginsDir File "/oname=$PLUGINSDIR\do_pkg_init.m" "do_pkg_init.m" ExecWait '"$INSTDIR\bin\octave.exe" -qf "$PLUGINSDIR\do_pkg_init.m"' SectionEnd ; Section descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CORE} "Octave core files" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DEV} "Octave development files (include and library files)" !ifdef USE_MSYS !insertmacro MUI_DESCRIPTION_TEXT ${SEC_MSYS} "UNIX-like shell environment, required to use the Octave package manager" !endif !ifdef USE_OCTAVE_FORGE !insertmacro MUI_DESCRIPTION_TEXT ${GRP_FORGE} "Additional toolboxes for Octave" !include "octave_forge_desc.nsi" !endif !insertmacro MUI_DESCRIPTION_TEXT ${SEC_GNUPLOT} "Basic plotting component of Octave. If not selected, Gnuplot binary must in your PATH." !ifdef USE_OCTPLOT !insertmacro MUI_DESCRIPTION_TEXT ${SEC_OPLOT} "Alternative graphics/plot engine for Octave" !endif !ifdef JHANDLES_VERSION !insertmacro MUI_DESCRIPTION_TEXT ${SEC_JHANDLES} "Java/OpenGL based 2D/3D graphics backend for Octave with high compatibility with Matlab handle graphics" !endif !insertmacro MUI_DESCRIPTION_TEXT ${SEC_TOOLS} "Additional GNU tools required (less, makeinfo, sed...). If not selected, those tools must be available in your PATH." !insertmacro MUI_DESCRIPTION_TEXT ${SEC_VC} "Microsoft C/C++ runtime libraries required by Octave. It is STRONGLY recommended to use the default setting." !insertmacro MUI_DESCRIPTION_TEXT ${SEC_SCITE} "Powerful code editor with syntax highlighting, directly accessible from the octave prompt (http://www.scintilla.org)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CONSOLE} "Advanced console for Windows, with multi-tab and editing capabilities (http://sourceforge.net/projects/console)" !insertmacro MUI_DESCRIPTION_TEXT ${GRP_CORE} "" !insertmacro MUI_DESCRIPTION_TEXT ${GRP_GRAPHICS} "" !insertmacro MUI_DESCRIPTION_TEXT ${GRP_MISC} "" !insertmacro MUI_DESCRIPTION_TEXT ${GRP_DOC} "" !insertmacro MUI_DESCRIPTION_TEXT ${GRP_LINALG} "" !insertmacro MUI_DESCRIPTION_TEXT ${DOC_HTML} "" !insertmacro MUI_DESCRIPTION_TEXT ${DOC_PDF} "" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_LA_GEN} "" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_LA_P4SSE2} "" !ifdef ATLAS_PM !insertmacro MUI_DESCRIPTION_TEXT ${SEC_LA_PMSSE2} "" !endif !insertmacro MUI_FUNCTION_DESCRIPTION_END Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 Abort Call un.DetectAdmin Pop $0 StrCmp $0 1 0 endadmin SetShellVarContext all endadmin: FunctionEnd Function .onInit !insertmacro MUI_INSTALLOPTIONS_EXTRACT "atlascpu.ini" !insertmacro MUI_INSTALLOPTIONS_EXTRACT "graphics.ini" !insertmacro MUI_INSTALLOPTIONS_WRITE "atlascpu.ini" "Field 3" "ListItems" "${LA_ALL}" !insertmacro SetSectionFlag ${SEC_CORE} ${SF_RO} ;!insertmacro SetSectionFlag ${SEC_VC} ${SF_RO} !insertmacro SetSectionFlag ${SEC_LA_GEN} ${SF_RO} !insertmacro SetSectionFlag ${SEC_LA_P4SSE2} ${SF_RO} !ifdef ATLAS_PM !insertmacro SetSectionFlag ${SEC_LA_PMSSE2} ${SF_RO} !endif Call DetectWinVer Call CheckMSVCR80 Pop $0 StrCmp $0 1 noruntime !insertmacro SetSectionFlag ${SEC_VC} ${SF_SELECTED} noruntime: Call DetectJVM Pop $0 StrCmp "" "$0" nojvm jvm jvm: !insertmacro SetSectionFlag ${SEC_java} ${SF_SELECTED} !insertmacro SetSectionFlag ${SEC_JHANDLES} ${SF_SELECTED} Goto endjvm nojvm: !insertmacro ClearSectionFlag ${SEC_java} ${SF_SELECTED} !insertmacro ClearSectionFlag ${SEC_JHANDLES} ${SF_SELECTED} endjvm: !ifdef USE_MSYS Call DetectMSYS Pop $0 StrCmp $0 1 msys nomsys msys: !insertmacro ClearSectionFlag ${SEC_MSYS} ${SF_SELECTED} Goto endmsys nomsys: !insertmacro SetSectionFlag ${SEC_MSYS} ${SF_SELECTED} endmsys: !endif Call DetectAdmin Pop $0 StrCmp $0 1 0 endadmin SetShellVarContext all endadmin: FunctionEnd Function AtlasCpu !insertmacro MUI_HEADER_TEXT "CPU selection" "Choose the CPU type corresponding to your system." ReadRegStr $0 HKLM HARDWARE\DESCRIPTION\System\CentralProcessor\0 "ProcessorNameString" StrCpy $1 10 System::Call "kernel32::IsProcessorFeaturePresent(i) &i1 (r1) .r1" StrCmp $1 1 0 +4 StrCpy $1 " (SSE2 detected)" !insertmacro MUI_INSTALLOPTIONS_WRITE "atlascpu.ini" "Field 3" "State" "${LA_P4}" Goto +2 StrCpy $1 " (SSE2 not detected)" !insertmacro MUI_INSTALLOPTIONS_WRITE "atlascpu.ini" "Field 2" "Text" "$0$1" !insertmacro MUI_INSTALLOPTIONS_DISPLAY "atlascpu.ini" FunctionEnd Function AtlasCpuEnd validate: !insertmacro ClearSectionFlag ${SEC_LA_GEN} ${SF_SELECTED} !insertmacro ClearSectionFlag ${SEC_LA_P4SSE2} ${SF_SELECTED} !ifdef ATLAS_PM !insertmacro ClearSectionFlag ${SEC_LA_PMSSE2} ${SF_SELECTED} !endif !insertmacro MUI_INSTALLOPTIONS_READ $0 "atlascpu.ini" "Field 3" "State" StrCmp $0 "${LA_GEN}" generic0 StrCmp $0 "${LA_P4}" p4sse20 !ifdef ATLAS_PM StrCmp $0 "${LA_PM}" pmsse20 !endif Abort "Internal error: unexpected CPU type" generic0: !insertmacro SetSectionFlag ${SEC_LA_GEN} ${SF_SELECTED} Goto atlasend p4sse20: !insertmacro SetSectionFlag ${SEC_LA_P4SSE2} ${SF_SELECTED} Goto atlasend !ifdef ATLAS_PM pmsse20: !insertmacro SetSectionFlag ${SEC_LA_PMSSE2} ${SF_SELECTED} Goto atlasend !endif atlasend: FunctionEnd Function Graphics Push $0 !insertmacro MUI_HEADER_TEXT "Graphics backend selection" "Choose the graphics backend you want to use by default." !ifdef USE_OCTPLOT !insertmacro SectionFlagIsSet ${SEC_OPLOT} ${SF_SELECTED} octplot no_octplot octplot: !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 5" "Flags" "" !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 6" "Flags" "NOTABSTOP" Goto end_octplot no_octplot: !endif !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 5" "Flags" "DISABLED" !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 6" "Flags" "NOTABSTOP|DISABLED" !insertmacro MUI_INSTALLOPTIONS_READ $0 "graphics.ini" "Field 5" "State" StrCmp $0 0 end_octplot !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 1" "State" 1 !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 5" "State" 0 end_octplot: !insertmacro SectionFlagIsSet ${SEC_JHANDLES} ${SF_SELECTED} jhandles no_jhandles jhandles: !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 3" "Flags" "" !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 4" "Flags" "NOTABSTOP" Goto end_jhandles no_jhandles: !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 3" "Flags" "DISABLED" !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 4" "Flags" "NOTABSTOP|DISABLED" !insertmacro MUI_INSTALLOPTIONS_READ $0 "graphics.ini" "Field 3" "State" StrCmp $0 0 end_jhandles !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 1" "State" 1 !insertmacro MUI_INSTALLOPTIONS_WRITE "graphics.ini" "Field 3" "State" 0 end_jhandles: !insertmacro MUI_INSTALLOPTIONS_DISPLAY "graphics.ini" Pop $0 FunctionEnd Function GraphicsEnd Push $0 check_gnuplot: !insertmacro MUI_INSTALLOPTIONS_READ $0 "graphics.ini" "Field 1" "State" StrCmp $0 0 check_jhandles StrCpy $DEFAULT_GRAPHICS_BACKEND "gnuplot" Goto done check_jhandles: !insertmacro MUI_INSTALLOPTIONS_READ $0 "graphics.ini" "Field 3" "State" StrCmp $0 0 check_octplot StrCpy $DEFAULT_GRAPHICS_BACKEND "jhandles" Goto done check_octplot: !insertmacro MUI_INSTALLOPTIONS_READ $0 "graphics.ini" "Field 5" "State" StrCmp $0 0 default StrCpy $DEFAULT_GRAPHICS_BACKEND "octplot" Goto done default: StrCpy $DEFAULT_GRAPHICS_BACKEND "gnuplot" done: Pop $0 FunctionEnd Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP RMDir /r "$INSTDIR" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Octave Home Page.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Octave-Forge Home Page.lnk" ; Delete "$SMPROGRAMS\$ICONS_GROUP\Help.lnk" Delete "$DESKTOP\Octave.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Octave.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\SciTE editor.lnk" RMDir /r "$SMPROGRAMS\$ICONS_GROUP\Documentation" RMDir "$SMPROGRAMS\$ICONS_GROUP" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" DeleteRegKey ${PRODUCT_ROOT_KEY} "${PRODUCT_KEY}" SetAutoClose true SectionEnd Function CheckMSVCR80 Push $0 Push $1 Push $2 Push $3 Push $4 StrCpy $0 0 FindFirst $1 $2 "$WINDIR\WinSxS\*" # Under Win2K, force runtime installation StrCmp $IS_WIN2K 1 done 0 loop: StrCmp $2 "" done FindFirst $3 $4 "$WINDIR\WinSxS\$2\msvcr80.dll" FindClose $3 StrCmp $4 "" 0 found FindNext $1 $2 Goto loop found: StrCpy $0 1 done: FindClose $0 Pop $4 Pop $3 Pop $2 Pop $1 ; Pop $0 Exch $0 FunctionEnd Function DetectAdmin Push $0 Push $1 ClearErrors UserInfo::GetName IfErrors win9x Pop $0 UserInfo::GetAccountType Pop $1 StrCmp $1 "Admin" win9x 0 StrCpy $0 0 Goto done win9x: StrCpy $0 1 done: Pop $1 Exch $0 FunctionEnd Function un.DetectAdmin Push $0 Push $1 ClearErrors UserInfo::GetName IfErrors win9x Pop $0 UserInfo::GetAccountType Pop $1 StrCmp $1 "Admin" win9x 0 StrCpy $0 0 Goto done win9x: StrCpy $0 1 done: Pop $1 Exch $0 FunctionEnd Function ReplaceOctDir Push $0 Push $1 Push $2 Push $3 ClearErrors FileOpen $2 $0 r IfErrors done FileOpen $3 $1 w IfErrors close doit: FileRead $2 $0 StrCmp $0 "" close1 0 ${WordReplace} $0 "@OCTAVE_DIR@" "$INSTDIR" "+" $1 FileWrite $3 $1 Goto doit close1: FileClose $3 close: FileClose $2 done: Pop $3 Pop $2 Pop $1 Pop $0 FunctionEnd Function DetectJVM Push $0 ReadRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion Exch $0 FunctionEnd !ifdef USE_MSYS Function DetectMSYS Push $0 StrCpy $0 1 IfFileExists "$WINDIR\MSYS.INI" done StrCpy $0 0 done: Exch $0 FunctionEnd !endif Function DetectWinVer Push $0 Push $1 ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion IfErrors is_error is_winnt is_winnt: StrCpy $1 $0 1 StrCmp $1 6 is_winxp StrCmp $1 5 0 is_error StrCmp $0 "5.0" is_win2k StrCmp $0 "5.1" is_winxp StrCmp $0 "5.2" is_winxp64 Goto is_error is_win2k: StrCpy $IS_WIN2K 1 Goto done is_winxp64: is_winxp: StrCpy $IS_WIN2K 0 Goto done is_error: StrCpy $1 $0 ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" ProductName IfErrors 0 +4 ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion" Version IfErrors 0 +2 StrCpy $0 "Unknown" MessageBox MB_ICONSTOP|MB_OK "This version of Octave cannot be installed on this system.$\r$\nSupported systems are Windows 2000 and Windows XP.$\r$\n$\r$\nCurrent system: $0 (version: $1)" Abort done: Pop $1 Pop $0 FunctionEnd Var DEP_FLAG !macro CheckDependency pack1 pack2 Push ${pack1} Push ${pack2} Call CheckDependency !macroend Function CheckDependency Exch $1 Exch Exch $0 !insertmacro SectionFlagIsSet $0 ${SF_SELECTED} 0 done !insertmacro SectionFlagIsSet $1 ${SF_SELECTED} done "" StrCpy $DEP_FLAG 1 !insertmacro SetSectionFlag $1 ${SF_SELECTED} done: Pop $0 Pop $1 FunctionEnd Function componentsLeave StrCpy $DEP_FLAG 0 !ifdef USE_OCTAVE_FORGE !insertmacro CheckDependency ${SEC_JHANDLES} ${SEC_java} !include "octave_forge_deps.nsi" !endif StrCmp $DEP_FLAG 0 +2 MessageBox MB_OK|MB_ICONINFORMATION "Some components were automatically selected to satisfy dependencies" !ifdef JHANDLES_VERSION !insertmacro SectionFlagIsSet ${SEC_JHANDLES} ${SF_SELECTED} check_jvm "" !endif !insertmacro SectionFlagIsSet ${SEC_java} ${SF_SELECTED} check_jvm done check_jvm: Call DetectJVM Pop $0 StrCmp "" "$0" 0 done MessageBox MB_ICONEXCLAMATION|MB_YESNO "The Java and/or JHandles components have been selected. These components require$\r$\nthe Java Runtime Environment from Sun (http://java.sun.com) installed on your system,$\r$\nbut it seems Java is not available on this system. Installing those components without$\r$\nJava available might prevent Octave from working correctly.$\r$\n$\r$\nProceed with installation anway?" IDYES done Abort done: FunctionEnd