@@ -584,32 +584,36 @@ namespace AppInstaller::CLI::Workflow
584584
585585 void InstallDependencies (Execution::Context& context)
586586 {
587+ using Flags = ProcessMultiplePackages::Flags;
588+
587589 if (Settings::User ().Get <Settings::Setting::InstallSkipDependencies>() || context.Args .Contains (Execution::Args::Type::SkipDependencies))
588590 {
589591 context.Reporter .Warn () << Resource::String::DependenciesSkippedMessage << std::endl;
590592 return ;
591593 }
592594
593595 context <<
594- Workflow:: GetDependenciesFromInstaller <<
595- Workflow:: ReportDependencies (Resource::String::PackageRequiresDependencies) <<
596- Workflow:: EnableWindowsFeaturesDependencies <<
597- Workflow:: ProcessMultiplePackages (Resource::String::PackageRequiresDependencies, APPINSTALLER_CLI_ERROR_INSTALL_DEPENDENCIES, {}, true , true , true , true );
596+ GetDependenciesFromInstaller <<
597+ ReportDependencies (Resource::String::PackageRequiresDependencies) <<
598+ EnableWindowsFeaturesDependencies <<
599+ ProcessMultiplePackages (Resource::String::PackageRequiresDependencies, APPINSTALLER_CLI_ERROR_INSTALL_DEPENDENCIES, Flags::IgnoreDependencies | Flags::StopOnFailure | Flags::RefreshPathVariable );
598600 }
599601
600602 void DownloadPackageDependencies (Execution::Context& context)
601603 {
604+ using Flags = ProcessMultiplePackages::Flags;
605+
602606 if (Settings::User ().Get <Settings::Setting::InstallSkipDependencies>() || context.Args .Contains (Execution::Args::Type::SkipDependencies))
603607 {
604608 context.Reporter .Warn () << Resource::String::DependenciesSkippedMessage << std::endl;
605609 return ;
606610 }
607611
608612 context <<
609- Workflow:: GetDependenciesFromInstaller <<
610- Workflow:: ReportDependencies (Resource::String::PackageRequiresDependencies) <<
611- Workflow:: CreateDependencySubContexts (Resource::String::PackageRequiresDependencies) <<
612- Workflow:: ProcessMultiplePackages (Resource::String::PackageRequiresDependencies, APPINSTALLER_CLI_ERROR_DOWNLOAD_DEPENDENCIES, {}, true , true , true , false , true );
613+ GetDependenciesFromInstaller <<
614+ ReportDependencies (Resource::String::PackageRequiresDependencies) <<
615+ CreateDependencySubContexts (Resource::String::PackageRequiresDependencies) <<
616+ ProcessMultiplePackages (Resource::String::PackageRequiresDependencies, APPINSTALLER_CLI_ERROR_DOWNLOAD_DEPENDENCIES, Flags::IgnoreDependencies | Flags::StopOnFailure | Flags::DownloadOnly );
613617 }
614618
615619 void InstallSinglePackage (Execution::Context& context)
@@ -675,6 +679,25 @@ namespace AppInstaller::CLI::Workflow
675679 Workflow::EnsureValidNestedInstallerMetadataForArchiveInstall;
676680 }
677681
682+ ProcessMultiplePackages::ProcessMultiplePackages (
683+ StringResource::StringId dependenciesReportMessage,
684+ HRESULT resultOnFailure,
685+ Flags flags,
686+ std::vector<HRESULT>&& ignorableInstallResults) :
687+ WorkflowTask (" ProcessMultiplePackages" ),
688+ m_dependenciesReportMessage (dependenciesReportMessage),
689+ m_resultOnFailure (resultOnFailure),
690+ m_ignorableInstallResults (std::move(ignorableInstallResults))
691+ {
692+ // Inverted
693+ m_ensurePackageAgreements = !WI_IsFlagSet (flags, Flags::SkipPackageAgreements);
694+
695+ m_ignorePackageDependencies = WI_IsFlagSet (flags, Flags::IgnoreDependencies);
696+ m_stopOnFailure = WI_IsFlagSet (flags, Flags::StopOnFailure);
697+ m_refreshPathVariable = WI_IsFlagSet (flags, Flags::RefreshPathVariable);
698+ m_downloadOnly = WI_IsFlagSet (flags, Flags::DownloadOnly);
699+ }
700+
678701 void ProcessMultiplePackages::operator ()(Execution::Context& context) const
679702 {
680703 if (!context.Contains (Execution::Data::PackageSubContexts))
@@ -692,11 +715,11 @@ namespace AppInstaller::CLI::Workflow
692715 return ;
693716 }
694717
718+ auto & packageSubContexts = context.Get <Execution::Data::PackageSubContexts>();
719+
695720 // Report dependencies
696721 if (!m_ignorePackageDependencies)
697722 {
698- auto & packageSubContexts = context.Get <Execution::Data::PackageSubContexts>();
699-
700723 DependencyList allDependencies;
701724
702725 for (auto & packageContext : packageSubContexts)
@@ -721,10 +744,10 @@ namespace AppInstaller::CLI::Workflow
721744 }
722745
723746 bool allSucceeded = true ;
724- size_t packagesCount = context. Get <Execution::Data::PackageSubContexts>() .size ();
747+ size_t packagesCount = packageSubContexts .size ();
725748 size_t packagesProgress = 0 ;
726749
727- for (auto & packageContext : context. Get <Execution::Data::PackageSubContexts>() )
750+ for (auto & packageContext : packageSubContexts )
728751 {
729752 packagesProgress++;
730753 context.Reporter .Info () << ' (' << packagesProgress << ' /' << packagesCount << " ) " _liv;
@@ -744,7 +767,7 @@ namespace AppInstaller::CLI::Workflow
744767 currentContext <<
745768 Workflow::EnableWindowsFeaturesDependencies <<
746769 Workflow::CreateDependencySubContexts (m_dependenciesReportMessage) <<
747- Workflow::ProcessMultiplePackages (m_dependenciesReportMessage, APPINSTALLER_CLI_ERROR_INSTALL_DEPENDENCIES, {}, true , true , true , true );
770+ Workflow::ProcessMultiplePackages (m_dependenciesReportMessage, APPINSTALLER_CLI_ERROR_INSTALL_DEPENDENCIES, Flags::IgnoreDependencies | Flags::StopOnFailure | Flags::RefreshPathVariable );
748771 }
749772
750773 currentContext << Workflow::DownloadInstaller;
0 commit comments