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;
}