如何检查nsis中installdir上可用的自由空间?

如何检查nsis中installdir上可用的自由空间?,nsis,Nsis,我需要将zip文件捆绑到我的安装程序中。我需要nsis代码,以便它检查installdir上的可用可用空间,并将其复制到变量。nsis有一个节属性,可以帮助您执行此操作: 如果您确实需要变量中的金额,则必须使用系统插件: System::Call 'kernel32::GetDiskFreeSpaceEx(t"$instdir",*l.r1,*l,*l)' DetailPrint $1 或者,如果您需要Win9x/NT4支持: !include LogicLib.nsh Function G

我需要将zip文件捆绑到我的安装程序中。我需要nsis代码,以便它检查installdir上的可用可用空间,并将其复制到变量。

nsis有一个节属性,可以帮助您执行此操作:

如果您确实需要变量中的金额,则必须使用系统插件:

System::Call 'kernel32::GetDiskFreeSpaceEx(t"$instdir",*l.r1,*l,*l)'
DetailPrint $1
或者,如果您需要Win9x/NT4支持:

!include LogicLib.nsh

Function GetDiskFree
Exch $0
Push $1
System::Call 'kernel32::GetDiskFreeSpaceEx(tr0,*l0s,*l,*l)i.r1'
${If} $1 < 1
    Exch $2 ;Throw away result from Ex
    System::Call 'kernel32::SetCurrentDirectory(tr0)'
    System::Call 'kernel32::GetDiskFreeSpace(i0,*i0r1,*i0r0,*i0r2,*i)'
    System::Call 'kernel32::SetCurrentDirectory(to)'
    IntOp $1 $1 * $0
    System::Int64Op $1 * $2
    Exch
    Pop $2
${EndIf}
Exch 2
Pop $0
Pop $1
FunctionEnd


Section
Push $instdir
Call GetDiskFree
Pop $0
System::Int64Op $0 / 1024 ;to kb
Pop $1
DetailPrint "$1 KiB ($0)"
SectionEnd
!包括LogicLib.nsh
函数GetDiskFree
Exch$0
推1美元
系统::调用'kernel32::GetDiskFreeSpaceEx(tr0,*l0s,*l,*l)i.r1'
${If}$1<1
Exch$2;从Ex中丢弃结果
系统::调用'kernel32::SetCurrentDirectory(tr0)'
系统::调用'kernel32::GetDiskFreeSpace(i0,*i0r1,*i0r0,*i0r2,*i)'
系统::调用'kernel32::SetCurrentDirectory(to)'
输入$1$1*$0
系统::Int64Op$1*$2
Exch
流行音乐2美元
${EndIf}
执行委员会2
流行音乐$0
流行音乐1美元
功能端
部分
推$instdir
调用GetDiskFree
流行音乐$0
系统::Int64Op$0/1024;到kb
流行音乐1美元
详细打印“$1千磅($0)”
分段结束