EnVar plug-in: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
(Added SetValue and SetValueEx usage)
No edit summary
 
Line 29: Line 29:
Section
Section


; Check for write access
  ; Check for write access
   EnVar::Check "NULL" "NULL"
   EnVar::Check "NULL" "NULL"
   Pop $0
   Pop $0
   DetailPrint "EnVar::Check write access HKCU returned=|$0|"
   DetailPrint "EnVar::Check write access HKCU returned=|$0|"
 
   ; Set to HKLM
   ; Set to HKLM
   EnVar::SetHKLM
   EnVar::SetHKLM
Line 41: Line 41:
   Pop $0
   Pop $0
   DetailPrint "EnVar::Check write access HKLM returned=|$0|"
   DetailPrint "EnVar::Check write access HKLM returned=|$0|"
 
   ; Set back to HKCU
   ; Set back to HKCU
   EnVar::SetHKCU
   EnVar::SetHKCU
   DetailPrint "EnVar::SetHKCU"
   DetailPrint "EnVar::SetHKCU"
 
   ; Check if the 'temp' variable exists in EnVar::SetHKxx
   ; Check if the 'temp' variable exists in EnVar::SetHKxx
   EnVar::Check "temp" "NULL"
   EnVar::Check "temp" "NULL"
   Pop $0
   Pop $0
   DetailPrint "EnVar::Check returned=|$0|"
   DetailPrint "EnVar::Check returned=|$0|"
 
   ; Append a value
   ; Append a value
   EnVar::AddValue "ZTestVariable" "C:\Test"
   EnVar::AddValue "ZTestVariable" "C:\Test"
   Pop $0
   Pop $0
   DetailPrint "EnVar::AddValue returned=|$0|"
   DetailPrint "EnVar::AddValue returned=|$0|"
 
   EnVar::AddValue "ZTestVariable" "C:\TestJas"
   EnVar::AddValue "ZTestVariable" "C:\TestJas"
   Pop $0
   Pop $0
   DetailPrint "EnVar::AddValue returned=|$0|"
   DetailPrint "EnVar::AddValue returned=|$0|"
 
   EnVar::AddValue "ZTestVariable1" "C:\Test"
   EnVar::AddValue "ZTestVariable1" "C:\Test"
   Pop $0
   Pop $0
   DetailPrint "EnVar::AddValue returned=|$0|"
   DetailPrint "EnVar::AddValue returned=|$0|"
 
   ; Append an expanded value (REG_EXPAND_SZ)
   ; Append an expanded value (REG_EXPAND_SZ)
   EnVar::AddValueEx "ZTestVariable1" "C:\Test"
   EnVar::AddValueEx "ZTestVariable1" "C:\Test"
   Pop $0
   Pop $0
   DetailPrint "EnVar::AddValueEx returned=|$0|"
   DetailPrint "EnVar::AddValueEx returned=|$0|"
 
   EnVar::AddValueEx "ZTestVariable1" "C:\TestVariable"
   EnVar::AddValueEx "ZTestVariable1" "C:\TestVariable"
   Pop $0
   Pop $0
   DetailPrint "EnVar::AddValueEx returned=|$0|"
   DetailPrint "EnVar::AddValueEx returned=|$0|"
 
   ; Delete a value from a variable
   ; Delete a value from a variable
   EnVar::DeleteValue "ZTestVariable1" "C:\Test"
   EnVar::DeleteValue "ZTestVariable1" "C:\Test"
   Pop $0
   Pop $0
   DetailPrint "EnVar::DeleteValue returned=|$0|"
   DetailPrint "EnVar::DeleteValue returned=|$0|"
 
   EnVar::DeleteValue "ZTestVariable1" "C:\Test"
   EnVar::DeleteValue "ZTestVariable1" "C:\Test"
   Pop $0
   Pop $0
   DetailPrint "EnVar::DeleteValue returned=|$0|"
   DetailPrint "EnVar::DeleteValue returned=|$0|"
 
   EnVar::DeleteValue "ZTestVariable1" "C:\TestJason"
   EnVar::DeleteValue "ZTestVariable1" "C:\TestJason"
   Pop $0
   Pop $0
   DetailPrint "EnVar::DeleteValue returned=|$0|"
   DetailPrint "EnVar::DeleteValue returned=|$0|"
 
  ; Set a value (overwrites everything in the value)
  ; Set a value (overwrites everything in the value)
   EnVar::SetValue "ZTestVariable1" "C:\Test1"
   EnVar::SetValue "ZTestVariable1" "C:\Test1"
   Pop $0
   Pop $0
   DetailPrint "EnVar::SetValue returned=|$0|"
   DetailPrint "EnVar::SetValue returned=|$0|"
 
   EnVar::SetValue "ZTestVariable2" "C:\Test2"
   EnVar::SetValue "ZTestVariable2" "C:\Test2"
   Pop $0
   Pop $0
   DetailPrint "EnVar::SetValue returned=|$0|"
   DetailPrint "EnVar::SetValue returned=|$0|"
 
   EnVar::SetValue "ZTestVariable3" "C:\Test3"
   EnVar::SetValue "ZTestVariable3" "C:\Test3"
   Pop $0
   Pop $0
   DetailPrint "EnVar::SetValue returned=|$0|"
   DetailPrint "EnVar::SetValue returned=|$0|"
 
   ; Set an expanded value (REG_EXPAND_SZ)
   ; Set an expanded value (REG_EXPAND_SZ)
   EnVar::SetValueEx "ZTestVariable2" "C:\Test4"
   EnVar::SetValueEx "ZTestVariable2" "C:\Test4"
   Pop $0
   Pop $0
   DetailPrint "EnVar::SetValueEx returned=|$0|"
   DetailPrint "EnVar::SetValueEx returned=|$0|"
 
   EnVar::SetValueEx "ZTestVariable3" "C:\Test5"
   EnVar::SetValueEx "ZTestVariable3" "C:\Test5"
   Pop $0
   Pop $0
Line 112: Line 112:
   Pop $0
   Pop $0
   DetailPrint "EnVar::Delete returned=|$0|"
   DetailPrint "EnVar::Delete returned=|$0|"
 
   EnVar::Delete "ZTestVariable1"
   EnVar::Delete "ZTestVariable1"
   Pop $0
   Pop $0

Latest revision as of 06:09, 30 January 2026

Author: JasonFriday13 (talk, contrib)


Links

Plugin package:
EnVar_plugin.zip (37 KB)

Forum thread

Description

Basically this plugin allows you to check for environment variables, check for paths in those variables, add and remove paths, delete environment variables, and update the installer environment if the windows environment has changed.

Just extract the contents to your nsis directory (usually '$PROGRAMFILES\NSIS').

Sample Usage

Name "EnVar Example"
OutFile "EnVarExample.exe"
 
RequestExecutionLevel User
ShowInstDetails Show
 
Page InstFiles
 
Unicode True
 
Section
 
  ; Check for write access
  EnVar::Check "NULL" "NULL"
  Pop $0
  DetailPrint "EnVar::Check write access HKCU returned=|$0|"
 
  ; Set to HKLM
  EnVar::SetHKLM

  ; Check for write access
  EnVar::Check "NULL" "NULL"
  Pop $0
  DetailPrint "EnVar::Check write access HKLM returned=|$0|"
 
  ; Set back to HKCU
  EnVar::SetHKCU
  DetailPrint "EnVar::SetHKCU"
 
  ; Check if the 'temp' variable exists in EnVar::SetHKxx
  EnVar::Check "temp" "NULL"
  Pop $0
  DetailPrint "EnVar::Check returned=|$0|"
 
  ; Append a value
  EnVar::AddValue "ZTestVariable" "C:\Test"
  Pop $0
  DetailPrint "EnVar::AddValue returned=|$0|"
 
  EnVar::AddValue "ZTestVariable" "C:\TestJas"
  Pop $0
  DetailPrint "EnVar::AddValue returned=|$0|"
 
  EnVar::AddValue "ZTestVariable1" "C:\Test"
  Pop $0
  DetailPrint "EnVar::AddValue returned=|$0|"
 
  ; Append an expanded value (REG_EXPAND_SZ)
  EnVar::AddValueEx "ZTestVariable1" "C:\Test"
  Pop $0
  DetailPrint "EnVar::AddValueEx returned=|$0|"
 
  EnVar::AddValueEx "ZTestVariable1" "C:\TestVariable"
  Pop $0
  DetailPrint "EnVar::AddValueEx returned=|$0|"
 
  ; Delete a value from a variable
  EnVar::DeleteValue "ZTestVariable1" "C:\Test"
  Pop $0
  DetailPrint "EnVar::DeleteValue returned=|$0|"
 
  EnVar::DeleteValue "ZTestVariable1" "C:\Test"
  Pop $0
  DetailPrint "EnVar::DeleteValue returned=|$0|"
 
  EnVar::DeleteValue "ZTestVariable1" "C:\TestJason"
  Pop $0
  DetailPrint "EnVar::DeleteValue returned=|$0|"
 
  ; Set a value (overwrites everything in the value)
  EnVar::SetValue "ZTestVariable1" "C:\Test1"
  Pop $0
  DetailPrint "EnVar::SetValue returned=|$0|"
 
  EnVar::SetValue "ZTestVariable2" "C:\Test2"
  Pop $0
  DetailPrint "EnVar::SetValue returned=|$0|"
 
  EnVar::SetValue "ZTestVariable3" "C:\Test3"
  Pop $0
  DetailPrint "EnVar::SetValue returned=|$0|"
 
  ; Set an expanded value (REG_EXPAND_SZ)
  EnVar::SetValueEx "ZTestVariable2" "C:\Test4"
  Pop $0
  DetailPrint "EnVar::SetValueEx returned=|$0|"
 
  EnVar::SetValueEx "ZTestVariable3" "C:\Test5"
  Pop $0
  DetailPrint "EnVar::SetValueEx returned=|$0|"
 
  ; Delete a variable
  EnVar::Delete "ZTestVariable"
  Pop $0
  DetailPrint "EnVar::Delete returned=|$0|"
 
  EnVar::Delete "ZTestVariable1"
  Pop $0
  DetailPrint "EnVar::Delete returned=|$0|"
 
  EnVar::Delete "ZTestVariable2"
  Pop $0
  DetailPrint "EnVar::Delete returned=|$0|"
 
  EnVar::Delete "ZTestVariable3"
  Pop $0
  DetailPrint "EnVar::Delete returned=|$0|"
 
  ; Try deleting "path", this should give an error (%path% is a shared resource)
  EnVar::Delete "path"
  Pop $0
  DetailPrint "EnVar::Delete returned=|$0|" 
 
SectionEnd