using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.Win32; namespace CarManagerV3.Util { public static class InstallModeDetector { private const string _keyPath = @"Software\Jaro Digital\CarManager3"; private const string KeyPath = _keyPath; private const string ValueName = "InstallType"; public static bool IsInstalledViaMsi() { // Prefer HKLM if your MSI is per-machine; fallback to HKCU if per-user. System.Diagnostics.Debug.WriteLine($"Checking registry for install type at HKLM\\{KeyPath} and HKCU\\{KeyPath}"); object? val = Registry.GetValue($@"HKEY_LOCAL_MACHINE\{KeyPath}", ValueName, null) ?? Registry.GetValue($@"HKEY_CURRENT_USER\{KeyPath}", ValueName, null); return val is string s && string.Equals(s, "MSI", StringComparison.OrdinalIgnoreCase); } public static bool IsPortable() => !IsInstalledViaMsi(); public static string GetInstallType() { object? val = Registry.GetValue($@"HKEY_LOCAL_MACHINE\{KeyPath}", ValueName, null) ?? Registry.GetValue($@"HKEY_CURRENT_USER\{KeyPath}", ValueName, null); return val as string ?? "Unknown"; } } }