diff --git a/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs b/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs index ec0ad494ac..2262aa7485 100644 --- a/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs +++ b/src/common/ManagedTelemetry/Telemetry/Events/EventBase.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.Tracing; +using System.Reflection; using System.Text; namespace Microsoft.PowerToys.Telemetry.Events @@ -12,5 +13,26 @@ namespace Microsoft.PowerToys.Telemetry.Events public class EventBase { public bool UTCReplace_AppSessionGuid => true; + + private string _version; + public string Version + { + get + { + if (string.IsNullOrEmpty(_version)) + { + _version = GetVersionFromAssembly(); + } + return _version; + } + } + + private string GetVersionFromAssembly() + { + // For consistency this should be formatted the same way as + // https://github.com/microsoft/PowerToys/blob/710f92d99965109fd788d85ebf8b6b9e0ba1524a/src/common/common.cpp#L635 + var version = Assembly.GetExecutingAssembly()?.GetName()?.Version ?? new Version(); + return $"v{version.Major}.{version.Minor}.{version.Build}"; + } } } diff --git a/src/core/Microsoft.PowerToys.Settings.UI.Lib/Telemetry/Events/SettingsBootEvent.cs b/src/core/Microsoft.PowerToys.Settings.UI.Lib/Telemetry/Events/SettingsBootEvent.cs index 757883d790..019fb5c5c9 100644 --- a/src/core/Microsoft.PowerToys.Settings.UI.Lib/Telemetry/Events/SettingsBootEvent.cs +++ b/src/core/Microsoft.PowerToys.Settings.UI.Lib/Telemetry/Events/SettingsBootEvent.cs @@ -11,11 +11,6 @@ namespace Microsoft.PowerLauncher.Telemetry [EventData] public class SettingsBootEvent : EventBase, IEvent { - /// - /// Gets The version string. TODO: This should be replaced by a P/Invoke call to get_product_version - /// - public string Version => "v0.19.3"; - public double BootTimeMs { get; set; } public PartA_PrivTags PartA_PrivTags => PartA_PrivTags.ProductAndServicePerformance; diff --git a/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherBootEvent.cs b/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherBootEvent.cs index afabe0ede5..b8611954c8 100644 --- a/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherBootEvent.cs +++ b/src/modules/launcher/PowerLauncher.Telemetry/Events/LauncherBootEvent.cs @@ -7,11 +7,6 @@ namespace Microsoft.PowerLauncher.Telemetry [EventData] public class LauncherBootEvent : EventBase, IEvent { - /// - /// TODO: This should be replaced by a P/Invoke call to get_product_version - /// - public string Version => "v0.19.3"; - public double BootTimeMs { get; set; } public PartA_PrivTags PartA_PrivTags => PartA_PrivTags.ProductAndServicePerformance; diff --git a/src/modules/previewpane/MarkdownPreviewHandler/Telemetry/Events/MarkdownFileHandlerLoaded.cs b/src/modules/previewpane/MarkdownPreviewHandler/Telemetry/Events/MarkdownFileHandlerLoaded.cs index 8ca29916c6..0b74bcf044 100644 --- a/src/modules/previewpane/MarkdownPreviewHandler/Telemetry/Events/MarkdownFileHandlerLoaded.cs +++ b/src/modules/previewpane/MarkdownPreviewHandler/Telemetry/Events/MarkdownFileHandlerLoaded.cs @@ -14,11 +14,6 @@ namespace MarkdownPreviewHandler.Telemetry.Events [EventData] public class MarkdownFileHandlerLoaded : EventBase, IEvent { - /// - /// Gets The version string. TODO: This should be replaced by a P/Invoke call to get_product_version. - /// - public string Version => "v0.19.3"; - /// public PartA_PrivTags PartA_PrivTags => PartA_PrivTags.ProductAndServiceUsage; } diff --git a/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFileHandlerLoaded.cs b/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFileHandlerLoaded.cs index 77c22cf558..538f9e7dfa 100644 --- a/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFileHandlerLoaded.cs +++ b/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFileHandlerLoaded.cs @@ -14,11 +14,6 @@ namespace SvgPreviewHandler.Telemetry.Events [EventData] public class SvgFileHandlerLoaded : EventBase, IEvent { - /// - /// Gets The version string. TODO: This should be replaced by a P/Invoke call to get_product_version. - /// - public string Version => "v0.19.3"; - /// public PartA_PrivTags PartA_PrivTags => PartA_PrivTags.ProductAndServiceUsage; }