示例#1
0
        private static UninstallerType GetUninstallerType(RegistryKey uninstallerKey)
        {
            // Detect MSI installer based on registry entry (the proper way)
            if ((int)uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameWindowsInstaller, 0) != 0)
            {
                return(UninstallerType.Msiexec);
            }

            // Detect InnoSetup
            if (uninstallerKey.GetValueNames().Any(x => x.Contains("Inno Setup:")))
            {
                return(UninstallerType.InnoSetup);
            }

            // Detect Steam
            if (uninstallerKey.GetKeyName().StartsWith("Steam App ", StringComparison.Ordinal))
            {
                return(UninstallerType.Steam);
            }

            var uninstallString =
                uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameUninstallString) as string;

            return(string.IsNullOrEmpty(uninstallString)
                ? UninstallerType.Unknown
                : UninstallerTypeAdder.GetUninstallerType(uninstallString));
        }
示例#2
0
        private static Guid GetGuid(RegistryKey uninstallerKey)
        {
            // Look for a GUID registry entry
            var tempGuidString = uninstallerKey.GetStringSafe(RegistryNameBundleProviderKey);

            if (GuidTools.GuidTryParse(tempGuidString, out var resultGuid))
            {
                return(resultGuid);
            }

            if (GuidTools.TryExtractGuid(uninstallerKey.GetKeyName(), out resultGuid))
            {
                return(resultGuid);
            }
            string uninstallString = GetUninstallString(uninstallerKey);

            // Look for a valid GUID in the path
            return(GuidTools.TryExtractGuid(uninstallString, out resultGuid) ? resultGuid : Guid.Empty);
        }
示例#3
0
 private static ApplicationUninstallerEntry GetBasicInformation(RegistryKey uninstallerKey)
 {
     return(new ApplicationUninstallerEntry
     {
         RegistryPath = uninstallerKey.Name,
         RegistryKeyName = uninstallerKey.GetKeyName(),
         Comment = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameComment) as string,
         RawDisplayName = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameDisplayName) as string,
         DisplayVersion = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameDisplayVersion) as string,
         ParentKeyName = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameParentKeyName) as string,
         Publisher = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNamePublisher) as string,
         UninstallString = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameUninstallString) as string,
         QuietUninstallString = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameQuietUninstallString) as string,
         ModifyPath = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameModifyPath) as string,
         InstallLocation = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameInstallLocation) as string,
         InstallSource = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameInstallSource) as string,
         SystemComponent = (int)uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameSystemComponent, 0) != 0,
         DisplayIcon = uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameDisplayIcon) as string
     });
 }
示例#4
0
 private static ApplicationUninstallerEntry GetBasicInformation(RegistryKey uninstallerKey)
 {
     return(new ApplicationUninstallerEntry
     {
         RegistryPath = uninstallerKey.Name,
         RegistryKeyName = uninstallerKey.GetKeyName(),
         Comment = uninstallerKey.GetStringSafe(RegistryNameComment),
         RawDisplayName = uninstallerKey.GetStringSafe(RegistryNameDisplayName),
         DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(uninstallerKey.GetStringSafe(RegistryNameDisplayVersion)),
         ParentKeyName = uninstallerKey.GetStringSafe(RegistryNameParentKeyName),
         Publisher = uninstallerKey.GetStringSafe(RegistryNamePublisher),
         UninstallString = GetUninstallString(uninstallerKey),
         QuietUninstallString = GetQuietUninstallString(uninstallerKey),
         ModifyPath = uninstallerKey.GetStringSafe(RegistryNameModifyPath),
         InstallLocation = uninstallerKey.GetStringSafe(RegistryNameInstallLocation),
         InstallSource = uninstallerKey.GetStringSafe(RegistryNameInstallSource),
         SystemComponent = (int)uninstallerKey.GetValue(RegistryNameSystemComponent, 0) != 0,
         DisplayIcon = uninstallerKey.GetStringSafe(RegistryNameDisplayIcon)
     });
 }
示例#5
0
        private static Guid GetGuid(RegistryKey uninstallerKey)
        {
            // Look for a GUID registry entry
            var tempGuidString =
                uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameBundleProviderKey) as string;
            Guid resultGuid;

            if (GuidTools.GuidTryParse(tempGuidString, out resultGuid))
            {
                return(resultGuid);
            }

            if (GuidTools.TryExtractGuid(uninstallerKey.GetKeyName(), out resultGuid))
            {
                return(resultGuid);
            }

            var uninstallString =
                uninstallerKey.GetValue(ApplicationUninstallerEntry.RegistryNameUninstallString) as string;

            // Look for a valid GUID in the path
            return(GuidTools.TryExtractGuid(uninstallString, out resultGuid) ? resultGuid : Guid.Empty);
        }