Inno setup 自动获取SHA256以便使用Inno Setup 6.1下载文件?

Inno setup 自动获取SHA256以便使用Inno Setup 6.1下载文件?,inno-setup,checksum,inno-setup-v6,Inno Setup,Checksum,Inno Setup V6,的文档说明了requiredsha256ofile参数: 如果设置了requiredsha256ofile,则会将其与下载文件的SHA-256进行比较,如果哈希不匹配,则会引发异常 如果出现错误,将引发异常。否则,返回下载的字节数。如果设置了requiredsA256ofile,并且文件已下载,则返回0 根据答案,我确定获得校验和的正确命令行方法是: CertUtil -hashfile MSAHelpDocumentationSetup.exe SHA256 这是我如何将此特定文件添加到脚本

的文档说明了
requiredsha256ofile
参数:

如果设置了
requiredsha256ofile
,则会将其与下载文件的SHA-256进行比较,如果哈希不匹配,则会引发异常

如果出现错误,将引发异常。否则,返回下载的字节数。如果设置了
requiredsA256ofile
,并且文件已下载,则返回0

根据答案,我确定获得校验和的正确命令行方法是:

CertUtil -hashfile MSAHelpDocumentationSetup.exe SHA256
这是我如何将此特定文件添加到脚本中的:

AddFileForDownload(“{HelpDocSetupURL}”,“HelpDocSetup.exe”);
扩展至:

procedure AddFileForDownload(Url,文件名:string);
开始
DownloadPage.Add(Url,文件名“”);
FilesToDownload:=FilesToDownload+''+ExtractFileName(文件名)+#13#10;
日志('要下载的文件:'+Url);
结束;
有没有办法自动化:

  • 正在获取我的文件的校验和
  • 将该校验和缓存为字符串
  • 在构建脚本时使用该校验和值
  • 通过自动化此任务,它将提供两个好处:

    • 最大限度地减少复制/粘贴校验和值时的用户错误
    • 使校验和更新保持最新,无需用户交互

    这在使用Pascal脚本的Inno设置中可行吗?

    Pascal脚本对您没有帮助。您需要在编译时使用该值。所以使用预处理器。您确实可以执行
    certutil
    。但在我看来,在这种情况下,使用PowerShell及其:

    然后你可以像这样使用它:

    AddFileForDownload(
    “{#HelpDocSetupURL}”、“HelpDocSetup.exe”、“GetSHA256OfFile(“HelpDocSetup.exe”)}”;
    
    当然,您需要将第三个参数添加到
    AddFileForDownload
    函数中,并将其传递到
    TDownloadWizardPage.add
    。您可能还需要向文件添加路径,以便预处理器可以找到它

    #define GetSHA256OfFile(FileName) \
      Local[0] = AddBackslash(GetEnv("TEMP")) + "sha256.txt", \
      Local[1] = \
        "-ExecutionPolicy Unrestricted -Command """ + \
        "Set-Content -Path '" + Local[0] + "' -NoNewline -Value " + \
        "(Get-FileHash('" + FileName + "')).Hash" + \
        """", \
      Exec("powershell.exe", Local[1], SourcePath, , SW_HIDE), \
      Local[2] = FileOpen(Local[0]), \
      Local[3] = FileRead(Local[2]), \
      FileClose(Local[2]), \
      DeleteFileNow(Local[0]), \
      LowerCase(Local[3])