GetExePath: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 17: Line 17:




Get installer pathname ($EXEDIR with valid case for Windows 9X).
Get installer pathname ($EXEDIR with valid case for Windows 9X/Me).




Line 44: Line 44:


Push $0
Push $0
Push $1
Push $2
StrCpy $1 $CMDLINE 1
StrCmp $1 '"' 0 exedir
StrCpy $1 0
IntOp $1 $1 + 1
StrCpy $0 $CMDLINE 1 $1
StrCmp $0 '"' 0 -2
IntOp $1 $1 - 1
StrCpy $0 $CMDLINE $1 1
StrCpy $1 0
IntOp $1 $1 - 1
StrCpy $2 $0 1 $1
StrCmp $2 '\' 0 -2
StrCpy $0 $0 $1
goto end
exedir:
StrCpy $0 $EXEDIR
StrCpy $0 $EXEDIR
 
System::Call 'kernel32::GetLongPathNameA(t r0, t .r0, i 1024)'
end:
Pop $2
Pop $1
Exch $0
Exch $0
FunctionEnd
FunctionEnd

Revision as of 10:28, 23 July 2005

Author: Instructor (talk, contrib)


Links

Latest version of headers "nsh.zip"
http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost

If a function is used without header, put the function code in your script before calling it.

The Function Description

____________________________________________________________________________
 
                            GetExePath
____________________________________________________________________________
 
 
Get installer pathname ($EXEDIR with valid case for Windows 9X/Me).
 
 
Syntax:
${GetExePath} $var


Example:

Section
	${GetExePath} $R0
	; $R0="C:\ftp"
SectionEnd

The Function Code

Function GetExePath
	!define GetExePath `!insertmacro GetExePathCall`
 
	!macro GetExePathCall _RESULT
		Call GetExePath
		Pop ${_RESULT}
	!macroend
 
	Push $0
	StrCpy $0 $EXEDIR
	System::Call 'kernel32::GetLongPathNameA(t r0, t .r0, i 1024)'
	Exch $0
FunctionEnd