lucasg/Dependencies · error

[x] Peview binary has not correctly been downloaded.

Error message

[x] Peview binary has not correctly been downloaded.

What it means

PowerShell Write-Error emitted by Get-DependenciesDeps in the deploy script. Get-PeviewBinary downloads a pinned Process Hacker build artifact from the AppVeyor API, verifies its SHA256 against a hardcoded hash, and only then extracts peview.exe into $env:PEVIEW_PATH. If PEVIEW_PATH is empty afterward, the download/verify/extract pipeline failed and the bundled peview.exe will be missing from the output.

Source

Thrown at Deploy-Dependencies.ps1:104

  foreach ($ucrtdll in gci $UcrtFolder -File) {
    Write-Host "Copy ucrt dll $($ucrtdll.FullName)";
    Copy-Item $ucrtdll.FullName -Destination $OutputFolder;
  }
}

function Get-DependenciesDeps {
  param(
    [String] $Binpath,
    [String] $OutputFolder
  )

  # Download external dependencies like peview
  $PeBuildVersion = "3.0.2995";
  $PeviewBuildHash = "2d6e76f6ff752cfbd595544ae0f967843e0fa2402700418d933d4d5d3ce2b99b";
  Get-PeviewBinary -BuildVersion $PeBuildVersion -Hash $PeviewBuildHash;
  if (-not $env:PEVIEW_PATH)
  {
    Write-Error "[x] Peview binary has not correctly been downloaded."
  }


  # Bundling dbghelp.dll along for undecorating names
  Copy-SystemDll -DllName "dbghelp.dll" -OutputFolder $OutputFolder;

  # Bundling every msvc redistribuables
  $ClrPhLibPath = "$($Binpath)/ClrPhLib.dll";
  $ClrPhLibImports = &"$($Binpath)/Dependencies.exe" -json -imports $ClrPhLibPath | ConvertFrom-Json;
  foreach($DllImport in $ClrPhLibImports.Imports) {
    
    # vcruntime
    if ($DllImport.Name.ToLower().StartsWith("vcruntime"))
    {
      Copy-SystemDll -DllName $DllImport.Name -OutputFolder $OutputFolder;
    }

    # msvc

View on GitHub (pinned to 1997a40000)

Solutions

  1. Recompute and update $PeviewBuildHash (and $PeBuildVersion if needed) in Deploy-Dependencies.ps1 to match the current Process Hacker artifact.
  2. Confirm network/proxy access to ci.appveyor.com and that the build/job/artifact endpoints return 200.
  3. Ensure 7z.exe is installed and on PATH so the `&7z.exe x ...` extraction step succeeds.
  4. Run Get-PeviewBinary manually and inspect $env:PEVIEW_PATH and the downloaded zip hash to isolate hash-mismatch vs download failure.

Example fix

# before
Get-PeviewBinary -BuildVersion $PeBuildVersion -Hash $PeviewBuildHash;
if (-not $env:PEVIEW_PATH)
{
  Write-Error "[x] Peview binary has not correctly been downloaded."
}

# after - fail fast with the actual reason
Get-PeviewBinary -BuildVersion $PeBuildVersion -Hash $PeviewBuildHash;
if (-not $env:PEVIEW_PATH)
{
  $zip = "$($env:TEMP)/tmp/processhacker-build-bin.zip"
  $got = if (Test-Path $zip) { (Get-FileHash -Algorithm SHA256 $zip).Hash } else { '<not downloaded>' }
  throw "Peview download failed. expected=$PeviewBuildHash got=$got. Update the pinned hash or check network/7z."
}
Defensive patterns

Strategy: validation

Validate before calling

Get-PeviewBinary -BuildVersion $PeBuildVersion -Hash $PeviewBuildHash
if (-not $env:PEVIEW_PATH) {
    $zip = "$($env:TEMP)/tmp/processhacker-build-bin.zip"
    $got = if (Test-Path $zip) { (Get-FileHash -Algorithm SHA256 $zip).Hash } else { 'missing' }
    throw "Peview not downloaded. expected=$PeviewBuildHash got=$got"
}

Try / catch

try {
    Get-PeviewBinary -BuildVersion $PeBuildVersion -Hash $PeviewBuildHash -ErrorAction Stop
} catch [System.Net.WebException] {
    Write-Warning "Network failure downloading peview: $($_.Exception.Message)"
}

Prevention

When it happens

Trigger: Running Deploy-Dependencies.ps1 / Get-DependenciesDeps when Get-PeviewBinary leaves $env:PEVIEW_PATH unset: the hash check at line 40 fails (artifact changed), Invoke-WebRequest/Invoke-RestMethod fails (network/AppVeyor down), the build version is gone, 7z.exe is missing so extraction fails, or Resolve-Path cannot find the extracted file.

Common situations: Process Hacker published a new build so the pinned $PeviewBuildHash no longer matches; the pinned $PeBuildVersion was removed from AppVeyor; CI runs offline or behind a proxy; 7z.exe is not on PATH; x86/x64 platform mismatch in the archive subfolder.

Related errors


AI-assisted analysis of lucasg/Dependencies@1997a40000 (2026-08-13). Data as JSON: /api/errors/0bb708209f777564. Report an issue: GitHub.