aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-22 23:25:40 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-22 23:25:40 +0300
commitd7ae163f8888cd9bf13e5a34e4d37f9518f76c01 (patch)
tree9b69a93cd171ad3ead2906a0ff55f1d945a5a9ba
parent705403fe31d8fd935bfebf92cdbdb511350ddbbf (diff)
fix: make windows installer checksum independent of get-filehash
refs #751
-rw-r--r--src/update.rs6
-rw-r--r--website/install.ps18
2 files changed, 13 insertions, 1 deletions
diff --git a/src/update.rs b/src/update.rs
index bedcc1b0..bceef7b0 100644
--- a/src/update.rs
+++ b/src/update.rs
@@ -638,6 +638,12 @@ fn install_windows_update_with_installer(channel: UpdateChannel) -> Result<(), S
"irm https://herdr.dev/install.ps1 | iex",
])
.env("HERDR_CHANNEL", channel.as_str())
+ // Drop any inherited PSModulePath. When herdr is launched from
+ // PowerShell 7, its Core module paths come first and Windows
+ // PowerShell 5.1 (this `powershell`) fails to autoload cmdlets like
+ // Get-FileHash. Removing it lets 5.1 compute its own default path.
+ // See PowerShell/PowerShell#8635.
+ .env_remove("PSModulePath")
.status()
.map_err(|err| format!("failed to run Windows installer: {err}"))?;
diff --git a/website/install.ps1 b/website/install.ps1
index ccf08239..37ad8f78 100644
--- a/website/install.ps1
+++ b/website/install.ps1
@@ -147,7 +147,13 @@ function Test-FileDigest {
return
}
- $actual = (Get-FileHash -LiteralPath $Path -Algorithm SHA256).Hash.ToLowerInvariant()
+ $sha256 = [System.Security.Cryptography.SHA256]::Create()
+ try {
+ $bytes = [System.IO.File]::ReadAllBytes($Path)
+ $actual = [System.BitConverter]::ToString($sha256.ComputeHash($bytes)).Replace("-", "").ToLowerInvariant()
+ } finally {
+ $sha256.Dispose()
+ }
if ($actual -ne $ExpectedDigest.ToLowerInvariant()) {
throw "Downloaded Herdr checksum did not match. Expected $ExpectedDigest but got $actual."
}