fix(desktop): corrige autostart do Raven no Windows

This commit is contained in:
esdrasrenan 2025-12-12 21:36:49 -03:00
parent 8cf13c43de
commit 2f9cd56153
2 changed files with 29 additions and 29 deletions

View file

@ -17,7 +17,7 @@ fn main() {
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>

View file

@ -478,8 +478,14 @@ pub fn run() {
#[cfg(target_os = "windows")]
{
let start_in_background = std::env::args().any(|arg| arg == "--background");
setup_raven_autostart();
setup_tray(&app.handle())?;
if start_in_background {
if let Some(win) = app.get_webview_window("main") {
let _ = win.hide();
}
}
// Tenta iniciar o agente e chat em background se houver credenciais salvas
let app_handle = app.handle().clone();
@ -541,38 +547,32 @@ fn setup_raven_autostart() {
let hkcu = RegKey::predef(HKEY_CURRENT_USER);
match hkcu.open_subkey_with_flags(
r"Software\Microsoft\Windows\CurrentVersion\Run",
KEY_SET_VALUE | KEY_READ,
) {
Ok(key) => {
match key.set_value("Raven", &value) {
Ok(()) => {
log_info!("Auto-start configurado: {value}");
let key = match hkcu.create_subkey(r"Software\Microsoft\Windows\CurrentVersion\Run") {
Ok((key, _)) => key,
Err(e) => {
log_error!("Falha ao criar/abrir chave de registro Run: {e}");
return;
}
};
// Valida que foi salvo corretamente
match key.get_value::<String, _>("Raven") {
Ok(saved) => {
if saved == value {
log_info!("Auto-start validado: entrada existe no registro");
} else {
log_warn!(
"Auto-start: valor difere. Esperado: {value}, Salvo: {saved}"
);
}
}
Err(e) => {
log_warn!("Auto-start: nao foi possivel validar entrada: {e}");
}
}
}
Err(e) => {
log_error!("Falha ao definir valor de auto-start no registro: {e}");
}
if let Err(e) = key.set_value("Raven", &value) {
log_error!("Falha ao definir valor de auto-start no registro: {e}");
return;
}
log_info!("Auto-start configurado: {value}");
// Valida que foi salvo corretamente
match key.get_value::<String, _>("Raven") {
Ok(saved) => {
if saved == value {
log_info!("Auto-start validado: entrada existe no registro");
} else {
log_warn!("Auto-start: valor difere. Esperado: {value}, Salvo: {saved}");
}
}
Err(e) => {
log_error!("Falha ao abrir chave de registro Run: {e}");
log_warn!("Auto-start: nao foi possivel validar entrada: {e}");
}
}
}