Installation 查找最大的驱动器,NSIS安装程序

Installation 查找最大的驱动器,NSIS安装程序,installation,nsis,Installation,Nsis,我完全不熟悉NSIS安装程序脚本,我想将安装目录设置为计算机上最大的磁盘。谁能指导我怎么做。!包括LogicLib.nsh !include LogicLib.nsh System::Call 'kernel32::GetLogicalDrives()i.r0' StrCpy $1 $windir 3 ; Fallback if things go wrong StrCpy $2 0 StrCpy $4 65 ; 'A' loop: IntOp $3 $0 & 1 ${I

我完全不熟悉NSIS安装程序脚本,我想将安装目录设置为计算机上最大的磁盘。谁能指导我怎么做。

!包括LogicLib.nsh
!include LogicLib.nsh
System::Call 'kernel32::GetLogicalDrives()i.r0'
StrCpy $1 $windir 3 ; Fallback if things go wrong
StrCpy $2 0
StrCpy $4 65 ; 'A'
loop:
    IntOp $3 $0 & 1
    ${If} $3 <> 0
        IntFmt $3 "%c:\" $4
        System::Call 'kernel32::GetDiskFreeSpaceEx(tr3,*l.r5,*l,*l)i'
        ${If} $5 L> $2
            StrCpy $2 $5
            StrCpy $1 $3
        ${EndIf}
    ${EndIf}
    IntOp $4 $4 + 1
    IntOp $0 $0 >> 1
    StrCmp $0 0 "" loop
StrCpy $InstDir "$1" ;You should probably append something to the path here, you cannot install to the root of a drive by default
System::调用'kernel32::GetLogicalDrives()i.r0' StrCpy$1$windir 3;如果出了问题,就要退后 StrCpy$20 StrCpy$465;'A' 循环: IntOp$3$0&1 ${If}$3 0 IntFmt$3“%c:\”$4 系统::调用'kernel32::GetDiskFreeSpaceEx(tr3,*l.r5,*l,*l)i' ${If}$5 L>$2 StrCpy$2$5 StrCpy$1$3 ${EndIf} ${EndIf} 输入$4$4+1 输入$0$0>>1 StrCmp$0“循环 StrCpy$InstDir“$1”;您可能应该在此处的路径中附加一些内容,默认情况下无法安装到驱动器的根目录

将其放入.onInit或目录页的预回调中…

使用$ProgramFiles\YourApp作为默认值通常更有意义…您还应该记住,卷可以装入NTFS上的文件夹中,因此仅检查驱动器号可能找不到最大的卷…此代码检查可用空间,因为它对安装程序这样做,它将避免只读卷…伟大的作品!!!我已经完成了安装部分。安装可执行文件后,我需要提示用户插入另一张DVD以安装实用程序。你能告诉我怎么做吗?如果它与这个问题无关,那么你应该问一个新问题(如果答案正确,就接受这个答案)${if}$30;这个语句做什么?如果$3不是0,那么。。。(我们只需要有效的驱动器号)