using System.Configuration; using System.Data; using System.Diagnostics; using System.IO; using System.ServiceProcess; using System.Windows; using Microsoft.Win32; namespace EngineeringSync.Setup; public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); if (e.Args.Length > 0 && e.Args[0].Equals("/uninstall", StringComparison.OrdinalIgnoreCase)) { RunUninstall(); Shutdown(); return; } var window = new Views.WizardWindow(); window.Show(); } private void RunUninstall() { var serviceName = "EngineeringSync"; try { var sc = new ServiceController(serviceName); if (sc.Status != ServiceControllerStatus.Stopped) { sc.Stop(); sc.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(10)); } } catch { } try { Process.Start(new ProcessStartInfo { FileName = "sc", Arguments = "delete EngineeringSync", UseShellExecute = false, CreateNoWindow = true })?.WaitForExit(); } catch { } try { using var runKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true); runKey?.DeleteValue("EngineeringSync.TrayApp", false); } catch { } try { Registry.LocalMachine.DeleteSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\EngineeringSync", false); } catch { } var desktop = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory); var linkPath = Path.Combine(desktop, "EngineeringSync.lnk"); if (File.Exists(linkPath)) File.Delete(linkPath); var startMenu = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu), "Programs", "EngineeringSync"); if (Directory.Exists(startMenu)) Directory.Delete(startMenu, true); var msg = "EngineeringSync wurde erfolgreich deinstalliert."; MessageBox.Show(msg, "Deinstallation", MessageBoxButton.OK, MessageBoxImage.Information); } }