diff --git a/src/AppInstallerCLICore/Commands/RootCommand.cpp b/src/AppInstallerCLICore/Commands/RootCommand.cpp
index 5580efa14a..c2264129e9 100644
--- a/src/AppInstallerCLICore/Commands/RootCommand.cpp
+++ b/src/AppInstallerCLICore/Commands/RootCommand.cpp
@@ -154,6 +154,7 @@ namespace AppInstaller::CLI
keyDirectories.OutputLine({ Resource::LocString{ Resource::String::PortableRoot }, Runtime::GetPathTo(Runtime::PathName::PortablePackageMachineRoot, true).u8string() });
keyDirectories.OutputLine({ Resource::LocString{ Resource::String::PortableRoot86 }, Runtime::GetPathTo(Runtime::PathName::PortablePackageMachineRootX86, true).u8string() });
keyDirectories.OutputLine({ Resource::LocString{ Resource::String::InstallerDownloads }, Runtime::GetPathTo(Runtime::PathName::UserProfileDownloads, true).u8string() });
+ keyDirectories.OutputLine({ Resource::LocString{ Resource::String::ConfigurationModules }, Runtime::GetPathTo(Runtime::PathName::ConfigurationModules, true).u8string() });
keyDirectories.Complete();
context.Reporter.Info() << std::endl;
}
diff --git a/src/AppInstallerCLICore/Resources.h b/src/AppInstallerCLICore/Resources.h
index 0765d9f0d8..cd56f587c2 100644
--- a/src/AppInstallerCLICore/Resources.h
+++ b/src/AppInstallerCLICore/Resources.h
@@ -94,6 +94,7 @@ namespace AppInstaller::CLI::Resource
WINGET_DEFINE_RESOURCE_STRINGID(ConfigurationModuleNameOnly);
WINGET_DEFINE_RESOURCE_STRINGID(ConfigurationModulePath);
WINGET_DEFINE_RESOURCE_STRINGID(ConfigurationModulePathArgError);
+ WINGET_DEFINE_RESOURCE_STRINGID(ConfigurationModules);
WINGET_DEFINE_RESOURCE_STRINGID(ConfigurationModuleWithDetails);
WINGET_DEFINE_RESOURCE_STRINGID(ConfigurationNotEnabledMessage);
WINGET_DEFINE_RESOURCE_STRINGID(ConfigurationNoTestRun);
diff --git a/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw b/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw
index 7897bb985a..c39f9a9aa7 100644
--- a/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw
+++ b/src/AppInstallerCLIPackage/Shared/Strings/en-us/winget.resw
@@ -1812,7 +1812,7 @@ Please specify one of them using the --source option to proceed.
Configuration successfully applied.
-
+
Unit successfully applied.
@@ -3147,7 +3147,7 @@ Please specify one of them using the --source option to proceed.
Downloaded zero byte installer; ensure that your network connection is working properly.
-
+
Manage fonts
@@ -3183,4 +3183,8 @@ Please specify one of them using the --source option to proceed.
Version
-
+
+ Configuration Modules
+ PowerShell Modules that are used for the Configuration feature
+
+
\ No newline at end of file
diff --git a/src/AppInstallerCommonCore/Public/AppInstallerRuntime.h b/src/AppInstallerCommonCore/Public/AppInstallerRuntime.h
index cecadb24d8..9f9a63cac0 100644
--- a/src/AppInstallerCommonCore/Public/AppInstallerRuntime.h
+++ b/src/AppInstallerCommonCore/Public/AppInstallerRuntime.h
@@ -50,6 +50,8 @@ namespace AppInstaller::Runtime
SelfPackageRoot,
// The location where user downloads are stored.
UserProfileDownloads,
+ // The location where configuration modules are stored.
+ ConfigurationModules,
// The location where checkpoints are stored.
CheckpointsLocation,
// The location of the CLI executable file.
diff --git a/src/AppInstallerCommonCore/Runtime.cpp b/src/AppInstallerCommonCore/Runtime.cpp
index 3a8973d8e9..575ad4e5e7 100644
--- a/src/AppInstallerCommonCore/Runtime.cpp
+++ b/src/AppInstallerCommonCore/Runtime.cpp
@@ -30,6 +30,7 @@ namespace AppInstaller::Runtime
constexpr std::string_view s_PortablePackagesDirectory = "Packages"sv;
constexpr std::string_view s_LinksDirectory = "Links"sv;
constexpr std::string_view s_FontsInstallDirectory = "Microsoft\\Windows\\Fonts"sv;
+ constexpr std::string_view s_ConfigurationModulesDirectory = "Configuration\\Modules"sv;
// Use production CLSIDs as a surrogate for repository location.
#if USE_PROD_CLSIDS
constexpr std::string_view s_ImageAssetsDirectoryRelative = "Assets\\WinGet"sv;
@@ -240,6 +241,16 @@ namespace AppInstaller::Runtime
case PathName::FontsMachineInstallLocation:
result.Path = GetKnownFolderPath(FOLDERID_Fonts);
break;
+ case PathName::ConfigurationModules:
+ result.Path = Settings::User().Get();
+ if (result.Path.empty())
+ {
+ result.Path = GetKnownFolderPath(FOLDERID_LocalAppData);
+ result.Path /= s_SecureSettings_Base;
+ result.Path /= s_ConfigurationModulesDirectory;
+ }
+ mayBeInProfilePath = true;
+ break;
default:
THROW_HR(E_UNEXPECTED);
}
@@ -316,6 +327,7 @@ namespace AppInstaller::Runtime
case PathName::UserProfileDownloads:
case PathName::FontsUserInstallLocation:
case PathName::FontsMachineInstallLocation:
+ case PathName::ConfigurationModules:
result = GetPathDetailsCommon(path, forDisplay);
break;
case PathName::SelfPackageRoot:
@@ -422,6 +434,7 @@ namespace AppInstaller::Runtime
case PathName::UserProfileDownloads:
case PathName::FontsUserInstallLocation:
case PathName::FontsMachineInstallLocation:
+ case PathName::ConfigurationModules:
result = GetPathDetailsCommon(path, forDisplay);
break;
case PathName::SelfPackageRoot: