From ca93379b08bf81ff1e09d304a355e92aefdc65fb Mon Sep 17 00:00:00 2001 From: Easton Pillay Date: Tue, 3 May 2022 14:19:49 -0400 Subject: [PATCH 1/7] Fix list/upgrade table for packages with multiple ARP entries. --- src/AppInstallerCLICore/Argument.cpp | 2 + .../Commands/ListCommand.cpp | 1 + src/AppInstallerCLICore/ExecutionArgs.h | 1 + src/AppInstallerCLICore/Resources.h | 1 + .../Workflows/WorkflowBase.cpp | 41 +++++++++++++++---- .../Shared/Strings/en-us/winget.resw | 3 ++ 6 files changed, 41 insertions(+), 8 deletions(-) diff --git a/src/AppInstallerCLICore/Argument.cpp b/src/AppInstallerCLICore/Argument.cpp index 480581a54b..84732ea1d6 100644 --- a/src/AppInstallerCLICore/Argument.cpp +++ b/src/AppInstallerCLICore/Argument.cpp @@ -63,6 +63,8 @@ namespace AppInstaller::CLI return Argument{ "msix", 'm', Args::Type::Msix, Resource::String::MsixArgumentDescription, ArgumentType::Flag }; case Args::Type::ListVersions: return Argument{ "versions", NoAlias, Args::Type::ListVersions, Resource::String::VersionsArgumentDescription, ArgumentType::Flag }; + case Args::Type::ListAll: + return Argument{ "all", 'a', Args::Type::ListAll, Resource::String::ListAllArgumentDescription, ArgumentType::Flag}; case Args::Type::Help: return Argument{ "help", APPINSTALLER_CLI_HELP_ARGUMENT_TEXT_CHAR, Args::Type::Help, Resource::String::HelpArgumentDescription, ArgumentType::Flag }; case Args::Type::SourceName: diff --git a/src/AppInstallerCLICore/Commands/ListCommand.cpp b/src/AppInstallerCLICore/Commands/ListCommand.cpp index d8e9397f26..9480260eae 100644 --- a/src/AppInstallerCLICore/Commands/ListCommand.cpp +++ b/src/AppInstallerCLICore/Commands/ListCommand.cpp @@ -24,6 +24,7 @@ namespace AppInstaller::CLI Argument::ForType(Execution::Args::Type::Exact), Argument::ForType(Execution::Args::Type::CustomHeader), Argument::ForType(Execution::Args::Type::AcceptSourceAgreements), + Argument::ForType(Execution::Args::Type::ListAll), }; } diff --git a/src/AppInstallerCLICore/ExecutionArgs.h b/src/AppInstallerCLICore/ExecutionArgs.h index f75b351918..23f9377e2d 100644 --- a/src/AppInstallerCLICore/ExecutionArgs.h +++ b/src/AppInstallerCLICore/ExecutionArgs.h @@ -81,6 +81,7 @@ namespace AppInstaller::CLI::Execution // Other All, // Used in Update command to update all installed packages to latest + ListAll, // Used in List command to list all installed apps associated with a package ListVersions, // Used in Show command to list all available versions of an app NoVT, // Disable VirtualTerminal outputs RetroStyle, // Makes progress display as retro diff --git a/src/AppInstallerCLICore/Resources.h b/src/AppInstallerCLICore/Resources.h index 7a2a0cfd48..418e3733f6 100644 --- a/src/AppInstallerCLICore/Resources.h +++ b/src/AppInstallerCLICore/Resources.h @@ -156,6 +156,7 @@ namespace AppInstaller::CLI::Resource WINGET_DEFINE_RESOURCE_STRINGID(InvalidNameError); WINGET_DEFINE_RESOURCE_STRINGID(LicenseAgreement); WINGET_DEFINE_RESOURCE_STRINGID(Links); + WINGET_DEFINE_RESOURCE_STRINGID(ListAllArgumentDescription); WINGET_DEFINE_RESOURCE_STRINGID(ListCommandLongDescription); WINGET_DEFINE_RESOURCE_STRINGID(ListCommandShortDescription); WINGET_DEFINE_RESOURCE_STRINGID(LocaleArgumentDescription); diff --git a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp index d70cca7183..a860e57bcd 100644 --- a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp +++ b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp @@ -710,6 +710,7 @@ namespace AppInstaller::CLI::Workflow int unknownPackagesCount = 0; auto &source = context.Get(); bool shouldShowSource = source.IsComposite() && source.GetAvailableSources().size() > 1; + std::set packageIdsPrinted = std::set(); for (const auto& match : searchResult.Matches) { @@ -731,26 +732,50 @@ namespace AppInstaller::CLI::Workflow if (updateAvailable || !m_onlyShowUpgrades) { Utility::LocIndString availableVersion, sourceName; + Utility::LocIndString packageId = match.Package->GetProperty(PackageProperty::Id); if (latestVersion) { if (updateAvailable) { availableVersion = latestVersion->GetProperty(PackageVersionProperty::Version); - availableUpgradesCount++; + if (context.Args.Contains(Execution::Args::Type::ListAll) || !packageIdsPrinted.count(packageId)) + { + // we should only add to the upgrade count if we actually showed the table entry. + availableUpgradesCount++; + } } // Always show the source for correlated packages sourceName = latestVersion->GetProperty(PackageVersionProperty::SourceName); } - table.OutputLine({ - match.Package->GetProperty(PackageProperty::Name), - match.Package->GetProperty(PackageProperty::Id), - installedVersion->GetProperty(PackageVersionProperty::Version), - availableVersion, - shouldShowSource ? sourceName : ""s - }); + if (context.Args.Contains(Execution::Args::Type::ListAll)) + { + table.OutputLine({ + installedVersion->GetProperty(PackageVersionProperty::Name), + match.Package->GetProperty(PackageProperty::Id), + installedVersion->GetProperty(PackageVersionProperty::Version), + availableVersion, + shouldShowSource ? sourceName : ""s + }); + } + else + { + // we need to only list once per package + if (!packageIdsPrinted.count(packageId)) + { + packageIdsPrinted.insert(packageId); + table.OutputLine({ + match.Package->GetProperty(PackageProperty::Name), + match.Package->GetProperty(PackageProperty::Id), + installedVersion->GetProperty(PackageVersionProperty::Version), + availableVersion, + shouldShowSource ? sourceName : ""s + }); + } + } + } } } diff --git a/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw b/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw index 9921131785..4426c4821d 100644 --- a/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw +++ b/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw @@ -1308,4 +1308,7 @@ Please specify one of them using the `--source` option to proceed. No package selection argument was provided; see the help for details about finding a package. + + List all software installed by a package + \ No newline at end of file From 07521bf6721af1ffd05ac35e4b4166b153b76a8c Mon Sep 17 00:00:00 2001 From: Easton Pillay Date: Tue, 3 May 2022 16:23:12 -0400 Subject: [PATCH 2/7] Replaced tabs with spaces, sorry. --- src/AppInstallerCLICore/ExecutionArgs.h | 2 +- src/AppInstallerCLICore/Workflows/WorkflowBase.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/AppInstallerCLICore/ExecutionArgs.h b/src/AppInstallerCLICore/ExecutionArgs.h index 23f9377e2d..25f47c171a 100644 --- a/src/AppInstallerCLICore/ExecutionArgs.h +++ b/src/AppInstallerCLICore/ExecutionArgs.h @@ -81,7 +81,7 @@ namespace AppInstaller::CLI::Execution // Other All, // Used in Update command to update all installed packages to latest - ListAll, // Used in List command to list all installed apps associated with a package + ListAll, // Used in List command to list all installed apps associated with a package ListVersions, // Used in Show command to list all available versions of an app NoVT, // Disable VirtualTerminal outputs RetroStyle, // Makes progress display as retro diff --git a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp index a860e57bcd..eab29a0d3f 100644 --- a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp +++ b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp @@ -753,11 +753,11 @@ namespace AppInstaller::CLI::Workflow if (context.Args.Contains(Execution::Args::Type::ListAll)) { table.OutputLine({ - installedVersion->GetProperty(PackageVersionProperty::Name), - match.Package->GetProperty(PackageProperty::Id), - installedVersion->GetProperty(PackageVersionProperty::Version), - availableVersion, - shouldShowSource ? sourceName : ""s + installedVersion->GetProperty(PackageVersionProperty::Name), + match.Package->GetProperty(PackageProperty::Id), + installedVersion->GetProperty(PackageVersionProperty::Version), + availableVersion, + shouldShowSource ? sourceName : ""s }); } else From 499c008133e7e06936e8d8c3f9bb251e29b927db Mon Sep 17 00:00:00 2001 From: Easton Pillay Date: Wed, 4 May 2022 08:45:33 -0400 Subject: [PATCH 3/7] Now using a pair of the ID and source for deduping. --- src/AppInstallerCLICore/Workflows/WorkflowBase.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp index eab29a0d3f..17b07d9b8e 100644 --- a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp +++ b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp @@ -710,7 +710,7 @@ namespace AppInstaller::CLI::Workflow int unknownPackagesCount = 0; auto &source = context.Get(); bool shouldShowSource = source.IsComposite() && source.GetAvailableSources().size() > 1; - std::set packageIdsPrinted = std::set(); + std::set> packageIdsPrinted = std::set>(); for (const auto& match : searchResult.Matches) { @@ -736,18 +736,18 @@ namespace AppInstaller::CLI::Workflow if (latestVersion) { + // Always show the source for correlated packages + sourceName = latestVersion->GetProperty(PackageVersionProperty::SourceName); + if (updateAvailable) { availableVersion = latestVersion->GetProperty(PackageVersionProperty::Version); - if (context.Args.Contains(Execution::Args::Type::ListAll) || !packageIdsPrinted.count(packageId)) + if (context.Args.Contains(Execution::Args::Type::ListAll) || !packageIdsPrinted.count({ packageId, sourceName })) { // we should only add to the upgrade count if we actually showed the table entry. availableUpgradesCount++; } } - - // Always show the source for correlated packages - sourceName = latestVersion->GetProperty(PackageVersionProperty::SourceName); } if (context.Args.Contains(Execution::Args::Type::ListAll)) @@ -763,9 +763,9 @@ namespace AppInstaller::CLI::Workflow else { // we need to only list once per package - if (!packageIdsPrinted.count(packageId)) + if (!packageIdsPrinted.count({ packageId, sourceName })) { - packageIdsPrinted.insert(packageId); + packageIdsPrinted.insert({ packageId, sourceName }); table.OutputLine({ match.Package->GetProperty(PackageProperty::Name), match.Package->GetProperty(PackageProperty::Id), From 2959a36df48b66d15ae192a29a5d9a64505661d1 Mon Sep 17 00:00:00 2001 From: Easton Pillay Date: Wed, 4 May 2022 08:51:10 -0400 Subject: [PATCH 4/7] Fixed issues from @yao-msft's code review. --- src/AppInstallerCLICore/Argument.cpp | 2 -- src/AppInstallerCLICore/Commands/ListCommand.cpp | 2 +- src/AppInstallerCLICore/Workflows/WorkflowBase.cpp | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/AppInstallerCLICore/Argument.cpp b/src/AppInstallerCLICore/Argument.cpp index 84732ea1d6..480581a54b 100644 --- a/src/AppInstallerCLICore/Argument.cpp +++ b/src/AppInstallerCLICore/Argument.cpp @@ -63,8 +63,6 @@ namespace AppInstaller::CLI return Argument{ "msix", 'm', Args::Type::Msix, Resource::String::MsixArgumentDescription, ArgumentType::Flag }; case Args::Type::ListVersions: return Argument{ "versions", NoAlias, Args::Type::ListVersions, Resource::String::VersionsArgumentDescription, ArgumentType::Flag }; - case Args::Type::ListAll: - return Argument{ "all", 'a', Args::Type::ListAll, Resource::String::ListAllArgumentDescription, ArgumentType::Flag}; case Args::Type::Help: return Argument{ "help", APPINSTALLER_CLI_HELP_ARGUMENT_TEXT_CHAR, Args::Type::Help, Resource::String::HelpArgumentDescription, ArgumentType::Flag }; case Args::Type::SourceName: diff --git a/src/AppInstallerCLICore/Commands/ListCommand.cpp b/src/AppInstallerCLICore/Commands/ListCommand.cpp index 9480260eae..8841de1785 100644 --- a/src/AppInstallerCLICore/Commands/ListCommand.cpp +++ b/src/AppInstallerCLICore/Commands/ListCommand.cpp @@ -24,7 +24,7 @@ namespace AppInstaller::CLI Argument::ForType(Execution::Args::Type::Exact), Argument::ForType(Execution::Args::Type::CustomHeader), Argument::ForType(Execution::Args::Type::AcceptSourceAgreements), - Argument::ForType(Execution::Args::Type::ListAll), + Argument{ "all", Argument::NoAlias, Execution::Args::Type::ListAll, Resource::String::ListAllArgumentDescription, ArgumentType::Flag}, }; } diff --git a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp index 17b07d9b8e..52d43201c7 100644 --- a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp +++ b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp @@ -710,7 +710,7 @@ namespace AppInstaller::CLI::Workflow int unknownPackagesCount = 0; auto &source = context.Get(); bool shouldShowSource = source.IsComposite() && source.GetAvailableSources().size() > 1; - std::set> packageIdsPrinted = std::set>(); + std::set> packageIdsPrinted; for (const auto& match : searchResult.Matches) { @@ -762,7 +762,7 @@ namespace AppInstaller::CLI::Workflow } else { - // we need to only list once per package + // we need to only list once per package if (!packageIdsPrinted.count({ packageId, sourceName })) { packageIdsPrinted.insert({ packageId, sourceName }); From 589b6d8ace1ddc3b4b34ecfc0d06d6f3ecf5c048 Mon Sep 17 00:00:00 2001 From: Easton Pillay Date: Wed, 4 May 2022 16:17:25 -0400 Subject: [PATCH 5/7] Source identifier, not source name! --- src/AppInstallerCLICore/Workflows/WorkflowBase.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp index 52d43201c7..27a7eb5731 100644 --- a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp +++ b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp @@ -731,18 +731,19 @@ namespace AppInstaller::CLI::Workflow // The only time we don't want to output a line is when filtering and no update is available. if (updateAvailable || !m_onlyShowUpgrades) { - Utility::LocIndString availableVersion, sourceName; + Utility::LocIndString availableVersion, sourceName, sourceIdentifier; Utility::LocIndString packageId = match.Package->GetProperty(PackageProperty::Id); if (latestVersion) { // Always show the source for correlated packages sourceName = latestVersion->GetProperty(PackageVersionProperty::SourceName); + sourceIdentifier = latestVersion->GetProperty(PackageVersionProperty::SourceIdentifier); if (updateAvailable) { availableVersion = latestVersion->GetProperty(PackageVersionProperty::Version); - if (context.Args.Contains(Execution::Args::Type::ListAll) || !packageIdsPrinted.count({ packageId, sourceName })) + if (context.Args.Contains(Execution::Args::Type::ListAll) || !packageIdsPrinted.count({ packageId, sourceIdentifier })) { // we should only add to the upgrade count if we actually showed the table entry. availableUpgradesCount++; @@ -763,9 +764,9 @@ namespace AppInstaller::CLI::Workflow else { // we need to only list once per package - if (!packageIdsPrinted.count({ packageId, sourceName })) + if (!packageIdsPrinted.count({ packageId, sourceIdentifier })) { - packageIdsPrinted.insert({ packageId, sourceName }); + packageIdsPrinted.insert({ packageId, sourceIdentifier }); table.OutputLine({ match.Package->GetProperty(PackageProperty::Name), match.Package->GetProperty(PackageProperty::Id), From 51b20ece3675ffb4fb76e4ccfd41000e31aec622 Mon Sep 17 00:00:00 2001 From: Easton Pillay Date: Fri, 13 May 2022 01:05:27 -0400 Subject: [PATCH 6/7] Removed argument. Now we always output the ARP table name. --- .../Commands/ListCommand.cpp | 1 - src/AppInstallerCLICore/ExecutionArgs.h | 1 - src/AppInstallerCLICore/Resources.h | 1 - .../Workflows/WorkflowBase.cpp | 46 ++++++------------- .../Shared/Strings/en-us/winget.resw | 3 -- 5 files changed, 13 insertions(+), 39 deletions(-) diff --git a/src/AppInstallerCLICore/Commands/ListCommand.cpp b/src/AppInstallerCLICore/Commands/ListCommand.cpp index 8841de1785..d8e9397f26 100644 --- a/src/AppInstallerCLICore/Commands/ListCommand.cpp +++ b/src/AppInstallerCLICore/Commands/ListCommand.cpp @@ -24,7 +24,6 @@ namespace AppInstaller::CLI Argument::ForType(Execution::Args::Type::Exact), Argument::ForType(Execution::Args::Type::CustomHeader), Argument::ForType(Execution::Args::Type::AcceptSourceAgreements), - Argument{ "all", Argument::NoAlias, Execution::Args::Type::ListAll, Resource::String::ListAllArgumentDescription, ArgumentType::Flag}, }; } diff --git a/src/AppInstallerCLICore/ExecutionArgs.h b/src/AppInstallerCLICore/ExecutionArgs.h index 25f47c171a..f75b351918 100644 --- a/src/AppInstallerCLICore/ExecutionArgs.h +++ b/src/AppInstallerCLICore/ExecutionArgs.h @@ -81,7 +81,6 @@ namespace AppInstaller::CLI::Execution // Other All, // Used in Update command to update all installed packages to latest - ListAll, // Used in List command to list all installed apps associated with a package ListVersions, // Used in Show command to list all available versions of an app NoVT, // Disable VirtualTerminal outputs RetroStyle, // Makes progress display as retro diff --git a/src/AppInstallerCLICore/Resources.h b/src/AppInstallerCLICore/Resources.h index 418e3733f6..7a2a0cfd48 100644 --- a/src/AppInstallerCLICore/Resources.h +++ b/src/AppInstallerCLICore/Resources.h @@ -156,7 +156,6 @@ namespace AppInstaller::CLI::Resource WINGET_DEFINE_RESOURCE_STRINGID(InvalidNameError); WINGET_DEFINE_RESOURCE_STRINGID(LicenseAgreement); WINGET_DEFINE_RESOURCE_STRINGID(Links); - WINGET_DEFINE_RESOURCE_STRINGID(ListAllArgumentDescription); WINGET_DEFINE_RESOURCE_STRINGID(ListCommandLongDescription); WINGET_DEFINE_RESOURCE_STRINGID(ListCommandShortDescription); WINGET_DEFINE_RESOURCE_STRINGID(LocaleArgumentDescription); diff --git a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp index 27a7eb5731..62a9b9183c 100644 --- a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp +++ b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp @@ -710,7 +710,6 @@ namespace AppInstaller::CLI::Workflow int unknownPackagesCount = 0; auto &source = context.Get(); bool shouldShowSource = source.IsComposite() && source.GetAvailableSources().size() > 1; - std::set> packageIdsPrinted; for (const auto& match : searchResult.Matches) { @@ -731,51 +730,32 @@ namespace AppInstaller::CLI::Workflow // The only time we don't want to output a line is when filtering and no update is available. if (updateAvailable || !m_onlyShowUpgrades) { - Utility::LocIndString availableVersion, sourceName, sourceIdentifier; + Utility::LocIndString availableVersion, sourceName; Utility::LocIndString packageId = match.Package->GetProperty(PackageProperty::Id); if (latestVersion) { // Always show the source for correlated packages sourceName = latestVersion->GetProperty(PackageVersionProperty::SourceName); - sourceIdentifier = latestVersion->GetProperty(PackageVersionProperty::SourceIdentifier); if (updateAvailable) { availableVersion = latestVersion->GetProperty(PackageVersionProperty::Version); - if (context.Args.Contains(Execution::Args::Type::ListAll) || !packageIdsPrinted.count({ packageId, sourceIdentifier })) - { - // we should only add to the upgrade count if we actually showed the table entry. - availableUpgradesCount++; - } + availableUpgradesCount++; } } - if (context.Args.Contains(Execution::Args::Type::ListAll)) - { - table.OutputLine({ - installedVersion->GetProperty(PackageVersionProperty::Name), - match.Package->GetProperty(PackageProperty::Id), - installedVersion->GetProperty(PackageVersionProperty::Version), - availableVersion, - shouldShowSource ? sourceName : ""s - }); - } - else - { - // we need to only list once per package - if (!packageIdsPrinted.count({ packageId, sourceIdentifier })) - { - packageIdsPrinted.insert({ packageId, sourceIdentifier }); - table.OutputLine({ - match.Package->GetProperty(PackageProperty::Name), - match.Package->GetProperty(PackageProperty::Id), - installedVersion->GetProperty(PackageVersionProperty::Version), - availableVersion, - shouldShowSource ? sourceName : ""s - }); - } - } + // Output using the local PackageName instead of the name in the manifest, to prevent confusion for packages that add multiple + // Add/Remove Programs entries. + // TODO: De-duplicate this list, and only show (by default) one entry per matched package. + table.OutputLine({ + installedVersion->GetProperty(PackageVersionProperty::Name), + match.Package->GetProperty(PackageProperty::Id), + installedVersion->GetProperty(PackageVersionProperty::Version), + availableVersion, + shouldShowSource ? sourceName : ""s + }); + } } diff --git a/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw b/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw index 4426c4821d..9921131785 100644 --- a/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw +++ b/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw @@ -1308,7 +1308,4 @@ Please specify one of them using the `--source` option to proceed. No package selection argument was provided; see the help for details about finding a package. - - List all software installed by a package - \ No newline at end of file From 8543c1d95ab5a681f0d5f135f2cd9ddae14f86d1 Mon Sep 17 00:00:00 2001 From: Easton Pillay Date: Sun, 15 May 2022 16:17:12 -0400 Subject: [PATCH 7/7] Removed unused variable (oops!) --- src/AppInstallerCLICore/Workflows/WorkflowBase.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp index 62a9b9183c..18ce84e66f 100644 --- a/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp +++ b/src/AppInstallerCLICore/Workflows/WorkflowBase.cpp @@ -731,7 +731,6 @@ namespace AppInstaller::CLI::Workflow if (updateAvailable || !m_onlyShowUpgrades) { Utility::LocIndString availableVersion, sourceName; - Utility::LocIndString packageId = match.Package->GetProperty(PackageProperty::Id); if (latestVersion) {