【问题标题】:Generate a Chocolatey checksum from downloaded msi从下载的 msi 生成 Chocolatey 校验和
【发布时间】:2019-06-23 16:52:58
【问题描述】:

用于创建包的 Chocolatey 文档说现在需要校验和。

我正在安装的软件包是一个下载的带有 $url 的 msi 集。 文档说您可以使用 checksum.exe (choco install checksum) 并使用

checksum -t sha256 -f path\to\file

如果我理解正确,这将针对文件生成校验和。

那么,我如何针对下载的 msi 执行此操作?

我可以对当前 msi 中的校验和进行硬编码,但如果基础 msi 发生更改(但 url 保持不变),那么我的校验和在安装期间将无法验证。

我会完全忽略校验和,但 Chocolatey 现在似乎需要它。

有什么想法吗?

【问题讨论】:

    标签: chocolatey


    【解决方案1】:

    出于安全原因使用校验和:下载的文件真的是您要安装的文件吗?但如果你信任文件的提供者,你可以告诉 choco 使用--ignore-checksums 命令行选项忽略校验和:

    choco install <package> --ignore-checksums
    

    注意:如果可以使用 PowerShell,也可以使用 Get-FileHash cmdlet 生成校验和:

    Get-FileHash -Path "path\to\file" -Algorithm SHA256
    

    【讨论】:

      【解决方案2】:

      这里有几个不同的主题被问到,所以我想确保每个主题都被涵盖。

      首先,提交到 Chocolatey 社区存储库的包的版主会进行多项检查。关于校验和,指导原则是,当通过 HTTP 进行下载时,安装程​​序/zip/etc 的校验和是必需,而当通过 HTTP 进行下载时,推荐校验和HTTPS。在大多数情况下,对于新的包提交,版主(包括我自己)会要求将校验和添加到包安装脚本中,无论它们是通过 HTTP 还是 HTTPS 发生的。

      其次,校验和用于确保在运行时下载的文件与包维护者在创建包时所期望的文件相同。这是一项安全功能,当 Chocolatey 发现下载的文件与预期的校验和不同时,它将不会继续安装。校验和不同的原因可能有很多。这篇博文中介绍了其中一些原因:

      https://www.gep13.co.uk/blog/chocolatey-error-hashes-do-not-match

      首先,某些软件包(例如 Google Chrome)不包含其应用程序安装程序的版本化 URL。因此,您只能从一个位置下载 Chrome 安装程序,即https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi。因此,每当 Google 推出新版本的 Chrome(这种情况经常发生)时,Chocolatey.org 上最新的 Chrome 软件包版本就会立即被破坏。

      校验和破坏的第二种方式是,如果供应商在应用程序安装程序发布后“更改”它,而不更改版本号。

      后一个原因很不幸,除了生成一个新的包版本外,没有什么可以做的,那就需要使用package fix version notation来创建一个新的包版本(这是由于一个包版本是不可变的,这意味着它一旦被批准就不能改变)。

      对于前者,当实际上有一个新的应用程序版本,并且 URL 末尾的文件实际上是一个新的文件时,则请求将创建一个新的包版本,并使用更新的版本号。在这个新包中,您将包含新的校验和值。

      我想澄清的最后一点是,在创建包的时间点生成校验和并将其放入包中,并提交给 Chocolatey.org。正如您提到的那样,它是使用例如 checksum.exe 工具完成的。在安装时,Chocolatey 然后根据它下载的文件验证这个校验和。有适当的机制,例如AU,可以帮助自动化这个过程。这可能是您想要研究的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-18
        • 2014-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-02
        相关资源
        最近更新 更多