Implementing a check for Windows 11 and, if detected, skipping Windows Update via usoclient.exe. It is suggested to install PSWindowsUpdate.

This commit is contained in:
Nils
2024-01-27 23:51:56 +01:00
parent 43a4d321cf
commit e1ef2e4bc5
3 changed files with 23 additions and 0 deletions

12
Cargo.lock generated
View File

@@ -1490,6 +1490,17 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "os_info"
version = "3.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e"
dependencies = [
"log",
"serde",
"winapi",
]
[[package]]
name = "overload"
version = "0.1.1"
@@ -2405,6 +2416,7 @@ dependencies = [
"nix 0.27.1",
"notify-rust",
"once_cell",
"os_info",
"parselnk",
"regex",
"regex-split",

View File

@@ -51,6 +51,7 @@ merge = "~0.1"
regex-split = "~0.1"
notify-rust = "~4.10"
wildmatch = "2.3.0"
os_info = "3.7.0"
[package.metadata.generate-rpm]
assets = [{ source = "target/release/topgrade", dest = "/usr/bin/topgrade" }]

View File

@@ -13,6 +13,8 @@ use crate::utils::{require, which};
use crate::{error::SkipStep, steps::git::Repositories};
use crate::{powershell, Step};
use os_info;
pub fn run_chocolatey(ctx: &ExecutionContext) -> Result<()> {
let choco = require("choco")?;
let yes = ctx.config().yes(Step::Chocolatey);
@@ -212,6 +214,14 @@ pub fn windows_update(ctx: &ExecutionContext) -> Result<()> {
return powershell.windows_update(ctx);
}
let info: os_info::Info = os_info::get();
let edition: String = info.edition().unwrap_or("Unknown").to_string();
if edition.contains("Windows 11") {
print_separator("Windows Update");
println!("Windows 11 does not support Windows Update via usoclient.exe. Consider installing PSWindowsUpdate");
return Ok(());
}
let usoclient = require("UsoClient")?;
print_separator("Windows Update");