WSLC SDK install fallback uses repair (#40908)

JohnMcPMS committed Jun 25, 2026 at 14:15 UTC b1ad7f25ee011000e94c4bb50834596462d78331
4 files changed +15 -6
src/windows/WslcSDK/wslcsdk.cpp
+2 -1
@@ -1731,7 +1731,8 @@ try
1731 {
1732 callback(0);
1733 }
1734 - wsl::windows::common::install::UpdatePackage(true, false, false);
1734 + // Use pre-release builds and repair semantics (required since this function uses the SDK binary version as a filter).
1735 + wsl::windows::common::install::UpdatePackage(true, true, false);
1736 if (callback)
1737 {
1738 callback(100);
src/windows/common/install.cpp
+1 -1
@@ -101,7 +101,7 @@ int UpdatePackageImpl(bool preRelease, bool repair, bool callerOwnsProcess)
101 }
102
103 const bool msiInstall = wsl::shared::string::EndsWith<wchar_t>(release.name, L".msi");
104 - const auto downloadPath = DownloadFile(release.url, release.name);
104 + const auto downloadPath = DownloadFile(release.url, release.name, callerOwnsProcess);
105 if (msiInstall)
106 {
107 auto logFile = std::filesystem::temp_directory_path() / L"wsl-install-logs.txt";
src/windows/common/wslutil.cpp
+11 -3
@@ -348,15 +348,23 @@ GUID wsl::windows::common::wslutil::CreateV5Uuid(const GUID& namespaceGuid, cons
348 return EndianSwap(newGuid);
349 }
350
351 -std::wstring wsl::windows::common::wslutil::DownloadFile(std::wstring_view Url, std::wstring Filename)
351 +std::wstring wsl::windows::common::wslutil::DownloadFile(std::wstring_view Url, std::wstring Filename, bool reportProgress)
352 {
353 wsl::windows::common::ConsoleProgressBar progressBar;
354 auto progress = [&](auto current, auto total) {
355 - progressBar.Print(current, total);
355 + if (reportProgress)
356 + {
357 + progressBar.Print(current, total);
358 + }
359 return true;
360 };
361
359 - auto cleanup = wil::scope_exit_log(WI_DIAGNOSTICS_INFO, [&]() { progressBar.Clear(); });
362 + auto cleanup = wil::scope_exit_log(WI_DIAGNOSTICS_INFO, [&]() {
363 + if (reportProgress)
364 + {
365 + progressBar.Clear();
366 + }
367 + });
368
369 return DownloadFileImpl(Url, Filename, progress);
370 }
src/windows/common/wslutil.h
+1 -1
@@ -209,7 +209,7 @@ std::wstring ConstructPipePath(_In_ std::wstring_view PipeName);
209
210 GUID CreateV5Uuid(const GUID& namespaceGuid, const std::span<const std::byte> name);
211
212 -std::wstring DownloadFile(std::wstring_view Url, std::wstring Filename);
212 +std::wstring DownloadFile(std::wstring_view Url, std::wstring Filename, bool reportProgress = true);
213
214 std::wstring DownloadFileImpl(std::wstring_view Url, std::wstring Filename, const std::function<void(uint64_t, uint64_t)>& Progress);
215