From 0933d177470f0f98755100561925e8258419bcf1 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Wed, 24 Jun 2026 11:17:28 -0700 Subject: [PATCH 01/10] Force v143 tooling --- src/VcpkgCustomTriplets/common.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/src/VcpkgCustomTriplets/common.cmake b/src/VcpkgCustomTriplets/common.cmake index cf0df77a3f..a6bd68b16a 100644 --- a/src/VcpkgCustomTriplets/common.cmake +++ b/src/VcpkgCustomTriplets/common.cmake @@ -1,4 +1,5 @@ set(VCPKG_LIBRARY_LINKAGE static) +set(VCPKG_PLATFORM_TOOLSET v143) set(VCPKG_C_FLAGS "/Qspectre /W3 /guard:cf /D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR") set(VCPKG_CXX_FLAGS "/Qspectre /W3 /guard:cf /D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR") set(VCPKG_INSTALL_OPTIONS, "--debug") From 164488f1a16398f31a5ab410e4fd08170d02b363 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Wed, 24 Jun 2026 13:23:38 -0700 Subject: [PATCH 02/10] Add store telemetry provider --- src/AppInstallerCommonCore/Telemetry/TraceLogging.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/AppInstallerCommonCore/Telemetry/TraceLogging.h b/src/AppInstallerCommonCore/Telemetry/TraceLogging.h index c2699f94ec..fb682ee445 100644 --- a/src/AppInstallerCommonCore/Telemetry/TraceLogging.h +++ b/src/AppInstallerCommonCore/Telemetry/TraceLogging.h @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. #pragma once @@ -63,4 +63,9 @@ TRACELOGGING_DECLARE_PROVIDER(g_hTraceProvider); extern bool g_IsTelemetryProviderEnabled; extern UCHAR g_TelemetryProviderLevel; -extern ULONGLONG g_TelemetryProviderMatchAnyKeyword; \ No newline at end of file +extern ULONGLONG g_TelemetryProviderMatchAnyKeyword; + +TRACELOGGING_DEFINE_PROVIDER(g_hStoreCriticalDataProvider, + "Microsoft.Store", + (0x5F0B026E, 0xBCC1, 0x5001, 0x95, 0xD3, 0x65, 0xE1, 0x70, 0xA1, 0x1E, 0xFA), + TraceLoggingOptionGroup(0x5ECB0BAC, 0xB930, 0x47F5, 0xA8, 0xA4, 0xE8, 0x25, 0x35, 0x29, 0xED, 0xB7)); From ba934559053e786702244d1b22d344a4328593c8 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Wed, 24 Jun 2026 13:23:56 -0700 Subject: [PATCH 03/10] A method to send StoreExperienceTelemetryWinGetInstall telemetry event --- .../AppInstallerTelemetry.cpp | 23 ++++++++++++++++++- .../Public/AppInstallerTelemetry.h | 2 ++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp b/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp index 2fea3ee27f..8ba586dc22 100644 --- a/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp +++ b/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp @@ -837,13 +837,34 @@ namespace AppInstaller::Logging m_summary.PackageVersion = version; m_summary.RepairExecutionType = type; m_summary.RepairErrorCode = errorCode; - + } } AICLI_LOG(CLI, Error, << type << " repair failed: " << errorCode); } + void TelemetryTraceLogger::LogStoreInstall(std::string_view packageId) const noexcept + { + if (IsTelemetryEnabled()) + { + TraceLoggingWrite(g_hStoreCriticalDataProvider, + "StoreExperienceTelemetryWinGetInstall", + TelemetryPrivacyDataTag(PDT_ProductAndServicePerformance), + TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES), + AICLI_TraceLoggingStringView(packageId, "pid"), + TraceLoggingString(m_caller.c_str(), "src"), + TraceLoggingWideString(L"msstore", "cn") + ); + if (m_useSummary) + { + m_summary.SourceIdentifier = m_caller; + m_summary.PackageIdentifier = packageId; + } + } + AICLI_LOG(CLI, Info, << "Store install: Source [" << m_caller << "] Package [" << packageId << "]"); + } + TelemetryTraceLogger::~TelemetryTraceLogger() { if (IsTelemetryEnabled()) diff --git a/src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h b/src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h index 3067c1421c..d393105bab 100644 --- a/src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h +++ b/src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h @@ -290,6 +290,8 @@ namespace AppInstaller::Logging uint64_t downloadedBytes, bool isManualUpdate) const noexcept; + void LogStoreInstall(std::string_view packageId) const noexcept; + protected: bool IsTelemetryEnabled() const noexcept; From 8708041fd69c1efe4f4110539d91f7b90656f437 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Thu, 25 Jun 2026 14:26:47 -0700 Subject: [PATCH 04/10] Fix tracelog provider --- src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp | 8 +++++++- src/AppInstallerCommonCore/Telemetry/TraceLogging.h | 5 +---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp b/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp index 22826f886b..33b07479b4 100644 --- a/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp +++ b/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. #include "pch.h" @@ -11,6 +11,12 @@ TRACELOGGING_DEFINE_PROVIDER( (0xc0cf606f, 0x569b, 0x5c20, 0x27, 0xd9, 0x88, 0xa7, 0x45, 0xfa, 0x21, 0x75), TraceLoggingOptionMicrosoftTelemetry()); +TRACELOGGING_DEFINE_PROVIDER( + g_hStoreCriticalDataProvider, + "Microsoft.Store", + (0x5F0B026E, 0xBCC1, 0x5001, 0x95, 0xD3, 0x65, 0xE1, 0x70, 0xA1, 0x1E, 0xFA), + TraceLoggingOptionGroup(0x5ECB0BAC, 0xB930, 0x47F5, 0xA8, 0xA4, 0xE8, 0x25, 0x35, 0x29, 0xED, 0xB7)); + bool g_IsTelemetryProviderEnabled{}; UCHAR g_TelemetryProviderLevel{}; ULONGLONG g_TelemetryProviderMatchAnyKeyword{}; diff --git a/src/AppInstallerCommonCore/Telemetry/TraceLogging.h b/src/AppInstallerCommonCore/Telemetry/TraceLogging.h index fb682ee445..392f48e5d0 100644 --- a/src/AppInstallerCommonCore/Telemetry/TraceLogging.h +++ b/src/AppInstallerCommonCore/Telemetry/TraceLogging.h @@ -65,7 +65,4 @@ extern bool g_IsTelemetryProviderEnabled; extern UCHAR g_TelemetryProviderLevel; extern ULONGLONG g_TelemetryProviderMatchAnyKeyword; -TRACELOGGING_DEFINE_PROVIDER(g_hStoreCriticalDataProvider, - "Microsoft.Store", - (0x5F0B026E, 0xBCC1, 0x5001, 0x95, 0xD3, 0x65, 0xE1, 0x70, 0xA1, 0x1E, 0xFA), - TraceLoggingOptionGroup(0x5ECB0BAC, 0xB930, 0x47F5, 0xA8, 0xA4, 0xE8, 0x25, 0x35, 0x29, 0xED, 0xB7)); +TRACELOGGING_DECLARE_PROVIDER(g_hStoreCriticalDataProvider); From 5630a250b20823b76bfc8bac018d59e3705d9e09 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Thu, 25 Jun 2026 15:31:57 -0700 Subject: [PATCH 05/10] Fix telemetry setup and sending --- .../AppInstallerTelemetry.cpp | 10 ++++++--- .../Telemetry/TraceLogging.cpp | 22 ++++++++++++++++--- .../Telemetry/TraceLogging.h | 1 + 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp b/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp index 8ba586dc22..6fe60af234 100644 --- a/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp +++ b/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp @@ -846,22 +846,26 @@ namespace AppInstaller::Logging void TelemetryTraceLogger::LogStoreInstall(std::string_view packageId) const noexcept { - if (IsTelemetryEnabled()) + // Don't use IsTelemetryEnabled as that also checks the WinGet provider. + if (g_IsStoreTelemetryProviderEnabled && m_isInitialized && m_isSettingEnabled && m_isRuntimeEnabled) { TraceLoggingWrite(g_hStoreCriticalDataProvider, - "StoreExperienceTelemetryWinGetInstall", + "StoreExperienceTelemetry-WinGetInstall", TelemetryPrivacyDataTag(PDT_ProductAndServicePerformance), TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES), AICLI_TraceLoggingStringView(packageId, "pid"), TraceLoggingString(m_caller.c_str(), "src"), TraceLoggingWideString(L"msstore", "cn") ); - if (m_useSummary) + + // Respect the WinGet provider for summary editing + if (g_IsTelemetryProviderEnabled && m_useSummary) { m_summary.SourceIdentifier = m_caller; m_summary.PackageIdentifier = packageId; } } + AICLI_LOG(CLI, Info, << "Store install: Source [" << m_caller << "] Package [" << packageId << "]"); } diff --git a/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp b/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp index 33b07479b4..ee43c54c36 100644 --- a/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp +++ b/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp @@ -11,15 +11,17 @@ TRACELOGGING_DEFINE_PROVIDER( (0xc0cf606f, 0x569b, 0x5c20, 0x27, 0xd9, 0x88, 0xa7, 0x45, 0xfa, 0x21, 0x75), TraceLoggingOptionMicrosoftTelemetry()); +bool g_IsTelemetryProviderEnabled{}; +UCHAR g_TelemetryProviderLevel{}; +ULONGLONG g_TelemetryProviderMatchAnyKeyword{}; + TRACELOGGING_DEFINE_PROVIDER( g_hStoreCriticalDataProvider, "Microsoft.Store", (0x5F0B026E, 0xBCC1, 0x5001, 0x95, 0xD3, 0x65, 0xE1, 0x70, 0xA1, 0x1E, 0xFA), TraceLoggingOptionGroup(0x5ECB0BAC, 0xB930, 0x47F5, 0xA8, 0xA4, 0xE8, 0x25, 0x35, 0x29, 0xED, 0xB7)); -bool g_IsTelemetryProviderEnabled{}; -UCHAR g_TelemetryProviderLevel{}; -ULONGLONG g_TelemetryProviderMatchAnyKeyword{}; +bool g_IsStoreTelemetryProviderEnabled{}; struct TraceProvider { @@ -44,12 +46,26 @@ void WINAPI TelemetryProviderEnabledCallback( g_TelemetryProviderMatchAnyKeyword = matchAnyKeyword; } +void WINAPI StoreTelemetryProviderEnabledCallback( + _In_ LPCGUID /*sourceId*/, + _In_ ULONG isEnabled, + _In_ UCHAR /*level*/, + _In_ ULONGLONG /*matchAnyKeyword*/, + _In_ ULONGLONG /*matchAllKeywords*/, + _In_opt_ PEVENT_FILTER_DESCRIPTOR /*filterData*/, + _In_opt_ PVOID /*callbackContext*/) +{ + g_IsStoreTelemetryProviderEnabled = !!isEnabled; +} + TraceProvider::TraceProvider() { TraceLoggingRegisterEx(g_hTraceProvider, TelemetryProviderEnabledCallback, nullptr); + TraceLoggingRegisterEx(g_hStoreCriticalDataProvider, StoreTelemetryProviderEnabledCallback, nullptr); } TraceProvider::~TraceProvider() { TraceLoggingUnregister(g_hTraceProvider); + TraceLoggingUnregister(g_hStoreCriticalDataProvider); } diff --git a/src/AppInstallerCommonCore/Telemetry/TraceLogging.h b/src/AppInstallerCommonCore/Telemetry/TraceLogging.h index 392f48e5d0..03cc3de6a2 100644 --- a/src/AppInstallerCommonCore/Telemetry/TraceLogging.h +++ b/src/AppInstallerCommonCore/Telemetry/TraceLogging.h @@ -66,3 +66,4 @@ extern UCHAR g_TelemetryProviderLevel; extern ULONGLONG g_TelemetryProviderMatchAnyKeyword; TRACELOGGING_DECLARE_PROVIDER(g_hStoreCriticalDataProvider); +extern bool g_IsStoreTelemetryProviderEnabled; From 930515c0dce6fa33736086d250f2c4b2fe33cc79 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Thu, 25 Jun 2026 15:32:17 -0700 Subject: [PATCH 06/10] Send telemetry when from the store --- src/AppInstallerCLICore/Workflows/InstallFlow.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/AppInstallerCLICore/Workflows/InstallFlow.cpp b/src/AppInstallerCLICore/Workflows/InstallFlow.cpp index e52234a139..f2e591501c 100644 --- a/src/AppInstallerCLICore/Workflows/InstallFlow.cpp +++ b/src/AppInstallerCLICore/Workflows/InstallFlow.cpp @@ -571,6 +571,14 @@ namespace AppInstaller::CLI::Workflow } else { + const auto& packageVersion = context.Get(); + const auto& manifest = context.Get(); + + if (packageVersion && packageVersion->GetSource().IsWellKnownSource(WellKnownSource::MicrosoftStore)) + { + Logging::Telemetry().LogStoreInstall(manifest.Id); + } + if (isRepair) { context.Reporter.Info() << Resource::String::RepairFlowRepairSuccess << std::endl; From 42c94002390eec92feea9a310ef2cf60fed58155 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Thu, 25 Jun 2026 15:58:23 -0700 Subject: [PATCH 07/10] Fix keyword --- src/AppInstallerCommonCore/AppInstallerTelemetry.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp b/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp index 6fe60af234..1eff5e3ea7 100644 --- a/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp +++ b/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp @@ -852,7 +852,7 @@ namespace AppInstaller::Logging TraceLoggingWrite(g_hStoreCriticalDataProvider, "StoreExperienceTelemetry-WinGetInstall", TelemetryPrivacyDataTag(PDT_ProductAndServicePerformance), - TraceLoggingKeyword(MICROSOFT_KEYWORD_MEASURES), + TraceLoggingKeyword(MICROSOFT_KEYWORD_CRITICAL_DATA), AICLI_TraceLoggingStringView(packageId, "pid"), TraceLoggingString(m_caller.c_str(), "src"), TraceLoggingWideString(L"msstore", "cn") From 5a3c99ace2d1bef1253c8ef442e1b8d90a584929 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Thu, 25 Jun 2026 18:53:34 -0700 Subject: [PATCH 08/10] Add more comments --- src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h | 1 + src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h b/src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h index d393105bab..57d29a87f2 100644 --- a/src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h +++ b/src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h @@ -290,6 +290,7 @@ namespace AppInstaller::Logging uint64_t downloadedBytes, bool isManualUpdate) const noexcept; + // Logs when an install succeeded from the msstore source. void LogStoreInstall(std::string_view packageId) const noexcept; protected: diff --git a/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp b/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp index ee43c54c36..29052565ac 100644 --- a/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp +++ b/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp @@ -15,6 +15,7 @@ bool g_IsTelemetryProviderEnabled{}; UCHAR g_TelemetryProviderLevel{}; ULONGLONG g_TelemetryProviderMatchAnyKeyword{}; +// GUID for Microsoft.Store : {5F0B026E-BCC1-5001-95D3-65E170A11EFA} TRACELOGGING_DEFINE_PROVIDER( g_hStoreCriticalDataProvider, "Microsoft.Store", From a6c6db566c48f10ed991b6479b0d06103996f03a Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Tue, 30 Jun 2026 11:04:14 -0700 Subject: [PATCH 09/10] Should use the Microsoft-Windows-Store provider, not the Microsoft.Store provider --- .../AppInstallerTelemetry.cpp | 2 +- .../Telemetry/TraceLogging.cpp | 14 +++++++------- .../Telemetry/TraceLogging.h | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp b/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp index 1eff5e3ea7..4487728ca9 100644 --- a/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp +++ b/src/AppInstallerCommonCore/AppInstallerTelemetry.cpp @@ -849,7 +849,7 @@ namespace AppInstaller::Logging // Don't use IsTelemetryEnabled as that also checks the WinGet provider. if (g_IsStoreTelemetryProviderEnabled && m_isInitialized && m_isSettingEnabled && m_isRuntimeEnabled) { - TraceLoggingWrite(g_hStoreCriticalDataProvider, + TraceLoggingWrite(g_hWindowsStoreProvider, "StoreExperienceTelemetry-WinGetInstall", TelemetryPrivacyDataTag(PDT_ProductAndServicePerformance), TraceLoggingKeyword(MICROSOFT_KEYWORD_CRITICAL_DATA), diff --git a/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp b/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp index 29052565ac..07aefa0505 100644 --- a/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp +++ b/src/AppInstallerCommonCore/Telemetry/TraceLogging.cpp @@ -15,12 +15,12 @@ bool g_IsTelemetryProviderEnabled{}; UCHAR g_TelemetryProviderLevel{}; ULONGLONG g_TelemetryProviderMatchAnyKeyword{}; -// GUID for Microsoft.Store : {5F0B026E-BCC1-5001-95D3-65E170A11EFA} +// GUID for Microsoft-Windows-Store : {9C2A37F3-E5FD-5CAE-BCD1-43DAFEEE1FF0} TRACELOGGING_DEFINE_PROVIDER( - g_hStoreCriticalDataProvider, - "Microsoft.Store", - (0x5F0B026E, 0xBCC1, 0x5001, 0x95, 0xD3, 0x65, 0xE1, 0x70, 0xA1, 0x1E, 0xFA), - TraceLoggingOptionGroup(0x5ECB0BAC, 0xB930, 0x47F5, 0xA8, 0xA4, 0xE8, 0x25, 0x35, 0x29, 0xED, 0xB7)); + g_hWindowsStoreProvider, + "Microsoft-Windows-Store", + (0x9c2a37f3, 0xe5fd, 0x5cae, 0xbc, 0xd1, 0x43, 0xda, 0xfe, 0xee, 0x1f, 0xf0), + TraceLoggingOptionMicrosoftTelemetry()); bool g_IsStoreTelemetryProviderEnabled{}; @@ -62,11 +62,11 @@ void WINAPI StoreTelemetryProviderEnabledCallback( TraceProvider::TraceProvider() { TraceLoggingRegisterEx(g_hTraceProvider, TelemetryProviderEnabledCallback, nullptr); - TraceLoggingRegisterEx(g_hStoreCriticalDataProvider, StoreTelemetryProviderEnabledCallback, nullptr); + TraceLoggingRegisterEx(g_hWindowsStoreProvider, StoreTelemetryProviderEnabledCallback, nullptr); } TraceProvider::~TraceProvider() { TraceLoggingUnregister(g_hTraceProvider); - TraceLoggingUnregister(g_hStoreCriticalDataProvider); + TraceLoggingUnregister(g_hWindowsStoreProvider); } diff --git a/src/AppInstallerCommonCore/Telemetry/TraceLogging.h b/src/AppInstallerCommonCore/Telemetry/TraceLogging.h index 03cc3de6a2..472df5396d 100644 --- a/src/AppInstallerCommonCore/Telemetry/TraceLogging.h +++ b/src/AppInstallerCommonCore/Telemetry/TraceLogging.h @@ -65,5 +65,5 @@ extern bool g_IsTelemetryProviderEnabled; extern UCHAR g_TelemetryProviderLevel; extern ULONGLONG g_TelemetryProviderMatchAnyKeyword; -TRACELOGGING_DECLARE_PROVIDER(g_hStoreCriticalDataProvider); +TRACELOGGING_DECLARE_PROVIDER(g_hWindowsStoreProvider); extern bool g_IsStoreTelemetryProviderEnabled; From 10cbff46b72b58a427a0766516b31f7fbf368314 Mon Sep 17 00:00:00 2001 From: Shmueli Englard Date: Wed, 1 Jul 2026 11:04:53 -0700 Subject: [PATCH 10/10] Guard PackageVersion access on install success path ReportInstallerResult's success branch fetched Execution::Data::PackageVersion unconditionally to decide whether to emit the msstore install telemetry event. Get<> throws E_NOT_SET when the key is absent, and the --manifest install path (GetManifestFromArg) never adds PackageVersion, so a successful local-manifest install threw at the reporting stage and was reported as an error. Guard the access with Contains(Execution::Data::PackageVersion) before Get, and only fetch the Manifest when actually emitting. Store installs (which always have a PackageVersion) are unaffected; --manifest installs now skip the block instead of throwing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/AppInstallerCLICore/Workflows/InstallFlow.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/AppInstallerCLICore/Workflows/InstallFlow.cpp b/src/AppInstallerCLICore/Workflows/InstallFlow.cpp index f2e591501c..dabe1bc46c 100644 --- a/src/AppInstallerCLICore/Workflows/InstallFlow.cpp +++ b/src/AppInstallerCLICore/Workflows/InstallFlow.cpp @@ -571,12 +571,15 @@ namespace AppInstaller::CLI::Workflow } else { - const auto& packageVersion = context.Get(); - const auto& manifest = context.Get(); - - if (packageVersion && packageVersion->GetSource().IsWellKnownSource(WellKnownSource::MicrosoftStore)) + if (context.Contains(Execution::Data::PackageVersion)) { - Logging::Telemetry().LogStoreInstall(manifest.Id); + const auto& packageVersion = context.Get(); + + if (packageVersion && packageVersion->GetSource().IsWellKnownSource(WellKnownSource::MicrosoftStore)) + { + const auto& manifest = context.Get(); + Logging::Telemetry().LogStoreInstall(manifest.Id); + } } if (isRepair)