使用Chocolatey安装软件出现Checksum error,求修改对应PowerShell脚本
Chocolatey批量安装脚本修改方案(解决部分软件Checksum错误)
修改逻辑
- 新增专门的忽略校验和包名单,仅对nasm、pestudio这类存在哈希校验不匹配问题的软件追加
--ignore-checksums参数,其余软件保持正常校验,避免无差别忽略带来的安全风险 - 原有功能完全保留,仅调整安装命令的判断逻辑
修改后完整脚本
# Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass (运行脚本前请在管理员权限终端执行该命令) # Step 1) 必要时安装Chocolatey if (-not (Test-Path -Path "$env:ProgramData\Chocolatey\choco.exe" -PathType Leaf)) { Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) } # Step 2) 定义可安装的软件包列表 $Packages = 'googlechrome', 'firefox', 'codeblocks', 'windbg', 'nasm', 'explorersuite', 'pestudio', 'vscode', 'sysinternals', 'python', 'ccleaner', 'anaconda3', 'wireshark', 'sublimetext3', 'google earth', 'notepadplusplus', 'iTunes' # 定义需要忽略校验和的问题包列表 $ignoreChecksumPackages = @('nasm', 'pestudio') # Step 3) 定义菜单展示函数 function Show-Menu { Clear-Host Write-Host "**********************************************" Write-Host "软件列表" for ($i = 0; $i -lt $Packages.Count; $i++) { Write-Host ('{0,10}. {1}' -f ($i + 1), $Packages[$i]) } Write-Host " q. 退出脚本" Write-Host "*************************************************" Write-Host } # Step 4) 主循环 while ($true) { Show-Menu $UserInput = Read-Host "输入要安装的软件对应的编号" if ($UserInput -eq 'q') { break } if ([int]::TryParse($UserInput,[ref]$null) -and 1..$Packages.Count -contains [int]$UserInput) { $packageIndex = [int]$UserInput - 1 $selectedPackage = $Packages[$packageIndex] Write-Host "正在安装 $selectedPackage" # 判断是否需要忽略校验和 if ($ignoreChecksumPackages -contains $selectedPackage) { choco install $selectedPackage -y --ignore-checksums } else { choco install $selectedPackage -y } } else { $availableOptions = 1..$Packages.Count -join ',' Write-Host "选择错误,请选择 $availableOptions 范围内的编号,或输入q退出" -ForegroundColor Red } $null = Read-Host "按回车键继续" }
补充说明
如果后续遇到其他软件也出现Checksum错误,直接把对应包名添加到$ignoreChecksumPackages数组里即可生效。
内容的提问来源于stack exchange,提问作者Shravan Meghavath
相关产品推荐
相关产品推荐

