dion        2003/10/09 21:14:48

  Modified:    src/installer/nsis maven_setup.nsi
  Added:       src/installer/nsis Environment.nsh
  Log:
  Integrate in some of Kristen's stuff from MAVEN-919.
  - Add MAVEN_HOME environment variable
  
  Revision  Changes    Path
  1.5       +13 -2     maven/src/installer/nsis/maven_setup.nsi
  
  Index: maven_setup.nsi
  ===================================================================
  RCS file: /home/cvs/maven/src/installer/nsis/maven_setup.nsi,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- maven_setup.nsi   10 Oct 2003 04:05:10 -0000      1.4
  +++ maven_setup.nsi   10 Oct 2003 04:14:48 -0000      1.5
  @@ -6,6 +6,7 @@
   ; macro for the image on the install screen
   !include "BrandingImage.nsh"
   !include "JDK.nsh"
  +!include "Environment.nsh"
   
   !define MAVEN_SRC_HOME "..\..\.."
   !define MAVEN_VERSION "1.0-rc1"
  @@ -61,9 +62,15 @@
     ; Write the installation path into the registry
     WriteRegStr HKLM "${MAVEN_REG_KEY}" "Install_Dir" "$INSTDIR"
     
  -  ; TODO Write the environment variables to the Registry
  +  ; Write the environment variables to the Registry
  +  ; ${MAVEN_HOME}
  +  Push "MAVEN_HOME"
  +  Push "$INSTDIR"
  +  Call WriteEnvStr
   
  -  ; WriteRegStr HKCU "Environment" "MAVEN_HOME" "$INSTDIR"
  +  ; TODO - Add MAVEN_HOME to the path
  +  
  +  ; TODO Prompt and write other environment variables to the Registry
     ; WriteRegStr HKCU "Environment" "MAVEN_LOCAL_HOME" "$INSTDIR"
   
     ; Write the uninstall keys for Windows
  @@ -103,6 +110,10 @@
     ; remove registry keys
     DeleteRegKey HKLM "${MAVEN_REG_UNINSTALL_KEY}"
     DeleteRegKey HKLM "${MAVEN_REG_KEY}"
  +
  +  ; Remove ${MAVEN_HOME}
  +  Push "MAVEN_HOME"
  +  Call un.DeleteEnvStr
   
     ; remove files
     Delete $INSTDIR\*.*
  
  
  
  1.1                  maven/src/installer/nsis/Environment.nsh
  
  Index: Environment.nsh
  ===================================================================
  ;
  ; From NSISArchives 
http://nsis.sourceforge.net/archive/nsisweb.php?page=156&instances=0,11
  ;
  !include WinMessages.nsh
  
  !ifdef ALL_USERS
    !define WriteEnvStr_RegKey \
       'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
  !else
    !define WriteEnvStr_RegKey 'HKCU "Environment"'
  !endif
  
  #
  # WriteEnvStr - Writes an environment variable
  # Note: Win9x systems requires reboot
  #
  # Example:
  #  Push "HOMEDIR"           # name
  #  Push "C:\New Home Dir\"  # value
  #  Call WriteEnvStr
  #
  Function WriteEnvStr
    Exch $1 ; $1 has environment variable value
    Exch
    Exch $0 ; $0 has environment variable name
    Push $2
  
    Call IsNT
    Pop $2
    StrCmp $2 1 WriteEnvStr_NT
      ; Not on NT
      StrCpy $2 $WINDIR 2 ; Copy drive of windows (c:)
      FileOpen $2 "$2\autoexec.bat" a
      FileSeek $2 0 END
      FileWrite $2 "$\r$\nSET $0=$1$\r$\n"
      FileClose $2
      SetRebootFlag true
      Goto WriteEnvStr_done
  
    WriteEnvStr_NT:
        WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1
        SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} \
          0 "STR:Environment" /TIMEOUT=5000
  
    WriteEnvStr_done:
      Pop $2
      Pop $1
      Pop $0
  FunctionEnd
  
  #
  # un.DeleteEnvStr - Removes an environment variable
  # Note: Win9x systems requires reboot
  #
  # Example:
  #  Push "HOMEDIR"           # name
  #  Call un.DeleteEnvStr
  #
  Function un.DeleteEnvStr
    Exch $0 ; $0 now has the name of the variable
    Push $1
    Push $2
    Push $3
    Push $4
    Push $5
  
    Call un.IsNT
    Pop $1
    StrCmp $1 1 DeleteEnvStr_NT
      ; Not on NT
      StrCpy $1 $WINDIR 2
      FileOpen $1 "$1\autoexec.bat" r
      GetTempFileName $4
      FileOpen $2 $4 w
      StrCpy $0 "SET $0="
      SetRebootFlag true
  
      DeleteEnvStr_dosLoop:
        FileRead $1 $3
        StrLen $5 $0
        StrCpy $5 $3 $5
        StrCmp $5 $0 DeleteEnvStr_dosLoop
        StrCmp $5 "" DeleteEnvStr_dosLoopEnd
        FileWrite $2 $3
        Goto DeleteEnvStr_dosLoop
  
      DeleteEnvStr_dosLoopEnd:
        FileClose $2
        FileClose $1
        StrCpy $1 $WINDIR 2
        Delete "$1\autoexec.bat"
        CopyFiles /SILENT $4 "$1\autoexec.bat"
        Delete $4
        Goto DeleteEnvStr_done
  
    DeleteEnvStr_NT:
      DeleteRegValue ${WriteEnvStr_RegKey} $0
      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} \
        0 "STR:Environment" /TIMEOUT=5000
  
    DeleteEnvStr_done:
      Pop $5
      Pop $4
      Pop $3
      Pop $2
      Pop $1
      Pop $0
  FunctionEnd
  
  #
  # [un.]IsNT - Pushes 1 if running on NT, 0 if not
  #
  # Example:
  #   Call IsNT
  #   Pop $0
  #   StrCmp $0 1 +3
  #     MessageBox MB_OK "Not running on NT!"
  #     Goto +2
  #     MessageBox MB_OK "Running on NT!"
  #
  !macro IsNT UN
  Function ${UN}IsNT
    Push $0
    ReadRegStr $0 HKLM \
      "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
    StrCmp $0 "" 0 IsNT_yes
    ; we are not NT.
    Pop $0
    Push 0
    Return
  
    IsNT_yes:
      ; NT!!!
      Pop $0
      Push 1
  FunctionEnd
  !macroend
  !insertmacro IsNT ""
  !insertmacro IsNT "un."
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to