Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
nsis script for writing env vars
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@5974 c8812cc2-4d05-0410-92ff-de0c093fc19c
- Loading branch information
timlinux
committed
Oct 19, 2006
1 parent
8ea06bd
commit 04b8836
Showing
1 changed file
with
149 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
!ifndef _WriteEnvStr_nsh | ||
!define _WriteEnvStr_nsh | ||
|
||
!include WinMessages.nsh | ||
|
||
!ifndef WriteEnvStr_RegKey | ||
!ifdef ALL_USERS | ||
!define WriteEnvStr_RegKey \ | ||
'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' | ||
!else | ||
!define WriteEnvStr_RegKey 'HKCU "Environment"' | ||
!endif | ||
!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 $0 | ||
Pop $1 | ||
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 | ||
|
||
!ifndef IsNT_KiCHiK | ||
!define IsNT_KiCHiK | ||
|
||
# | ||
# [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." | ||
|
||
!endif ; IsNT_KiCHiK | ||
|
||
!endif ; _WriteEnvStr_nsh | ||
|