fix: Fixed Windows Desktop Notifications. Windows Only Allows Notifications From Registered Applications. Added a Function in the Standalone Binary To Register It in the Registry As if It Were Installed.
This commit is contained in:
@@ -60,4 +60,3 @@ pub async fn run_traceroute(app: AppHandle, ip: String) -> Result<(), String> {
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+44
-2
@@ -3,11 +3,52 @@ mod models;
|
|||||||
mod net;
|
mod net;
|
||||||
mod scanner;
|
mod scanner;
|
||||||
|
|
||||||
use tauri::Manager;
|
|
||||||
use tauri::menu::{Menu, MenuItem};
|
use tauri::menu::{Menu, MenuItem};
|
||||||
use tauri::tray::TrayIconBuilder;
|
use tauri::tray::TrayIconBuilder;
|
||||||
|
use tauri::Manager;
|
||||||
|
|
||||||
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
fn register_aumid() {
|
||||||
|
let app_id = "io.argus.app";
|
||||||
|
let key_path = format!("HKCU\\Software\\Classes\\AppUserModelId\\{}", app_id);
|
||||||
|
|
||||||
|
// Check if already registered
|
||||||
|
let check = std::process::Command::new("reg")
|
||||||
|
.args(["query", &key_path])
|
||||||
|
.output();
|
||||||
|
|
||||||
|
if let Ok(o) = check {
|
||||||
|
if o.status.success() {
|
||||||
|
tracing::debug!("AUMID already registered");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not registered, create it
|
||||||
|
let output = std::process::Command::new("reg")
|
||||||
|
.args([
|
||||||
|
"add",
|
||||||
|
&key_path,
|
||||||
|
"/v", "DisplayName",
|
||||||
|
"/t", "REG_SZ",
|
||||||
|
"/d", "Argus",
|
||||||
|
"/f",
|
||||||
|
])
|
||||||
|
.output();
|
||||||
|
|
||||||
|
match output {
|
||||||
|
Ok(o) if o.status.success() => {
|
||||||
|
tracing::debug!("AUMID registered successfully");
|
||||||
|
}
|
||||||
|
Ok(o) => {
|
||||||
|
tracing::warn!("AUMID registration failed: {}", String::from_utf8_lossy(&o.stderr));
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
tracing::warn!("Failed to run reg command: {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
tracing_subscriber::fmt()
|
tracing_subscriber::fmt()
|
||||||
.with_env_filter(
|
.with_env_filter(
|
||||||
@@ -30,7 +71,8 @@ pub fn run() {
|
|||||||
let show = MenuItem::with_id(app, "show", "Show Argus", true, None::<&str>)?;
|
let show = MenuItem::with_id(app, "show", "Show Argus", true, None::<&str>)?;
|
||||||
let quit = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?;
|
let quit = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?;
|
||||||
let menu = Menu::with_items(app, &[&show, &quit])?;
|
let menu = Menu::with_items(app, &[&show, &quit])?;
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
register_aumid();
|
||||||
let _tray = TrayIconBuilder::new()
|
let _tray = TrayIconBuilder::new()
|
||||||
.icon(app.default_window_icon().unwrap().clone())
|
.icon(app.default_window_icon().unwrap().clone())
|
||||||
.tooltip("Argus - Network Scanner")
|
.tooltip("Argus - Network Scanner")
|
||||||
|
|||||||
+1
-1
@@ -1109,7 +1109,7 @@ const monitorTab = (() => {
|
|||||||
var count = Object.keys(entries).length;
|
var count = Object.keys(entries).length;
|
||||||
notify('Argus Monitor Active',
|
notify('Argus Monitor Active',
|
||||||
'The monitor is still running with ' + count + ' hosts. Close the monitor to stop pinging.');
|
'The monitor is still running with ' + count + ' hosts. Close the monitor to stop pinging.');
|
||||||
}, 15 * 60 * 1000);
|
}, 15* 60 * 1000);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Monitor start error:', err);
|
console.error('Monitor start error:', err);
|
||||||
setRunning(false);
|
setRunning(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user