GetExePath: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{PageAuthor|Instructor}}
{{PageAuthor|Instructor}}


== Links ==
{{User:Instructor/Headers/Template}}


; Latest version of headers "nsh.zip":
== Function Description ==
: 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==


<highlight-nsis>
<highlight-nsis>
Line 17: Line 12:




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




Line 32: Line 27:
</highlight-nsis>
</highlight-nsis>


== The Function Code==
== Function Code ==


<highlight-nsis>
<highlight-nsis>
Line 44: Line 39:


Push $0
Push $0
Push $1
Push $2
StrCpy $0 $EXEDIR
StrCpy $0 $EXEDIR
System::Call 'kernel32::GetLongPathNameA(t r0, t .r0, i 1024)'
System::Call 'kernel32::GetLongPathNameA(t r0, t .r1, i 1024)i .r2'
StrCmp $2 error +2
StrCpy $0 $1
Pop $2
Pop $1
Exch $0
Exch $0
FunctionEnd
FunctionEnd

Latest revision as of 12:11, 30 November 2005

Author: Instructor (talk, contrib)


Page for NSIS 2.07 and below users

You can use the latest version of headers (recommended) or the following function code (put the function code in your script before calling it)

Function Description

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


Example:

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

Function Code

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