DriveSpace: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Adding new author and category links.) |
Instructor (talk | contribs) No edit summary |
||
Line 2: | Line 2: | ||
== Links == | == Links == | ||
; Latest version of headers "nsh.zip": | ; Latest version of headers "nsh.zip": | ||
: http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost | : http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost | ||
If function used without header | If a function is used without header, put the function code in your script before calling it. | ||
== The Function == | == The Function Description== | ||
<highlight-nsis> | |||
<highlight-nsis> | |||
____________________________________________________________________________ | ____________________________________________________________________________ | ||
Line 41: | Line 43: | ||
-Error flag if disk isn't exist or not ready | -Error flag if disk isn't exist or not ready | ||
-Error flag if syntax error | -Error flag if syntax error | ||
</highlight-nsis> | |||
Example: | <b>Example:</b> | ||
Section | <highlight-nsis>Section | ||
${DriveSpace} "C:\" "/D=F /S=M" $R0 | ${DriveSpace} "C:\" "/D=F /S=M" $R0 | ||
; $R0="2530" megabytes free on drive C: | ; $R0="2530" megabytes free on drive C: | ||
SectionEnd | SectionEnd | ||
</highlight-nsis> | |||
== The Function Code== | |||
<highlight-nsis> | |||
Function DriveSpace | Function DriveSpace | ||
!define DriveSpace `!insertmacro DriveSpaceCall` | !define DriveSpace `!insertmacro DriveSpaceCall` |
Revision as of 14:35, 4 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
____________________________________________________________________________ DriveSpace v1.1 ____________________________________________________________________________ Thanks sunjammer (Function "CheckSpaceFree") Get total, occupied or free space of the drive. Syntax: ${GetSize} "[Drive]" "[Options]" $var "[Drive]" ; Disk to check ; "[Options]" ; /D=[T|O|F] ; /D=T - Total space (default) ; /D=O - Occupied space ; /D=F - Free space ; /S=[B|K|M|G] ; /S=B - size in Bytes (default) ; /S=K - size in Kilobytes ; /S=M - size in Megabytes ; /S=G - size in Gigabytes ; $var ; Result: Size Note: -Error flag if disk isn't exist or not ready -Error flag if syntax error
Example:
Section ${DriveSpace} "C:\" "/D=F /S=M" $R0 ; $R0="2530" megabytes free on drive C: SectionEnd
The Function Code
Function DriveSpace !define DriveSpace `!insertmacro DriveSpaceCall` !macro DriveSpaceCall _DRIVE _OPTIONS _RESULT Push `${_DRIVE}` Push `${_OPTIONS}` Call DriveSpace Pop ${_RESULT} !macroend Exch $1 Exch Exch $0 Exch Push $2 Push $3 Push $4 Push $5 Push $6 ClearErrors StrCpy $2 $0 1 -1 StrCmp $2 '\' 0 +3 StrCpy $0 $0 -1 goto -3 IfFileExists '$0\NUL' 0 error StrCpy $5 '' StrCpy $6 '' option: StrCpy $2 $1 1 StrCpy $1 $1 '' 1 StrCmp $2 ' ' -2 StrCmp $2 '' default StrCmp $2 '/' 0 -4 StrCpy $3 -1 IntOp $3 $3 + 1 StrCpy $2 $1 1 $3 StrCmp $2 '' +2 StrCmp $2 '/' 0 -3 StrCpy $4 $1 $3 StrCpy $4 $4 '' 2 StrCpy $2 $4 1 -1 StrCmp $2 ' ' 0 +3 StrCpy $4 $4 -1 goto -3 StrCpy $2 $1 2 StrCpy $1 $1 '' $3 StrCmp $2 'D=' 0 unit StrCpy $5 $4 StrCmp $5 '' +4 StrCmp $5 'T' +3 StrCmp $5 'O' +2 StrCmp $5 'F' 0 error goto option unit: StrCmp $2 'S=' 0 error StrCpy $6 $4 goto option default: StrCmp $5 '' 0 +2 StrCpy $5 'T' StrCmp $6 '' 0 +3 StrCpy $6 '1' goto getspace StrCmp $6 'B' 0 +3 StrCpy $6 1 goto getspace StrCmp $6 'K' 0 +3 StrCpy $6 1024 goto getspace StrCmp $6 'M' 0 +3 StrCpy $6 1048576 goto getspace StrCmp $6 'G' 0 error StrCpy $6 1073741824 getspace: System::Call 'kernel32::GetDiskFreeSpaceExA(t, *l, *l, *l)i(r0,.r2,.r3,.)' StrCmp $5 T 0 +3 StrCpy $0 $3 goto getsize StrCmp $5 O 0 +4 System::Int64Op $3 - $2 Pop $0 goto getsize StrCmp $5 F 0 +2 StrCpy $0 $2 getsize: System::Int64Op $0 / $6 Pop $0 goto end error: SetErrors StrCpy $0 '' end: Pop $6 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 FunctionEnd