如何使用ISPP将文件大小拆分为DwinsHs_Check函数的lo / hi位

时间:2019-06-03 10:44:41

标签: inno-setup pascalscript dwinshs

使用此脚本:

Source: "{tmp}\HelpDocSetup.exe"; \
    DestDir: "{app}"; \
    Flags: external deleteafterinstall; \
    Tasks: downloadhelp; \
    Check: DwinsHs_Check( ExpandConstant('{tmp}\HelpDocSetup.exe'), '{#HelpDocSetupURL}', 'My_Setup', 'Get', 0, 0 )

在行尾看到0, 0吗?


根据DwinsHs_Check的文档规定:

  
      
  • 文件大小:LongInt

         

    FileSizeHigh参数一起指定   文件大小(以字节为单位)。它将用于计算下载量   进度和剩余时间。这样可以避免下载之前的延迟   因为脚本不必从中获取文件大小而开始   服务器。

         

    此参数指定文件大小的低31位,而FileSizeHigh参数指定文件大小的高31位。请注意,不是32位。

         

    请注意,如果使用参数,将从服务器获取文件大小   设置为FILESIZE_QUERY_SERVER (0)FILESIZE_UNKNOWN (-1)或   FILESIZE_KEEP_FORMER (-2)。在这种情况下,FileSize的值   参数将被忽略。

         

    注意,此参数只能使用数字值,常数   标识符不能使用。

  •   
  • FileSizeHigh:LongInt

         

    FileSize参数一起指定   文件大小(以字节为单位)。它将用于计算下载量   进度和剩余时间。这样可以避免下载之前的延迟   因为脚本不必从中获取文件大小而开始   服务器。

         

    此参数指定高31位   文件大小,并且FileSize参数指定低31位   文件大小。

         

    注意,如果FileSize,则将忽略此参数的值   参数设置为FILESIZE_QUERY_SERVER (0)FILESIZE_UNKNOWN (-1),   或FILESIZE_KEEP_FORMER (-2)

         

    注意,此参数只能使用数字值,常数   标识符不能使用。

  •   

这个特殊的安装文件也在我的计算机上。相对于主要ISS文件,路径为:

  

..\HelpNDoc\CHM\Output\PublicTalksHelpDocumentationSetup.exe

我们可以使用ISPP提取文件大小并将其分割为DwinsHs_Check所需的两个参数吗?

1 个答案:

答案 0 :(得分:1)

您可以使用FileSize preprocessor function来检索文件大小。但仅限于2GB = 31位。与FileSize的{​​{1}}参数对应的内容:

DwinsHs_Check

如果文件理论上可以超过2GB,则您必须使用其他方式来检索文件大小,例如通过使用Exec preprocessor function调用PowerShell代码。而且,由于Inno Setup预处理程序始终无法使用64位数字,因此您应该立即将大小分为PowerShell(或其他)代码的两部分。

有关调用PowerShell代码并返回其结果的示例,请参见: