Inno setup 如何使用Inno Setup installer检查硬盘中是否有安装应用程序所需的空间

Inno setup 如何使用Inno Setup installer检查硬盘中是否有安装应用程序所需的空间,inno-setup,Inno Setup,我已经构建了一个安装程序来使用Inno安装程序安装应用程序。但我想显示一条错误消息,表明如果没有可用空间,我要安装应用程序的驱动器或路径中没有足够的空间 默认情况下,当硬盘或所选路径中没有可用空间时,我将获得Inno内置的显示消息的功能。但它会显示“是”和“否”按钮以继续或取消。这里我想用OK按钮显示错误消息,当用户单击OK按钮时,它应该停止安装。请在这个问题上帮助我。我找不到任何方法来执行此操作。要确定特定文件夹(在您的情况下为选定目录)驱动器上的可用空间,可以调用或函数。它们之间的区别在于,

我已经构建了一个安装程序来使用Inno安装程序安装应用程序。但我想显示一条错误消息,表明如果没有可用空间,我要安装应用程序的驱动器或路径中没有足够的空间


默认情况下,当硬盘或所选路径中没有可用空间时,我将获得Inno内置的显示消息的功能。但它会显示“是”和“否”按钮以继续或取消。这里我想用OK按钮显示错误消息,当用户单击OK按钮时,它应该停止安装。请在这个问题上帮助我。我找不到任何方法来执行此操作。

要确定特定文件夹(在您的情况下为选定目录)驱动器上的可用空间,可以调用或函数。它们之间的区别在于,第一个能够以字节和兆字节返回空间信息。后者仅以字节为单位返回此信息。对于以下示例,我选择了前面提到的函数,因此您可以通过修改单个布尔参数来决定要在哪些单元中操作:

[代码]
程序ExitProcess(UEXIT代码:UINT);
外部的ExitProcess@kernel32.dllstdcall';
函数IsEnoughFreeSpace(常量路径:字符串;分钟空间:基数):布尔;
变量
自由空间,总空间:基数;
开始
//第二个参数设置为True意味着函数使用
//兆字节单位;如果将其设置为False,它将使用字节进行操作;通过
//所选单位必须反映分钟空间参数的值
如果GetSpaceOnDisk(Path、True、FreeSpace、TotalSpace),则
结果:=自由空间>=分钟空间
其他的
RaiseException('未能检查可用空间');
结束;
函数NextButtonClick(CurPageID:Integer):布尔值;
开始
结果:=真;
如果CurPageID=wpSelectDir,则
开始
//此函数调用中的第二个参数是中的预期最小空间
//上述注释参数指定的单位;在这个例子中,我们是
//检查所选驱动器上是否有至少1 MB的可用空间
//目录;我们需要提取所选目录的驱动器部分,
//因为当我们检查时,目录可能还不存在
如果不是IsEnoughFreeSpace(提取文件驱动器(WizardDirValue),1),则
开始
MsgBox('所选目录的驱动器上没有足够的空间。'+
“安装程序现在将退出。”,mbCriticalError,MB_OK);
//在此输入参数中,您可以传递自己的退出代码,该代码可以
//某个有意义的值指示安装进程退出,因为
//空间不够的原因
出境手续(666);
结束;
结束;
结束;

也许我的答案看起来离题了。 我或多或少也有同样的问题

如果在“文件”部分中有自己制作的检查功能,安装程序只能计算具有“正常”检查标志的文件的(兆)字节数


避免这种情况的一种方法是自己计算字节数,并将结果放入[setup]部分的ExtraDiskSpaceRequired指令中

请参阅,了解Inno为什么不使用强制退出的致命消息。这很可能是错误的,此时您的应用程序将在实际适合时拒绝安装。@Deanna,而且如果用户确认继续而无需再次启动安装程序,则用户将有足够的时间获得一些空间。