refactor: improve auto-update inside browser prevention

This commit is contained in:
zhom
2025-06-17 02:57:30 +04:00
parent 0360a89ceb
commit 859af72724
3 changed files with 11 additions and 28 deletions
+2
View File
@@ -42,6 +42,7 @@
"msvc", "msvc",
"msys", "msys",
"Mullvad", "Mullvad",
"mullvadbrowser",
"nodecar", "nodecar",
"ntlm", "ntlm",
"objc", "objc",
@@ -66,6 +67,7 @@
"swatinem", "swatinem",
"sysinfo", "sysinfo",
"systempreferences", "systempreferences",
"taskkill",
"tauri", "tauri",
"titlebar", "titlebar",
"Torbrowser", "Torbrowser",
+1
View File
@@ -633,6 +633,7 @@ impl Browser for ChromiumBrowser {
"--disable-component-update".to_string(), "--disable-component-update".to_string(),
"--disable-background-timer-throttling".to_string(), "--disable-background-timer-throttling".to_string(),
"--crash-server-url=".to_string(), "--crash-server-url=".to_string(),
"--disable-updater".to_string(),
]; ];
// Add proxy configuration if provided // Add proxy configuration if provided
+8 -28
View File
@@ -1277,9 +1277,13 @@ impl BrowserRunner {
} }
/// Internal method to cleanup unused binaries (used by auto-cleanup) /// Internal method to cleanup unused binaries (used by auto-cleanup)
fn cleanup_unused_binaries_internal(&self) -> Result<Vec<String>, Box<dyn std::error::Error>> { fn cleanup_unused_binaries_internal(
&self,
) -> Result<Vec<String>, Box<dyn std::error::Error + Send + Sync>> {
// Load current profiles // Load current profiles
let profiles = self.list_profiles()?; let profiles = self
.list_profiles()
.map_err(|e| format!("Failed to list profiles: {e}"))?;
// Load registry // Load registry
let mut registry = crate::downloaded_browsers::DownloadedBrowsersRegistry::load()?; let mut registry = crate::downloaded_browsers::DownloadedBrowsersRegistry::load()?;
@@ -1300,23 +1304,19 @@ impl BrowserRunner {
vec![ vec![
// Disable default browser check // Disable default browser check
"user_pref(\"browser.shell.checkDefaultBrowser\", false);".to_string(), "user_pref(\"browser.shell.checkDefaultBrowser\", false);".to_string(),
// Disable automatic updates
"user_pref(\"app.update.enabled\", false);".to_string(), "user_pref(\"app.update.enabled\", false);".to_string(),
"user_pref(\"app.update.auto\", false);".to_string(), "user_pref(\"app.update.auto\", false);".to_string(),
"user_pref(\"app.update.mode\", 0);".to_string(), "user_pref(\"app.update.mode\", 0);".to_string(),
"user_pref(\"app.update.service.enabled\", false);".to_string(), "user_pref(\"app.update.service.enabled\", false);".to_string(),
"user_pref(\"app.update.silent\", false);".to_string(), "user_pref(\"app.update.silent\", false);".to_string(),
// Disable update checking entirely
"user_pref(\"app.update.checkInstallTime\", false);".to_string(), "user_pref(\"app.update.checkInstallTime\", false);".to_string(),
"user_pref(\"app.update.url\", \"\");".to_string(), "user_pref(\"app.update.url\", \"\");".to_string(),
"user_pref(\"app.update.url.manual\", \"\");".to_string(), "user_pref(\"app.update.url.manual\", \"\");".to_string(),
"user_pref(\"app.update.url.details\", \"\");".to_string(), "user_pref(\"app.update.url.details\", \"\");".to_string(),
// Disable background update downloads "user_pref(\"app.update.url.override\", \"\");".to_string(),
"user_pref(\"app.update.background.interval\", 9999999999);".to_string(),
"user_pref(\"app.update.download.attemptOnce\", false);".to_string(), "user_pref(\"app.update.download.attemptOnce\", false);".to_string(),
"user_pref(\"app.update.idletime\", -1);".to_string(), "user_pref(\"app.update.idletime\", -1);".to_string(),
// Additional update-related preferences for completeness
"user_pref(\"security.tls.insecure_fallback_hosts\", \"\");".to_string(),
"user_pref(\"app.update.staging.enabled\", false);".to_string(),
] ]
} }
@@ -2618,26 +2618,6 @@ pub async fn download_browser(
Ok(version) Ok(version)
} }
#[tauri::command]
pub fn is_browser_downloaded(browser_str: String, version: String) -> bool {
if let Ok(registry) = DownloadedBrowsersRegistry::load() {
if registry.is_browser_downloaded(&browser_str, &version) {
return true;
}
}
let browser_type = BrowserType::from_str(&browser_str).expect("Invalid browser type");
let browser_runner = BrowserRunner::new();
let browser = create_browser(browser_type.clone());
let binaries_dir = browser_runner.get_binaries_dir();
browser.is_version_downloaded(&version, &binaries_dir)
}
#[tauri::command]
pub fn check_browser_exists(browser_str: String, version: String) -> bool {
// This is an alias for is_browser_downloaded to provide clearer semantics for auto-updates
is_browser_downloaded(browser_str, version)
}
#[tauri::command] #[tauri::command]
pub async fn kill_browser_profile( pub async fn kill_browser_profile(
app_handle: tauri::AppHandle, app_handle: tauri::AppHandle,