123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988 |
- ;----------------------------------------------------------------------------------------------------------------------------
- ;GRASS GIS Installer for Windows
- ;Written by Marco Pasetti
- ;Updated for OSGeo4W by Colin Nielsen, Helmut Kudrnovsky, and Martin Landa
- ;Last Update: $Id$
- ;Mail to: grass-dev@lists.osgeo.org
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Select if you are building a "Development Version" (Devel) or a "Release Version" (Release) of the GRASS Installer
- !define INSTALLER_TYPE "Devel"
- ;----------------------------------------------------------------------------------------------------------------------------
- ;set compression configuration
- SetCompressor /SOLID lzma
- SetCompressorDictSize 128
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Version variables
- !if "@GRASS_VERSION_GIT@" == ""
- !define GIT_REVISION "0"
- !else
- !define GIT_REVISION "@GRASS_VERSION_GIT@"
- !endif
- !define BINARY_REVISION "1"
- !define VERSION_NUMBER "@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@"
- !define GRASS_BASE "GRASS GIS @GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@"
- !define GRASS_COMMAND "grass@GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@"
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Define Platform and installation folder
- ;----------------------------------------------------------------------------------------------------------------------------
- !define PLATFORM "x86_64"
- InstallDir "$PROGRAMFILES64\${GRASS_BASE}"
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Don't modify the following lines
- ;----------------------------------------------------------------------------------------------------------------------------
- ;NSIS Includes
- !include "MUI2.nsh"
- !include "LogicLib.nsh"
- !include "Sections.nsh"
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Set the installer variables, depending on the selected version to build
- !define PACKAGE_FOLDER ".\GRASS-@GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@-Package"
- !if ${INSTALLER_TYPE} == "Release"
- !define INSTALLER_NAME "WinGRASS-${VERSION_NUMBER}-${BINARY_REVISION}-Setup.exe"
- !define DISPLAYED_NAME "GRASS GIS ${VERSION_NUMBER}-${BINARY_REVISION}"
- !define CHECK_INSTALL_NAME "GRASS GIS @GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@"
- !else
- !define INSTALLER_NAME "WinGRASS-${VERSION_NUMBER}-${GIT_REVISION}-${BINARY_REVISION}-Setup.exe"
- !define DISPLAYED_NAME "GRASS GIS ${VERSION_NUMBER}-${GIT_REVISION}-${BINARY_REVISION}"
- !define CHECK_INSTALL_NAME "GRASS GIS @GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@ GIT"
- !endif
- ;Define the source path of the demolocation files
- !define DEMOLOCATION_PATH "${PACKAGE_FOLDER}\demolocation"
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Publisher variables
- !define PUBLISHER "GRASS Development Team"
- !define WEB_SITE "https://grass.osgeo.org"
- !define WIKI_PAGE "https://grass.osgeo.org/wiki"
- ;----------------------------------------------------------------------------------------------------------------------------
- ;General Definitions
- ;Name of the application shown during install
- Name "${DISPLAYED_NAME}"
- ;Name of the output file (installer executable)
- OutFile "${INSTALLER_NAME}"
- ;Request application privileges for Windows
- RequestExecutionLevel admin
- ;Tell the installer to hide Install and Uninstall details as default
- ShowInstDetails hide
- ShowUnInstDetails hide
- ;----------------------------------------------------------------------------------------------------------------------------
- ;StrReplace Function
- ;Replaces all occurrences of a given needle within a haystack with another string
- ;Written by dandaman32
-
- Var STR_REPLACE_VAR_0
- Var STR_REPLACE_VAR_1
- Var STR_REPLACE_VAR_2
- Var STR_REPLACE_VAR_3
- Var STR_REPLACE_VAR_4
- Var STR_REPLACE_VAR_5
- Var STR_REPLACE_VAR_6
- Var STR_REPLACE_VAR_7
- Var STR_REPLACE_VAR_8
-
- Function StrReplace
- Exch $STR_REPLACE_VAR_2
- Exch 1
- Exch $STR_REPLACE_VAR_1
- Exch 2
- Exch $STR_REPLACE_VAR_0
- StrCpy $STR_REPLACE_VAR_3 -1
- StrLen $STR_REPLACE_VAR_4 $STR_REPLACE_VAR_1
- StrLen $STR_REPLACE_VAR_6 $STR_REPLACE_VAR_0
- loop:
- IntOp $STR_REPLACE_VAR_3 $STR_REPLACE_VAR_3 + 1
- StrCpy $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_4 $STR_REPLACE_VAR_3
- StrCmp $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_1 found
- StrCmp $STR_REPLACE_VAR_3 $STR_REPLACE_VAR_6 done
- Goto loop
- found:
- StrCpy $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_3
- IntOp $STR_REPLACE_VAR_8 $STR_REPLACE_VAR_3 + $STR_REPLACE_VAR_4
- StrCpy $STR_REPLACE_VAR_7 $STR_REPLACE_VAR_0 "" $STR_REPLACE_VAR_8
- StrCpy $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_5$STR_REPLACE_VAR_2$STR_REPLACE_VAR_7
- StrLen $STR_REPLACE_VAR_6 $STR_REPLACE_VAR_0
- Goto loop
- done:
- Pop $STR_REPLACE_VAR_1 ; Prevent "invalid opcode" errors and keep the
- Pop $STR_REPLACE_VAR_1 ; stack as it was before the function was called
- Exch $STR_REPLACE_VAR_0
- FunctionEnd
-
- !macro _strReplaceConstructor OUT NEEDLE NEEDLE2 HAYSTACK
- Push "${HAYSTACK}"
- Push "${NEEDLE}"
- Push "${NEEDLE2}"
- Call StrReplace
- Pop "${OUT}"
- !macroend
-
- !define StrReplace '!insertmacro "_strReplaceConstructor"'
- ;----------------------------------------------------------------------------------------------------------------------------
- ;.onInit Function (called when the installer is nearly finished initializing)
- ;Check if GRASS is already installed on the system and, if yes, what version and binary release;
- ;depending on that, select the install procedure:
- ;1. first installation = if GRASS is not already installed
- ;install GRASS asking for the install PATH
- ;2. upgrade installation = if an older release of GRASS is already installed
- ;call the uninstaller of the currently installed GRASS release
- ;if the uninstall procedure succeeded, call the current installer without asking for the install PATH
- ;GRASS will be installed in the same PATH of the previous installation
- ;3. downgrade installation = if a newer release of GRASS is already installed
- ;call the uninstaller of the currently installed GRASS release
- ;if the uninstall procedure succeeded, call the current installer without asking for the install PATH
- ;GRASS will be installed in the same PATH of the previous installation
- ;4. repair installation = if the same release of GRASS is already installed
- ;call the uninstaller of the currently installed GRASS release
- ;if the uninstall procedure succeeded, call the current installer asking for the install PATH
- ;the currently installed release of GRASS is defined by the variable $INSTALLED_VERSION = $INSTALLED_GIT_REVISION + $INSTALLED_BINARY_REVISION
- Function .onInit
- Var /GLOBAL ASK_FOR_PATH
- StrCpy $ASK_FOR_PATH "YES"
- Var /GLOBAL UNINSTALL_STRING
- Var /GLOBAL INSTALL_PATH
-
- Var /GLOBAL INSTALLED_VERSION_NUMBER
- Var /GLOBAL INSTALLED_GIT_REVISION
- Var /GLOBAL INSTALLED_BINARY_REVISION
-
- Var /GLOBAL INSTALLED_VERSION
-
- Var /GLOBAL DISPLAYED_INSTALLED_VERSION
-
- Var /GLOBAL MESSAGE_0_
- Var /GLOBAL MESSAGE_1_
- Var /GLOBAL MESSAGE_2_
- Var /GLOBAL MESSAGE_3_
-
- ReadRegStr $UNINSTALL_STRING HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}" "UninstallString"
- ReadRegStr $INSTALL_PATH HKLM "Software\${GRASS_BASE}" "InstallPath"
- ReadRegStr $INSTALLED_VERSION_NUMBER HKLM "Software\${GRASS_BASE}" "VersionNumber"
- ReadRegStr $INSTALLED_GIT_REVISION HKLM "Software\${GRASS_BASE}" "GitRevision"
-
- ${If} $INSTALLED_GIT_REVISION == ""
- ReadRegStr $INSTALLED_GIT_REVISION HKLM "Software\${GRASS_BASE}" "Revision"
- ${EndIf}
-
- ReadRegStr $INSTALLED_BINARY_REVISION HKLM "Software\${GRASS_BASE}" "BinaryRevision"
-
- StrCpy $MESSAGE_0_ "${CHECK_INSTALL_NAME} is already installed on your system.$\r$\n"
- StrCpy $MESSAGE_0_ "$MESSAGE_0_$\r$\n"
-
- !if ${INSTALLER_TYPE} == "Release"
- ${If} $INSTALLED_BINARY_REVISION == ""
- StrCpy $DISPLAYED_INSTALLED_VERSION "$INSTALLED_VERSION_NUMBER"
- ${Else}
- StrCpy $DISPLAYED_INSTALLED_VERSION "$INSTALLED_VERSION_NUMBER-$INSTALLED_BINARY_REVISION"
- ${EndIf}
- !else
- StrCpy $DISPLAYED_INSTALLED_VERSION "$INSTALLED_VERSION_NUMBER-$INSTALLED_GIT_REVISION-$INSTALLED_BINARY_REVISION"
- !endif
-
- StrCpy $MESSAGE_0_ "$MESSAGE_0_The installed release is $DISPLAYED_INSTALLED_VERSION$\r$\n"
-
- StrCpy $MESSAGE_1_ "$MESSAGE_0_$\r$\n"
- StrCpy $MESSAGE_1_ "$MESSAGE_1_You are going to install a newer release of ${CHECK_INSTALL_NAME}$\r$\n"
- StrCpy $MESSAGE_1_ "$MESSAGE_1_$\r$\n"
- StrCpy $MESSAGE_1_ "$MESSAGE_1_Press OK to uninstall GRASS $DISPLAYED_INSTALLED_VERSION"
- StrCpy $MESSAGE_1_ "$MESSAGE_1_ and install ${DISPLAYED_NAME} or Cancel to quit."
-
- StrCpy $MESSAGE_2_ "$MESSAGE_0_$\r$\n"
- StrCpy $MESSAGE_2_ "$MESSAGE_2_You are going to install an older release of ${CHECK_INSTALL_NAME}$\r$\n"
- StrCpy $MESSAGE_2_ "$MESSAGE_2_$\r$\n"
- StrCpy $MESSAGE_2_ "$MESSAGE_2_Press OK to uninstall GRASS $DISPLAYED_INSTALLED_VERSION"
- StrCpy $MESSAGE_2_ "$MESSAGE_2_ and install ${DISPLAYED_NAME} or Cancel to quit."
-
- StrCpy $MESSAGE_3_ "$MESSAGE_0_$\r$\n"
- StrCpy $MESSAGE_3_ "$MESSAGE_3_This is the latest release available.$\r$\n"
- StrCpy $MESSAGE_3_ "$MESSAGE_3_$\r$\n"
- StrCpy $MESSAGE_3_ "$MESSAGE_3_Press OK to reinstall ${DISPLAYED_NAME} or Cancel to quit."
-
- IntOp $INSTALLED_GIT_REVISION $INSTALLED_GIT_REVISION * 1
- IntOp $INSTALLED_BINARY_REVISION $INSTALLED_BINARY_REVISION * 1
- IntOp $INSTALLED_VERSION $INSTALLED_GIT_REVISION + $INSTALLED_BINARY_REVISION
-
- !define /math VERSION ${GIT_REVISION} + ${BINARY_REVISION}
-
- ${If} $INSTALLED_VERSION_NUMBER == ""
- ${Else}
- ${If} $INSTALLED_VERSION < ${VERSION}
- MessageBox MB_OKCANCEL "$MESSAGE_1_" IDOK upgrade IDCANCEL quit_upgrade
- upgrade:
- StrCpy $ASK_FOR_PATH "NO"
- ExecWait '"$UNINSTALL_STRING" _?=$INSTALL_PATH' $0
- Goto continue_upgrade
- quit_upgrade:
- Abort
- continue_upgrade:
- ${ElseIf} $INSTALLED_VERSION > ${VERSION}
- MessageBox MB_OKCANCEL "$MESSAGE_2_" IDOK downgrade IDCANCEL quit_downgrade
- downgrade:
- StrCpy $ASK_FOR_PATH "NO"
- ExecWait '"$UNINSTALL_STRING" _?=$INSTALL_PATH' $0
- Goto continue_downgrade
- quit_downgrade:
- Abort
- continue_downgrade:
- ${ElseIf} $INSTALLED_VERSION = ${VERSION}
- MessageBox MB_OKCANCEL "$MESSAGE_3_" IDOK reinstall IDCANCEL quit_reinstall
- reinstall:
- ExecWait '"$UNINSTALL_STRING" _?=$INSTALL_PATH' $0
- Goto continue_reinstall
- quit_reinstall:
- Abort
- continue_reinstall:
- ${EndIf}
- ${EndIf}
-
- ${If} $INSTALLED_VERSION_NUMBER == ""
- ${Else}
- ${If} $0 = 0
- ${Else}
- Abort
- ${EndIf}
- ${EndIf}
- FunctionEnd
- ;----------------------------------------------------------------------------------------------------------------------------
- ;CheckUpdate Function
- ;Check if to show the MUI_PAGE_DIRECTORY during the installation (to ask for the install PATH)
- Function CheckUpdate
- ${If} $ASK_FOR_PATH == "NO"
- Abort
- ${EndIf}
-
- FunctionEnd
- ;----------------------------------------------------------------------------------------------------------------------------
- ;CheckInstDir Function
- ;this is commented out, because the installation path should be in $PROGRAMFILES
- ;Check if GRASS is going to be installed in a directory containing spaces
- ;if yes, show a warning message
- ;Function CheckInstDir
- ; Var /GLOBAL INSTDIR_TEST
- ; Var /GLOBAL INSTDIR_LENGTH
- ; Var /GLOBAL INSTDIR_TEST_LENGTH
- ; Var /GLOBAL MESSAGE_CHKINST_
- ;
- ; StrCpy $MESSAGE_CHKINST_ "WARNING: you are about to install GRASS into a directory that has spaces$\r$\n"
- ; StrCpy $MESSAGE_CHKINST_ "$MESSAGE_CHKINST_in either its name or the path of directories leading up to it.$\r$\n"
- ; StrCpy $MESSAGE_CHKINST_ "$MESSAGE_CHKINST_Some functionalities of GRASS might be hampered by this. We would highly$\r$\n"
- ; StrCpy $MESSAGE_CHKINST_ "$MESSAGE_CHKINST_appreciate if you tried and reported any problems, so that we can fix them.$\r$\n"
- ; StrCpy $MESSAGE_CHKINST_ "$MESSAGE_CHKINST_However, if you want to avoid any such issues, we recommend that you$\r$\n"
- ; StrCpy $MESSAGE_CHKINST_ "$MESSAGE_CHKINST_choose a simple installation path without spaces, such as: C:\${GRASS_BASE}.$\r$\n"
- ;
- ; ${StrReplace} "$INSTDIR_TEST" " " "" "$INSTDIR"
- ;
- ; StrLen $INSTDIR_LENGTH "$INSTDIR"
- ; StrLen $INSTDIR_TEST_LENGTH "$INSTDIR_TEST"
- ;
- ; ${If} $INSTDIR_TEST_LENGTH < $INSTDIR_LENGTH
- ; MessageBox MB_OK|MB_ICONEXCLAMATION "$MESSAGE_CHKINST_"
- ; ${EndIf}
- ;
- ;FunctionEnd
- ;----------------------------------------------------------------------------------------------------------------------------
- ;ReplaceLineString Function
- ;Replace String in an existing file
- ; code taken from http://nsis.sourceforge.net/Replace_line_that_starts_with_specified_string
- Function ReplaceLineStr
- Exch $R0 ; string to replace that whole line with
- Exch
- Exch $R1 ; string that line should start with
- Exch
- Exch 2
- Exch $R2 ; file
- Push $R3 ; file handle
- Push $R4 ; temp file
- Push $R5 ; temp file handle
- Push $R6 ; global
- Push $R7 ; input string length
- Push $R8 ; line string length
- Push $R9 ; global
-
- StrLen $R7 $R1
-
- GetTempFileName $R4
-
- FileOpen $R5 $R4 w
- FileOpen $R3 $R2 r
-
- ReadLoop:
- ClearErrors
- FileRead $R3 $R6
- IfErrors Done
-
- StrLen $R8 $R6
- StrCpy $R9 $R6 $R7 -$R8
- StrCmp $R9 $R1 0 +3
-
- FileWrite $R5 "$R0$\r$\n"
- Goto ReadLoop
-
- FileWrite $R5 $R6
- Goto ReadLoop
-
- Done:
-
- FileClose $R3
- FileClose $R5
-
- SetDetailsPrint none
- Delete $R2
- Rename $R4 $R2
- SetDetailsPrint both
-
- Pop $R9
- Pop $R8
- Pop $R7
- Pop $R6
- Pop $R5
- Pop $R4
- Pop $R3
- Pop $R2
- Pop $R1
- Pop $R0
- FunctionEnd
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Interface Settings
- !define MUI_ABORTWARNING
- !define MUI_ICON ".\Installer-Files\Install_GRASS.ico"
- !define MUI_UNICON ".\Installer-Files\Uninstall_GRASS.ico"
- !define MUI_HEADERIMAGE_BITMAP_NOSTETCH ".\Installer-Files\InstallHeaderImage.bmp"
- !define MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH ".\Installer-Files\UnInstallHeaderImage.bmp"
- !define MUI_WELCOMEFINISHPAGE_BITMAP ".\Installer-Files\WelcomeFinishPage.bmp"
- !define MUI_UNWELCOMEFINISHPAGE_BITMAP ".\Installer-Files\UnWelcomeFinishPage.bmp"
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Installer Pages
- !insertmacro MUI_PAGE_WELCOME
- ;These indented statements modify settings for MUI_PAGE_LICENSE
- ; (with thanks to Ubuntu)
- !define MUI_LICENSEPAGE_TEXT_BOTTOM "GRASS is software libre. You are encouraged and legally \
- entitled to copy, reinstall, modify, and redistribute this program \
- for yourself and your friends under the terms of the GPL. Happy \
- mapping!"
- !define MUI_LICENSEPAGE_BUTTON "Next >"
- !insertmacro MUI_PAGE_LICENSE "${PACKAGE_FOLDER}\GPL.TXT"
- !define MUI_PAGE_CUSTOMFUNCTION_PRE CheckUpdate
- !insertmacro MUI_PAGE_DIRECTORY
- ;Page custom CheckInstDir
- !insertmacro MUI_PAGE_COMPONENTS
- !insertmacro MUI_PAGE_INSTFILES
- ;These indented statements modify settings for MUI_PAGE_FINISH
- !define MUI_FINISHPAGE_NOAUTOCLOSE
- !define MUI_FINISHPAGE_RUN
- !define MUI_FINISHPAGE_RUN_NOTCHECKED
- !define MUI_FINISHPAGE_RUN_TEXT "Launch GRASS GIS"
- !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchGrass"
- !define MUI_FINISHPAGE_SHOWREADME
- !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
- !define MUI_FINISHPAGE_SHOWREADME_TEXT "View the reference manual"
- !define MUI_FINISHPAGE_SHOWREADME_FUNCTION "ViewReadme"
- !insertmacro MUI_PAGE_FINISH
- !insertmacro MUI_UNPAGE_WELCOME
- !insertmacro MUI_UNPAGE_CONFIRM
- !insertmacro MUI_UNPAGE_INSTFILES
- !insertmacro MUI_UNPAGE_FINISH
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Language files
- !insertmacro MUI_LANGUAGE "English"
- ;----------------------------------------------------------------------------------------------------------------------------
- ;launch Grass Gis by exit the installation wizard
- Function LaunchGrass
- ExecShell "" "$DESKTOP\${GRASS_BASE}.lnk"
- FunctionEnd
- ;----------------------------------------------------------------------------------------------------------------------------
- ;launch reference manual by exit the installation wizard
- Function ViewReadme
- ExecShell "open" "$INSTDIR\docs\html\index.html"
- FunctionEnd
- ;----------------------------------------------------------------------------------------------------------------------------
- ;Installer Sections
- ;Declares the variables for optional Sample Data Sections
- Var /GLOBAL HTTP_PATH
- Var /GLOBAL ARCHIVE_NAME
- Var /GLOBAL EXTENDED_ARCHIVE_NAME
- Var /GLOBAL ORIGINAL_UNTAR_FOLDER
- Var /GLOBAL CUSTOM_UNTAR_FOLDER
- Var /GLOBAL ARCHIVE_SIZE_KB
- Var /GLOBAL ARCHIVE_SIZE_MB
- Var /GLOBAL DOWNLOAD_MESSAGE_
- Section "GRASS" SecGRASS
- SectionIn RO
-
- ;Set the INSTALL_DIR variable
- Var /GLOBAL INSTALL_DIR
-
- ${If} $ASK_FOR_PATH == "NO"
- StrCpy $INSTALL_DIR "$INSTALL_PATH"
- ${Else}
- StrCpy $INSTALL_DIR "$INSTDIR"
- ${EndIf}
-
- ;Set to try to overwrite existing files
- SetOverwrite try
-
- ;Set the GIS_DATABASE directory
- SetShellVarContext current
- Var /GLOBAL GIS_DATABASE
- StrCpy $GIS_DATABASE "$DOCUMENTS\grassdata"
-
- ;Create the GIS_DATABASE directory
- CreateDirectory "$GIS_DATABASE"
- ;add Installer files
- SetOutPath "$INSTALL_DIR"
- File .\Installer-Files\GRASS-WebSite.url
- File .\Installer-Files\WinGRASS-README.url
-
- ;add GRASS files
- SetOutPath "$INSTALL_DIR"
- File /r ${PACKAGE_FOLDER}\*.*
- ;grant $INSTDIR\etc read write accessible and show if succeeded: error if it failed
- AccessControl::GrantOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "FullAccess"
- Pop $R0
- DetailPrint $R0
- ;grant modifying/overwriting fontcap file and show if succeeded: error if it failed
- AccessControl::GrantOnFile "$INSTDIR\etc\fontcap" "(S-1-5-32-545)" "FullAccess"
- Pop $R0
- DetailPrint $R0
-
- ;create run_gmkfontcap.bat
- ClearErrors
- FileOpen $0 $INSTALL_DIR\etc\run_gmkfontcap.bat w
- IfErrors done_create_run_gmkfontcap.bat
- FileWrite $0 '@echo off$\r$\n'
- FileWrite $0 'rem #########################################################################$\r$\n'
- FileWrite $0 'rem #$\r$\n'
- FileWrite $0 'rem # Run g.mkfontcap outside a grass session during installation$\r$\n'
- FileWrite $0 'rem #$\r$\n'
- FileWrite $0 'rem #########################################################################$\r$\n'
- FileWrite $0 'echo Setup of WinGRASS-${VERSION_NUMBER}$\r$\n'
- FileWrite $0 'echo Generating the font configuration file by scanning various directories for fonts.$\r$\n'
- FileWrite $0 'echo Please wait. Console window will close automatically ....$\r$\n'
- FileWrite $0 '$\r$\n'
- FileWrite $0 'rem set gisbase$\r$\n'
- FileWrite $0 'set GISBASE=$INSTALL_DIR$\r$\n'
- FileWrite $0 '$\r$\n'
- FileWrite $0 'rem set path to freetype dll$\r$\n'
- FileWrite $0 'set FREETYPEBASE=$INSTALL_DIR\extrabin;$INSTALL_DIR\lib$\r$\n'
- FileWrite $0 '$\r$\n'
- FileWrite $0 'rem set dependencies path$\r$\n'
- FileWrite $0 'set PATH=%FREETYPEBASE%;%PATH%$\r$\n'
- FileWrite $0 '$\r$\n'
- FileWrite $0 'rem GISRC must be set$\r$\n'
- FileWrite $0 'set GISRC=dummy$\r$\n'
- FileWrite $0 '$\r$\n'
- FileWrite $0 'rem run g.mkfontcap outside a grass session$\r$\n'
- FileWrite $0 '"%GISBASE%\bin\g.mkfontcap.exe" -o$\r$\n'
- FileWrite $0 'exit$\r$\n'
- FileClose $0
- done_create_run_gmkfontcap.bat:
- ;create run_gmkfontcap.bat.manifest
- ClearErrors
- FileOpen $0 $INSTALL_DIR\etc\run_gmkfontcap.bat.manifest w
- IfErrors done_create_run_gmkfontcap.bat.manifest
- FileWrite $0 ' <?xml version="1.0" encoding="UTF-8" standalone="yes"?>$\r$\n'
- FileWrite $0 '<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">$\r$\n'
- FileWrite $0 ' <assemblyIdentity version="1.0.0.0"$\r$\n'
- FileWrite $0 ' processorArchitecture="X86"$\r$\n'
- FileWrite $0 ' name="run_gmkfontcap"$\r$\n'
- FileWrite $0 ' type="win32"/>$\r$\n'
- FileWrite $0 ' <description>GRASS help script:run_gmkfontcap<description>$\r$\n'
- FileWrite $0 ' <!-- Identify the application security requirements. -->$\r$\n'
- FileWrite $0 ' <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">$\r$\n'
- FileWrite $0 ' <security>$\r$\n'
- FileWrite $0 ' <requestedPrivileges>$\r$\n'
- FileWrite $0 ' <requestedExecutionLevel$\r$\n'
- FileWrite $0 ' level="requireAdministrator"$\r$\n'
- FileWrite $0 ' uiAccess="false"/>$\r$\n'
- FileWrite $0 ' </requestedPrivileges>$\r$\n'
- FileWrite $0 ' </security>$\r$\n'
- FileWrite $0 ' </trustInfo>$\r$\n'
- FileWrite $0 '</assembly>$\r$\n'
- FileClose $0
- done_create_run_gmkfontcap.bat.manifest:
-
- ;Run g.mkfontcap outside a grass session during installation to catch all fonts
- ExecWait '"$INSTALL_DIR\etc\run_gmkfontcap.bat"'
- ;set $INSTDIR\etc back to read accessible
- AccessControl::SetOnFile "$INSTDIR\etc" "(S-1-5-32-545)" "GenericRead + GenericExecute"
-
- ;Install demolocation into the GIS_DATABASE directory
- SetOutPath "$GIS_DATABASE\demolocation"
- File /r ${DEMOLOCATION_PATH}\*.*
- RMDir /r "$GIS_DATABASE\demolocation\.svn"
- RMDir /r "$GIS_DATABASE\demolocation\PERMANENT\.svn"
- RMDir /r "$GIS_DATABASE\demolocation\PERMANENT\vector\.svn"
- RMDir /r "$GIS_DATABASE\demolocation\PERMANENT\vector\mysites\.svn"
- RMDir /r "$GIS_DATABASE\demolocation\PERMANENT\vector\point\.svn"
- RMDir /r "$GIS_DATABASE\demolocation\PERMANENT\dbf\.svn"
- ;Create the Uninstaller
- WriteUninstaller "$INSTALL_DIR\Uninstall-GRASS.exe"
-
- ;Registry Key Entries
-
- ;HKEY_LOCAL_MACHINE Install entries
- ;Set the Name, Version and Revision of GRASS + PublisherInfo + InstallPath
- WriteRegStr HKLM "Software\${GRASS_BASE}" "Name" "${GRASS_BASE}"
- WriteRegStr HKLM "Software\${GRASS_BASE}" "VersionNumber" "${VERSION_NUMBER}"
- WriteRegStr HKLM "Software\${GRASS_BASE}" "GitRevision" "${GIT_REVISION}"
- WriteRegStr HKLM "Software\${GRASS_BASE}" "BinaryRevision" "${BINARY_REVISION}"
- WriteRegStr HKLM "Software\${GRASS_BASE}" "Publisher" "${PUBLISHER}"
- WriteRegStr HKLM "Software\${GRASS_BASE}" "WebSite" "${WEB_SITE}"
- WriteRegStr HKLM "Software\${GRASS_BASE}" "InstallPath" "$INSTALL_DIR"
-
- ;HKEY_LOCAL_MACHINE Uninstall entries
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}" "DisplayName" "GRASS GIS @GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}" "UninstallString" "$INSTALL_DIR\Uninstall-GRASS.exe"
-
- !if ${INSTALLER_TYPE} == "Release"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}"\
- "DisplayVersion" "${VERSION_NUMBER}-${BINARY_REVISION}"
- !else
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}"\
- "DisplayVersion" "${VERSION_NUMBER}-${GIT_REVISION}-${BINARY_REVISION}"
- !endif
-
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}" "DisplayIcon" "$INSTALL_DIR\gui\icons\grass.ico"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}" "EstimatedSize" 1
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}" "HelpLink" "${WIKI_PAGE}"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}" "URLInfoAbout" "${WEB_SITE}"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}" "Publisher" "${PUBLISHER}"
-
- ;Create the Desktop Shortcut
- SetShellVarContext current
-
- CreateShortCut "$DESKTOP\${GRASS_BASE}.lnk" "$INSTALL_DIR\${GRASS_COMMAND}.bat" "--gui"\
- "$INSTALL_DIR\gui\icons\grass.ico" "" SW_SHOWNORMAL "" "Launch GRASS GIS ${VERSION_NUMBER}"
-
- ;Create the Windows Start Menu Shortcuts
- SetShellVarContext all
-
- CreateDirectory "$SMPROGRAMS\${GRASS_BASE}"
-
- CreateShortCut "$SMPROGRAMS\${GRASS_BASE}\${GRASS_BASE}.lnk" "$INSTALL_DIR\${GRASS_COMMAND}.bat" "--gui"\
- "$INSTALL_DIR\gui\icons\grass.ico" "" SW_SHOWNORMAL "" "Launch GRASS GIS ${VERSION_NUMBER}"
-
- CreateShortCut "$SMPROGRAMS\${GRASS_BASE}\Uninstall ${GRASS_BASE}.lnk" "$INSTALL_DIR\Uninstall-GRASS.exe" ""\
- "$INSTALL_DIR\Uninstall-GRASS.exe" "" SW_SHOWNORMAL "" "Uninstall GRASS GIS ${VERSION_NUMBER}"
-
- ;Create the grass_command.bat
- ClearErrors
- FileOpen $0 $INSTALL_DIR\${GRASS_COMMAND}.bat w
- IfErrors done_create_grass_command.bat
- FileWrite $0 '@echo off$\r$\n'
- FileWrite $0 'rem #########################################################################$\r$\n'
- FileWrite $0 'rem #$\r$\n'
- FileWrite $0 'rem # File dynamically created by NSIS installer script;$\r$\n'
- FileWrite $0 'rem #$\r$\n'
- FileWrite $0 'rem #########################################################################$\r$\n'
- FileWrite $0 'rem #$\r$\n'
- FileWrite $0 'rem # GRASS initialization bat script$\r$\n'
- FileWrite $0 'rem #$\r$\n'
- FileWrite $0 'rem #########################################################################$\r$\n'
- FileWrite $0 '$\r$\n'
- FileWrite $0 'set GISBASE=$INSTALL_DIR$\r$\n'
- FileWrite $0 '$\r$\n'
- FileWrite $0 'call "%GISBASE%\etc\env.bat"$\r$\n'
- FileWrite $0 '$\r$\n'
- FileWrite $0 'cd "%USERPROFILE%"'
- FileWrite $0 '$\r$\n'
- FileWrite $0 '"%GRASS_PYTHON%" "%GISBASE%\etc\grass@GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@.py" %*'
- FileWrite $0 '$\r$\n$\r$\n'
- FileWrite $0 'if %ERRORLEVEL% GEQ 1 pause'
- FileClose $0
- done_create_grass_command.bat:
-
- ;Set the UNIX_LIKE GRASS Path
- Var /GLOBAL UNIX_LIKE_DRIVE
- Var /GLOBAL UNIX_LIKE_GRASS_PATH
-
- StrCpy $UNIX_LIKE_DRIVE "$INSTALL_DIR" 3
- StrCpy $UNIX_LIKE_GRASS_PATH "$INSTALL_DIR" "" 3
-
- ;replace "\" with "/" in $UNIX_LIKE_DRIVE
- ${StrReplace} "$UNIX_LIKE_DRIVE" "\" "/" "$UNIX_LIKE_DRIVE"
-
- ;replace ":" with "" in $UNIX_LIKE_DRIVE
- ${StrReplace} "$UNIX_LIKE_DRIVE" ":" "" "$UNIX_LIKE_DRIVE"
-
- ;replace "\" with "/" in $UNIX_LIKE_GRASS_PATH
- ${StrReplace} "$UNIX_LIKE_GRASS_PATH" "\" "/" "$UNIX_LIKE_GRASS_PATH"
- ;Set the USERNAME variable
- Var /GLOBAL USERNAME
- Var /GLOBAL PROFILE_DRIVE
- Var /GLOBAL PROFILE_ROOT
- ;It first searches for the Key Regestry value "Logon User Name" in HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer"
- ReadRegStr $USERNAME HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer" "Logon User Name"
- ;If the Key Registry value is empty, it uses a work around, retrieving the Username string from the System User Profile variable ($PROFILE)
- ;It first read the $PROFILE variable, to scan the OS version:
- ;If equal to "drive:\Users\UserName", the OS is Vista, and the $USERNAME variable set to $PROFILE - "drive:\Users\"
- ;If not, the OS is XP or previous, and the $USERNAME variable set to $PROFILE - "drive:\Documents and Settings\"
-
- ${If} $USERNAME == ""
- StrCpy $PROFILE_DRIVE "$PROFILE" 2
- StrCpy $PROFILE_ROOT "$PROFILE" 5 -3
- ${If} $USERNAME = "Users"
- ${StrReplace} "$USERNAME" "$PROFILE_DRIVE\Users\" "" "$PROFILE"
- ${Else}
- ${StrReplace} "$USERNAME" "$PROFILE_DRIVE\Documents and Settings\" "" "$PROFILE"
- ${EndIf}
- ${EndIf}
-
- ;Get the short form of the install path (to allow for paths with spaces)
- VAR /GLOBAL INST_DIR_SHORT
- GetFullPathName /SHORT $INST_DIR_SHORT $INSTALL_DIR
- ;Set the Unix-Like GIS_DATABASE Path
- ;Var /GLOBAL UNIX_LIKE_GIS_DATABASE_PATH
-
- ;replace \ with / in $GIS_DATABASE
- ;${StrReplace} "$UNIX_LIKE_GIS_DATABASE_PATH" "\" "/" "$GIS_DATABASE"
- SetShellVarContext current
- ${If} ${FileExists} "$APPDATA\GRASS@GRASS_VERSION_MAJOR@\rc"
- DetailPrint "File $APPDATA\GRASS@GRASS_VERSION_MAJOR@\rc already exists. Skipping."
- ${Else}
- ;create $APPDATA\GRASS@GRASS_VERSION_MAJOR@\rc
- ClearErrors
- CreateDirectory $APPDATA\GRASS@GRASS_VERSION_MAJOR@
- FileOpen $0 $APPDATA\GRASS@GRASS_VERSION_MAJOR@\rc w
- IfErrors done_create_grass_rc
- FileWrite $0 'GISDBASE: $GIS_DATABASE$\r$\n'
- FileWrite $0 'LOCATION_NAME: demolocation$\r$\n'
- FileWrite $0 'MAPSET: PERMANENT$\r$\n'
- FileClose $0
- done_create_grass_rc:
- ${EndIf}
- ;replace gisbase
- Push "$INSTDIR\etc\grass@GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@.py" ; file to modify
- Push 'gisbase = "/c/OSGeo4W/apps/grass/grass-@GRASS_VERSION_MAJOR@.@GRASS_VERSION_MINOR@.@GRASS_VERSION_RELEASE@"' ; string that a line must begin with *WS Sensitive*
- Push 'gisbase = "$INSTDIR"' ; string to replace whole line with
- Call ReplaceLineStr
-
- ;replace config_projshare
- Push "$INSTDIR\etc\grass@GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@.py" ; file to modify
- Push 'config_projshare = "/c/OSGeo4W/share/proj"' ; string that a line must begin with *WS Sensitive*
- Push 'config_projshare = "$INSTDIR\share\proj"' ; string to replace whole line with
- Call ReplaceLineStr
- ;replace BU with numeric group name for local users
- AccessControl::SetOnFile "$INSTDIR\etc\grass@GRASS_VERSION_MAJOR@@GRASS_VERSION_MINOR@.py" "(S-1-5-32-545)" "GenericRead + GenericExecute"
- SectionEnd
- ;--------------------------------------------------------------------------
- Function DownloadInstallMSRuntime
- IntOp $ARCHIVE_SIZE_MB $ARCHIVE_SIZE_KB / 1024
- StrCpy $DOWNLOAD_MESSAGE_ "The installer will download the $EXTENDED_ARCHIVE_NAME.$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_These system libraries from Microsoft are needed for programs"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ built with Microsoft's Visual C++ compiler, such as Python and"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ GDAL which ship with GRASS, since MS does not include them by"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ default. You might already have them installed by other software,"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ if so you don't need to install them again, but if not GRASS will"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ fail to start and you will see errors like 'Missing MSVCR71.dll"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ or MSVCP100.dll'.$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_The archive is about $ARCHIVE_SIZE_MB MB and may take"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ several minutes to download.$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_The $EXTENDED_ARCHIVE_NAME will be copied to:$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$TEMP\$CUSTOM_UNTAR_FOLDER.$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_Press OK to continue and install the runtimes, or Cancel"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ to skip the download and complete the GRASS"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ installation without the $EXTENDED_ARCHIVE_NAME.$\r$\n"
- MessageBox MB_OKCANCEL "$DOWNLOAD_MESSAGE_" IDOK download IDCANCEL cancel_download
-
- download:
- SetShellVarContext current
- InitPluginsDir
- NSISdl::download "$HTTP_PATH/$ARCHIVE_NAME" "$TEMP\$ARCHIVE_NAME"
- Pop $0
- StrCmp $0 "success" download_ok download_failed
-
- download_ok:
- InitPluginsDir
- untgz::extract "-d" "$TEMP\$ORIGINAL_UNTAR_FOLDER" "-zbz2" "$TEMP\$ARCHIVE_NAME"
- Pop $0
- StrCmp $0 "success" untar_ok untar_failed
-
- download_failed:
- DetailPrint "$0" ;print error message to log
- MessageBox MB_OK "Download Failed.$\r$\nGRASS will be installed without the $EXTENDED_ARCHIVE_NAME."
- Goto end
-
- cancel_download:
- MessageBox MB_OK "Download Cancelled.$\r$\nGRASS will be installed without the $EXTENDED_ARCHIVE_NAME."
- Goto end
-
- untar_failed:
- DetailPrint "$0" ;print error message to log
- untar_ok:
- DetailPrint "Archive successfully unzipped."
- DetailPrint "Copying runtime files ..."
- CopyFiles "$TEMP\$ORIGINAL_UNTAR_FOLDER\bin\*.dll" "$INSTALL_DIR\extrabin"
- DetailPrint "MS runtime files installed."
- Goto end
-
- end:
- FunctionEnd
- Section "Important Microsoft Runtime DLLs" SecMSRuntime
- ;Set the size (in KB) of the archive file
- StrCpy $ARCHIVE_SIZE_KB 833
-
- ;Set the size (in KB) of the unpacked archive file
- AddSize 13500
-
- StrCpy $HTTP_PATH "http://download.osgeo.org/osgeo4w/v2/${PLATFORM}/release/msvcrt2019/"
- StrCpy $ARCHIVE_NAME "msvcrt2019-14.2-1.tar.bz2"
- StrCpy $EXTENDED_ARCHIVE_NAME "Microsoft Visual C++ Redistributable Packages"
- StrCpy $ORIGINAL_UNTAR_FOLDER "install_msruntime"
-
- Call DownloadInstallMSRuntime
- SectionEnd
- Function DownloadDataSet
- ; IntOp $ARCHIVE_SIZE_MB $ARCHIVE_SIZE_KB / 1024
-
- StrCpy $DOWNLOAD_MESSAGE_ "The installer will download the $EXTENDED_ARCHIVE_NAME sample data set.$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n"
- ; StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_The archive is about $ARCHIVE_SIZE_MB MB and may take"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_The archive is about $ARCHIVE_SIZE_KB KB and may take"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ several minutes to download.$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_The $EXTENDED_ARCHIVE_NAME dataset will be copied to:$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$GIS_DATABASE\$CUSTOM_UNTAR_FOLDER.$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_$\r$\n"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_Press OK to continue or Cancel to skip the download and complete the GRASS"
- StrCpy $DOWNLOAD_MESSAGE_ "$DOWNLOAD_MESSAGE_ installation without the $EXTENDED_ARCHIVE_NAME data set.$\r$\n"
-
- MessageBox MB_OKCANCEL "$DOWNLOAD_MESSAGE_" IDOK download IDCANCEL cancel_download
-
- download:
- SetShellVarContext current
- InitPluginsDir
- NSISdl::download "$HTTP_PATH/$ARCHIVE_NAME" "$TEMP\$ARCHIVE_NAME"
- Pop $0
- StrCmp $0 "success" download_ok download_failed
-
- download_ok:
- InitPluginsDir
- untgz::extract "-d" "$GIS_DATABASE" "$TEMP\$ARCHIVE_NAME"
- Pop $0
- StrCmp $0 "success" untar_ok untar_failed
-
- untar_ok:
- Rename "$GIS_DATABASE\$ORIGINAL_UNTAR_FOLDER" "$GIS_DATABASE\$CUSTOM_UNTAR_FOLDER"
- Delete "$TEMP\$ARCHIVE_NAME"
- Goto end
-
- download_failed:
- DetailPrint "$0" ;print error message to log
- MessageBox MB_OK "Download Failed.$\r$\nGRASS will be installed without the $EXTENDED_ARCHIVE_NAME sample data set."
- Goto end
-
- cancel_download:
- MessageBox MB_OK "Download Cancelled.$\r$\nGRASS will be installed without the $EXTENDED_ARCHIVE_NAME sample data set."
- Goto end
-
- untar_failed:
- DetailPrint "$0" ;print error message to log
-
- end:
- FunctionEnd
- Section /O "North Carolina (Wake County) Data Set" SecNorthCarolinaSDB
- ;Set the size (in KB) of the archive file
- StrCpy $ARCHIVE_SIZE_KB 144213
-
- ;Set the size (in KB) of the unpacked archive file
- AddSize 254521
-
- StrCpy $HTTP_PATH "https://grass.osgeo.org/sampledata/north_carolina/"
- StrCpy $ARCHIVE_NAME "nc_spm_08_grass7.tar.gz"
- StrCpy $EXTENDED_ARCHIVE_NAME "North Carolina (Wake County)"
- StrCpy $ORIGINAL_UNTAR_FOLDER "nc_spm_08_grass7"
- StrCpy $CUSTOM_UNTAR_FOLDER "North_Carolina"
-
- Call DownloadDataSet
-
- SectionEnd
- Section /O "South Dakota (Spearfish County) Data Set" SecSpearfishSDB
- ;Set the size (in KB) of the archive file
- StrCpy $ARCHIVE_SIZE_KB 20803
-
- ;Set the size (in KB) of the unpacked archive file
- AddSize 42171
-
- StrCpy $HTTP_PATH "https://grass.osgeo.org/sampledata"
- StrCpy $ARCHIVE_NAME "spearfish_grass70data-0.3.tar.gz"
- StrCpy $EXTENDED_ARCHIVE_NAME "South Dakota (Spearfish County)"
- StrCpy $ORIGINAL_UNTAR_FOLDER "spearfish60_grass7"
- StrCpy $CUSTOM_UNTAR_FOLDER "Spearfish60_grass7"
-
- Call DownloadDataSet
- SectionEnd
- ;--------------------------------------------------------------------------
- ;Clean downloaded MS runtime files by .onInstSuccess
- Function .onInstSuccess
- ${If} ${SectionIsSelected} ${SecMSRuntime}
- Delete "$TEMP\$ARCHIVE_NAME"
- RMDir /r "$TEMP\$ORIGINAL_UNTAR_FOLDER"
- RMDir "$TEMP\$ORIGINAL_UNTAR_FOLDER"
- ${EndIf}
- FunctionEnd
- ;--------------------------------------------------------------------------
- ;Uninstaller Section
- Section "Uninstall"
- ;remove files & folders
- RMDir /r "$INSTDIR"
-
- ;remove the Desktop ShortCut
- SetShellVarContext current
- Delete "$DESKTOP\${GRASS_BASE}.lnk"
-
- ;remove the Programs Start ShortCuts
- SetShellVarContext all
- RMDir /r "$SMPROGRAMS\${GRASS_BASE}"
-
- ;remove the $APPDATA\GRASS@GRASS_VERSION_MAJOR@ folder
- ;disabled, don't remove user settings
- ; SetShellVarContext current
- ;RMDir /r "$APPDATA\GRASS@GRASS_VERSION_MAJOR@"
- ;${If} ${FileExists} "$APPDATA\GRASS@GRASS_VERSION_MAJOR@\addons\*.*"
- ; RMDir /r "$APPDATA\GRASS@GRASS_VERSION_MAJOR@\addons"
- ;${EndIf}
-
- ;remove the Registry Entries
- DeleteRegKey HKLM "Software\${GRASS_BASE}"
- DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${GRASS_BASE}"
- SectionEnd
- ;--------------------------------------------------------------------------
- ;Installer Section Descriptions
- !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
- !insertmacro MUI_DESCRIPTION_TEXT ${SecGRASS} "Install GRASS ${VERSION_NUMBER}"
- !insertmacro MUI_DESCRIPTION_TEXT ${SecMSRuntime} "Some software included in this installer (e.g. GDAL, Python) may need Microsoft's Visual C++ redistributable system libraries.$\r$\nDownload and install the Redistributable Package. (12 MB)"
- !insertmacro MUI_DESCRIPTION_TEXT ${SecNorthCarolinaSDB} "Download and install the North Carolina (Wake County) sample data set. (141 MB)"
- !insertmacro MUI_DESCRIPTION_TEXT ${SecSpearfishSDB} "Download and install the South Dakota (Spearfish County) sample data set. (22 MB)"
- !insertmacro MUI_FUNCTION_DESCRIPTION_END
- ;--------------------------------------------------------------------------
|