Harden Windows deferred update wait
ci / test (push) Canceled after 0s
ci / fuzz-smoke (push) Canceled after 0s
ci / macos-client (macos-aarch64, macos-14) (push) Canceled after 0s
ci / macos-client (macos-x86_64, macos-13) (push) Canceled after 0s
ci / windows-client (push) Canceled after 0s
ci / package-release (linux-x86_64, ubuntu-latest, , , ) (push) Canceled after 0s
ci / package-release (macos-aarch64, macos-14, , , ) (push) Canceled after 0s
ci / package-release (macos-x86_64, macos-13, , , ) (push) Canceled after 0s
ci / package-release (windows-aarch64, windows-latest, aarch64, windows, aarch64-pc-windows-msvc) (push) Canceled after 0s
ci / package-release (windows-x86_64, windows-latest, , , ) (push) Canceled after 0s
ci / remote-bench (push) Canceled after 0s
ci / publish-gitea-release (push) Canceled after 0s

This commit is contained in:
DuProcess
2026-07-16 21:52:35 -04:00
parent 0da90fe932
commit 2a695af13a
+16 -2
View File
@@ -4809,7 +4809,12 @@ fn windows_deferred_update_script(parent_pid: u32, installer_script: &str) -> St
format!( format!(
"$ErrorActionPreference='Stop';\ "$ErrorActionPreference='Stop';\
$ProgressPreference='SilentlyContinue';\ $ProgressPreference='SilentlyContinue';\
while (Get-Process -Id {parent_pid} -ErrorAction SilentlyContinue) {{ \ $parent=Get-Process -Id {parent_pid} -ErrorAction SilentlyContinue;\
$parentStart=if ($parent) {{ $parent.StartTime }} else {{ $null }};\
while ($true) {{ \
$current=Get-Process -Id {parent_pid} -ErrorAction SilentlyContinue;\
if (-not $current) {{ break }};\
if ($parentStart -and $current.StartTime -ne $parentStart) {{ break }};\
Start-Sleep -Milliseconds 100 \ Start-Sleep -Milliseconds 100 \
}};\ }};\
{installer_script}" {installer_script}"
@@ -13172,6 +13177,15 @@ mod tests {
); );
let deferred = windows_deferred_update_script(4242, &installer); let deferred = windows_deferred_update_script(4242, &installer);
assert!(deferred.contains("Get-Process -Id 4242 -ErrorAction SilentlyContinue")); assert!(deferred.contains("Get-Process -Id 4242 -ErrorAction SilentlyContinue"));
assert!(
deferred.contains("$parentStart=if ($parent) { $parent.StartTime } else { $null }")
);
assert!(deferred.contains("$current=Get-Process -Id 4242 -ErrorAction SilentlyContinue"));
assert!(deferred.contains("if (-not $current) { break }"));
assert!(
deferred
.contains("if ($parentStart -and $current.StartTime -ne $parentStart) { break }")
);
assert!(deferred.contains("Start-Sleep -Milliseconds 100")); assert!(deferred.contains("Start-Sleep -Milliseconds 100"));
assert!( assert!(
deferred.contains( deferred.contains(
@@ -13179,7 +13193,7 @@ mod tests {
) )
); );
assert!( assert!(
deferred.find("Get-Process -Id 4242").unwrap() deferred.find("$parentStart").unwrap()
< deferred.find("irm 'https://git.palav.dev").unwrap() < deferred.find("irm 'https://git.palav.dev").unwrap()
); );
} }