如何在PowerShell中下载并运行Boost 1.74安装程序?
问题:Boost 1.74安装程序在PowerShell中运行提示文件损坏怎么解决?
我正尝试在Windows PowerShell中为CI系统下载并执行Boost 1.74的安装程序,使用Invoke-WebRequest命令下载文件后直接运行,却提示文件损坏。多次尝试后认为文件本身未损坏,怀疑是权限或下载方式的问题。
执行的命令及报错信息
Invoke-WebRequest 'https://downloads.sourceforge.net/project/boost/boost-binaries/1.74.0/boost_1_74_0-msvc-14.2-64.exe' -OutFile 'boost_1_74_0-msvc-14.2-64.exe' ./boost_1_74_0-msvc-14.2-64.exe
报错内容:
Program 'boost_1_74_0-msvc-14.2-64.exe' failed to run: The file or directory is corrupted and unreadableAt line:323
char:1
- ./boost_1_74_0-msvc-14.2-64.exe
At line:323 char:1
- ./boost_1_74_0-msvc-14.2-64.exe
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException + FullyQualifiedErrorId : NativeCommandFailed
补充说明
使用的链接来自Chocolatey安装脚本,该链接实际指向一个包含真实下载地址的文本文件,对应的Chocolatey脚本如下:
# Install 64 bit binaries Install-ChocolateyPackage ` -packageName 'boost-msvc-14.2' ` -installerType 'exe' ` -silentArgs '/VERYSILENT' ` -url64bit 'https://downloads.sourceforge.net/project/boost/boost-binaries/1.74.0/boost_1_74_0-msvc-14.2-64.exe' ` -checksum64 74229a45b1e13f05c5bbdca7a268ac7723d97c33bec209e5f669b6cb3ffaeab6 ` -checksumType64 sha256
解决方法
验证文件完整性:先计算本地文件的SHA256哈希值,和Chocolatey脚本中的校验码对比,确认文件是否下载完整。执行命令:
Get-FileHash -Path .\boost_1_74_0-msvc-14.2-64.exe -Algorithm SHA256若哈希值不匹配,说明文件下载过程中损坏,需重新下载。
修正下载方式:SourceForge链接会跳转,直接用
Invoke-WebRequest可能下载到跳转页面的文本而非真实安装包。可改用以下方式:# 方法1:强制处理重定向 Invoke-WebRequest 'https://downloads.sourceforge.net/project/boost/boost-binaries/1.74.0/boost_1_74_0-msvc-14.2-64.exe' -OutFile 'boost_1_74_0-msvc-14.2-64.exe' -MaximumRedirection 10 # 方法2:使用更可靠的BITS传输 Start-BitsTransfer -Source 'https://downloads.sourceforge.net/project/boost/boost-binaries/1.74.0/boost_1_74_0-msvc-14.2-64.exe' -Destination 'boost_1_74_0-msvc-14.2-64.exe'解除系统拦截:Windows会标记互联网下载的文件,可执行命令解除限制:
Unblock-File -Path .\boost_1_74_0-msvc-14.2-64.exe若为权限问题,尝试以管理员身份启动PowerShell后再运行安装程序。
适配CI系统的静默安装:CI环境中需用静默参数执行安装,命令如下:
.\boost_1_74_0-msvc-14.2-64.exe /VERYSILENT
内容的提问来源于stack exchange,提问作者alfC
相关产品推荐
相关产品推荐

