summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src-tauri/src/os
diff options
context:
space:
mode:
Diffstat (limited to 'packages/desktop/src-tauri/src/os')
-rw-r--r--packages/desktop/src-tauri/src/os/windows.rs32
1 files changed, 28 insertions, 4 deletions
diff --git a/packages/desktop/src-tauri/src/os/windows.rs b/packages/desktop/src-tauri/src/os/windows.rs
index cab265b62..a163c4aa7 100644
--- a/packages/desktop/src-tauri/src/os/windows.rs
+++ b/packages/desktop/src-tauri/src/os/windows.rs
@@ -6,9 +6,12 @@ use std::{
};
use windows_sys::Win32::{
Foundation::ERROR_SUCCESS,
- System::Registry::{
- HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, REG_EXPAND_SZ, REG_SZ, RRF_RT_REG_EXPAND_SZ,
- RRF_RT_REG_SZ, RegGetValueW,
+ System::{
+ Registry::{
+ RegGetValueW, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, REG_EXPAND_SZ, REG_SZ,
+ RRF_RT_REG_EXPAND_SZ, RRF_RT_REG_SZ,
+ },
+ Threading::{CREATE_NEW_CONSOLE, CREATE_NO_WINDOW},
},
};
@@ -310,7 +313,7 @@ pub fn resolve_windows_app_path(app_name: &str) -> Option<String> {
let resolve_where = |query: &str| -> Option<String> {
let output = Command::new("where")
- .creation_flags(0x08000000)
+ .creation_flags(CREATE_NO_WINDOW)
.arg(query)
.output()
.ok()?;
@@ -437,3 +440,24 @@ pub fn resolve_windows_app_path(app_name: &str) -> Option<String> {
None
}
+
+pub fn open_in_powershell(path: String) -> Result<(), String> {
+ let path = PathBuf::from(path);
+ let dir = if path.is_dir() {
+ path
+ } else if let Some(parent) = path.parent() {
+ parent.to_path_buf()
+ } else {
+ std::env::current_dir()
+ .map_err(|e| format!("Failed to determine current directory: {e}"))?
+ };
+
+ Command::new("powershell.exe")
+ .creation_flags(CREATE_NEW_CONSOLE)
+ .current_dir(dir)
+ .args(["-NoExit"])
+ .spawn()
+ .map_err(|e| format!("Failed to start PowerShell: {e}"))?;
+
+ Ok(())
+}