From d98d1193fcda8dd5fd443de916409b6a5e3f4e50 Mon Sep 17 00:00:00 2001
From: ryanbodrug-microsoft
<56318517+ryanbodrug-microsoft@users.noreply.github.com>
Date: Wed, 29 Jul 2020 11:18:21 -0700
Subject: [PATCH] Removing hardcoded version numbers from c# telemetry events.
(#5283)
* Removing hardcoded version numbers from c# telemetry events.
* Removing dependency on powertoysInterop for getting version string.
* Defensive checks around getting assembly version
---
.../Telemetry/Events/EventBase.cs | 22 +++++++++++++++++++
.../Telemetry/Events/SettingsBootEvent.cs | 5 -----
.../Events/LauncherBootEvent.cs | 5 -----
.../Events/MarkdownFileHandlerLoaded.cs | 5 -----
.../Telemetry/Events/SvgFileHandlerLoaded.cs | 5 -----
5 files changed, 22 insertions(+), 20 deletions(-)
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;
}