Skip to content

Commit a50e738

Browse files
committed
[rust] Replace WMIC commands (to be deprecated) by PowerShell in Windows
1 parent fc0a3b4 commit a50e738

File tree

4 files changed

+17
-14
lines changed

4 files changed

+17
-14
lines changed

rust/src/config.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use crate::{
2121
default_cache_folder, format_one_arg, path_to_string, Command, REQUEST_TIMEOUT_SEC,
2222
UNAME_COMMAND,
2323
};
24-
use crate::{ARCH_AMD64, ARCH_ARM64, ARCH_X86, TTL_SEC, WMIC_COMMAND_OS};
24+
use crate::{ARCH_AMD64, ARCH_ARM64, ARCH_X86, PS_GET_OS_COMMAND, TTL_SEC};
2525
use anyhow::anyhow;
2626
use anyhow::Error;
2727
use std::cell::RefCell;
@@ -69,11 +69,11 @@ impl ManagerConfig {
6969

7070
let self_os = OS;
7171
let self_arch = if WINDOWS.is(self_os) {
72-
let wmic_command = Command::new_single(WMIC_COMMAND_OS.to_string());
73-
let wmic_output = run_shell_command_by_os(self_os, wmic_command).unwrap_or_default();
74-
if wmic_output.contains("32") {
72+
let get_os_command = Command::new_single(PS_GET_OS_COMMAND.to_string());
73+
let ps_output = run_shell_command_by_os(self_os, get_os_command).unwrap_or_default();
74+
if ps_output.contains("32") {
7575
ARCH_X86.to_string()
76-
} else if wmic_output.contains("ARM") {
76+
} else if ps_output.contains("ARM") {
7777
ARCH_ARM64.to_string()
7878
} else {
7979
ARCH_AMD64.to_string()

rust/src/files.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::config::OS;
1919
use crate::config::OS::WINDOWS;
2020
use crate::{
2121
format_one_arg, format_three_args, run_shell_command_by_os, Command, Logger, CP_VOLUME_COMMAND,
22-
HDIUTIL_ATTACH_COMMAND, HDIUTIL_DETACH_COMMAND, MACOS, MSIEXEC_INSTALL_COMMAND,
22+
HDIUTIL_ATTACH_COMMAND, HDIUTIL_DETACH_COMMAND, MACOS, PS_MSIEXEC_INSTALL_COMMAND,
2323
};
2424
use anyhow::anyhow;
2525
use anyhow::Error;
@@ -309,7 +309,7 @@ pub fn install_msi(msi_file: &str, log: &Logger, os: &str) -> Result<(), Error>
309309
msi_file_name.to_str().unwrap_or_default()
310310
));
311311

312-
let command = Command::new_single(format_one_arg(MSIEXEC_INSTALL_COMMAND, msi_file));
312+
let command = Command::new_single(format_one_arg(PS_MSIEXEC_INSTALL_COMMAND, msi_file));
313313
log.trace(format!("Running command: {}", command.display()));
314314
run_shell_command_by_os(os, command)?;
315315

rust/src/lib.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,10 @@ pub const DEV: &str = "dev";
7575
pub const CANARY: &str = "canary";
7676
pub const NIGHTLY: &str = "nightly";
7777
pub const ESR: &str = "esr";
78-
pub const WMIC_COMMAND: &str = "wmic datafile where name='{}' get Version /value";
79-
pub const WMIC_COMMAND_OS: &str = "wmic os get osarchitecture";
78+
pub const PS_GET_VERSION_COMMAND: &str = r#"(Get-Item "{}").VersionInfo.ProductVersion"#;
79+
pub const PS_GET_OS_COMMAND: &str = "(Get-WmiObject Win32_OperatingSystem).OSArchitecture";
80+
pub const PS_MSIEXEC_INSTALL_COMMAND: &str =
81+
r#"Start-Process -FilePath msiexec -ArgumentList "/i {} /qn ALLOWDOWNGRADE=1" -Wait"#;
8082
pub const REG_VERSION_ARG: &str = "version";
8183
pub const REG_CURRENT_VERSION_ARG: &str = "CurrentVersion";
8284
pub const REG_PV_ARG: &str = "pv";
@@ -85,7 +87,6 @@ pub const PLIST_COMMAND: &str =
8587
pub const HDIUTIL_ATTACH_COMMAND: &str = "hdiutil attach {}";
8688
pub const HDIUTIL_DETACH_COMMAND: &str = "hdiutil detach /Volumes/{}";
8789
pub const CP_VOLUME_COMMAND: &str = "cp -R /Volumes/{}/{}.app {}";
88-
pub const MSIEXEC_INSTALL_COMMAND: &str = "start /wait msiexec /i {} /qn ALLOWDOWNGRADE=1";
8990
pub const WINDOWS_CHECK_ADMIN_COMMAND: &str = "net session";
9091
pub const DASH_VERSION: &str = "{}{}{} -v";
9192
pub const DASH_DASH_VERSION: &str = "{}{}{} --version";
@@ -1139,9 +1140,11 @@ pub trait SeleniumManager {
11391140
let mut commands = Vec::new();
11401141
if WINDOWS.is(self.get_os()) {
11411142
if !escaped_browser_path.is_empty() {
1142-
let wmic_command =
1143-
Command::new_single(format_one_arg(WMIC_COMMAND, &escaped_browser_path));
1144-
commands.push(wmic_command);
1143+
let get_version_command = Command::new_single(format_one_arg(
1144+
PS_GET_VERSION_COMMAND,
1145+
&escaped_browser_path,
1146+
));
1147+
commands.push(get_version_command);
11451148
}
11461149
if !self.is_browser_version_unstable() {
11471150
let reg_command =

rust/src/shell.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ pub fn run_shell_command_with_log(
7777

7878
pub fn run_shell_command_by_os(os: &str, command: Command) -> Result<String, Error> {
7979
let (shell, flag) = if WINDOWS.is(os) {
80-
("cmd", "/c")
80+
("powershell", "-c")
8181
} else {
8282
("sh", "-c")
8383
};

0 commit comments

Comments
 (0)