2

zipファイルをインストーラーにバンドルする必要があります。installdirで使用可能な空き領域をチェックし、それを変数にコピーするようなnsisコードが必要です。

4

1 に答える 1

3

NSISには、これを行うのに役立つセクション属性があります:AddSize

変数の金額が本当に必要な場合は、システムプラグインを使用する必要があります。

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
于 2012-10-22T08:25:58.603 に答える