From 6bd906ac2b5c4b3492795809cd65f467de548b9f Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 28 Apr 2016 21:54:10 +0200 Subject: [PATCH] Update installed registry key to latest version number after an update --- renderdocui/Code/AppMain.cs | 2 ++ renderdocui/Code/Helpers.cs | 41 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/renderdocui/Code/AppMain.cs b/renderdocui/Code/AppMain.cs index 0d91d25f4..c31e6cde5 100644 --- a/renderdocui/Code/AppMain.cs +++ b/renderdocui/Code/AppMain.cs @@ -175,6 +175,8 @@ namespace renderdocui.Code { Helpers.RegisterVulkanLayer(); } + + Helpers.UpdateInstalledVersionNumber(); } } diff --git a/renderdocui/Code/Helpers.cs b/renderdocui/Code/Helpers.cs index eba383a35..2c2670e99 100644 --- a/renderdocui/Code/Helpers.cs +++ b/renderdocui/Code/Helpers.cs @@ -308,6 +308,47 @@ namespace renderdocui.Code return CheckVulkanLayerRegistration(out dummy1, out dummy2, out dummy3); } + public static void UpdateInstalledVersionNumber() + { + if (!IsElevated) + return; + + try + { + string basepath = "SOFTWARE\\"; + + RegistryKey key = Registry.LocalMachine.CreateSubKey(basepath + "Microsoft\\Windows\\CurrentVersion\\Uninstall"); + + string[] subkeys = key.GetSubKeyNames(); + + foreach (var sub in subkeys) + { + RegistryKey prog = key.CreateSubKey(sub); + + string[] values = prog.GetValueNames(); + + if (Array.IndexOf(values, "DisplayName") >= 0 && + (string)prog.GetValue("DisplayName") == "RenderDoc" && + Array.IndexOf(values, "Publisher") >= 0 && + (string)prog.GetValue("Publisher") == "Baldur Karlsson") + { + var ver = System.Reflection.Assembly.GetEntryAssembly().GetName().Version; + uint majorversion = (uint)ver.Major; + uint minorversion = (uint)ver.Minor; + uint packedversion = (majorversion << 24) | (minorversion << 16); + + prog.SetValue("Version", packedversion, RegistryValueKind.DWord); + prog.SetValue("VersionMajor", majorversion, RegistryValueKind.DWord); + prog.SetValue("VersionMinor", minorversion, RegistryValueKind.DWord); + prog.SetValue("DisplayVersion", String.Format("{0}.{1}.0", majorversion, minorversion), RegistryValueKind.String); + } + } + } + catch (Exception) + { + } + } + public static void RegisterVulkanLayer() { if (!IsElevated)