Skip to content

Commit 0e32276

Browse files
committed
[rust] Use PowerShell only for previous WMIC commands
1 parent a1c05d0 commit 0e32276

File tree

3 files changed

+32
-13
lines changed

3 files changed

+32
-13
lines changed

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, PS_MSIEXEC_INSTALL_COMMAND,
22+
HDIUTIL_ATTACH_COMMAND, HDIUTIL_DETACH_COMMAND, MACOS, 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(PS_MSIEXEC_INSTALL_COMMAND, msi_file));
312+
let command = Command::new_single(format_one_arg(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: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ use crate::metadata::{
3737
use crate::safari::{SafariManager, SAFARIDRIVER_NAME, SAFARI_NAME};
3838
use crate::safaritp::{SafariTPManager, SAFARITP_NAMES};
3939
use crate::shell::{
40-
run_shell_command, run_shell_command_by_os, run_shell_command_with_log, Command,
40+
run_powershell_command_with_log, run_shell_command, run_shell_command_by_os,
41+
run_shell_command_with_log, Command,
4142
};
4243
use crate::stats::{send_stats_to_plausible, Props};
4344
use anyhow::anyhow;
@@ -77,8 +78,6 @@ pub const NIGHTLY: &str = "nightly";
7778
pub const ESR: &str = "esr";
7879
pub const PS_GET_VERSION_COMMAND: &str = r#"(Get-Item "{}").VersionInfo.ProductVersion"#;
7980
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"#;
8281
pub const REG_VERSION_ARG: &str = "version";
8382
pub const REG_CURRENT_VERSION_ARG: &str = "CurrentVersion";
8483
pub const REG_PV_ARG: &str = "pv";
@@ -87,6 +86,7 @@ pub const PLIST_COMMAND: &str =
8786
pub const HDIUTIL_ATTACH_COMMAND: &str = "hdiutil attach {}";
8887
pub const HDIUTIL_DETACH_COMMAND: &str = "hdiutil detach /Volumes/{}";
8988
pub const CP_VOLUME_COMMAND: &str = "cp -R /Volumes/{}/{}.app {}";
89+
pub const MSIEXEC_INSTALL_COMMAND: &str = "start /wait msiexec /i {} /qn ALLOWDOWNGRADE=1";
9090
pub const WINDOWS_CHECK_ADMIN_COMMAND: &str = "net session";
9191
pub const DASH_VERSION: &str = "{}{}{} -v";
9292
pub const DASH_DASH_VERSION: &str = "{}{}{} --version";
@@ -444,14 +444,22 @@ pub trait SeleniumManager {
444444
));
445445
let mut browser_version: Option<String> = None;
446446
for driver_version_command in commands.into_iter() {
447-
let output = match run_shell_command_with_log(
448-
self.get_logger(),
449-
self.get_os(),
450-
driver_version_command,
451-
) {
452-
Ok(out) => out,
453-
Err(_e) => continue,
447+
let output = if driver_version_command.display().starts_with("(Get-") {
448+
match run_powershell_command_with_log(self.get_logger(), driver_version_command) {
449+
Ok(out) => out,
450+
Err(_e) => continue,
451+
}
452+
} else {
453+
match run_shell_command_with_log(
454+
self.get_logger(),
455+
self.get_os(),
456+
driver_version_command,
457+
) {
458+
Ok(out) => out,
459+
Err(_e) => continue,
460+
}
454461
};
462+
455463
let full_browser_version = parse_version(output, self.get_logger()).unwrap_or_default();
456464
if full_browser_version.is_empty() {
457465
continue;

rust/src/shell.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ impl Command {
6464
}
6565
}
6666

67+
pub fn run_powershell_command_with_log(log: &Logger, command: Command) -> Result<String, Error> {
68+
log.debug(format!("Running command: {}", command.display()));
69+
let output = run_powershell_command(command)?;
70+
log.debug(format!("Output: {:?}", output));
71+
Ok(output)
72+
}
73+
6774
pub fn run_shell_command_with_log(
6875
log: &Logger,
6976
os: &str,
@@ -75,9 +82,13 @@ pub fn run_shell_command_with_log(
7582
Ok(output)
7683
}
7784

85+
pub fn run_powershell_command(command: Command) -> Result<String, Error> {
86+
run_shell_command("powershell", "-c", command)
87+
}
88+
7889
pub fn run_shell_command_by_os(os: &str, command: Command) -> Result<String, Error> {
7990
let (shell, flag) = if WINDOWS.is(os) {
80-
("powershell", "-c")
91+
("cmd", "/c")
8192
} else {
8293
("sh", "-c")
8394
};

0 commit comments

Comments
 (0)