IniSectionDenylist

IniSectionDenylist

#Overview

name: IniSectionDenylist

The value of this variable can be defined or overridden in .ini config files. 6 .ini config files referencing this setting variable.

It is referenced in 3 C++ source files. Also referenced in 1 C# build file meaning it may affect the build system logic.

#Summary

#Usage in the C++ source code

The purpose of IniSectionDenylist is to specify a list of INI file sections that should be excluded when packaging a project in Unreal Engine 5. This variable is used to control which configuration sections are stripped out during the packaging process, allowing developers to omit certain settings from the final packaged build.

This setting variable is primarily used by the project packaging system, which is part of the Unreal Engine’s build and deployment pipeline. Based on the callsites, it’s evident that the variable is utilized in the following subsystems and modules:

  1. DeveloperToolSettings module
  2. PakFileUtilities module
  3. UnrealEd module

The value of this variable is set in the project’s configuration files, specifically in the section “/Script/UnrealEd.ProjectPackagingSettings” of the game’s INI file (GGameIni). It can be modified through the Project Settings in the Unreal Editor, under the Packaging category.

IniSectionDenylist interacts with another variable called IniKeyDenylist, which is used to specify individual keys to be excluded from the INI files during packaging. Together, these variables provide fine-grained control over which configuration settings are included in the packaged build.

Developers should be aware of the following when using this variable:

  1. Removing essential sections may cause issues in the packaged build, so careful consideration is needed when populating this list.
  2. This variable affects the final size and content of the packaged project, which can impact performance and functionality.
  3. Changes to this list may require re-packaging the project to take effect.

Best practices when using IniSectionDenylist include:

  1. Only exclude sections that are definitely not needed in the packaged build to avoid potential issues.
  2. Document any sections added to the denylist to maintain clarity for the development team.
  3. Regularly review and update the list as project requirements change.
  4. Test the packaged build thoroughly after making changes to ensure no critical functionality is affected.
  5. Use in conjunction with IniKeyDenylist for more precise control over configuration stripping.
  6. Consider version control for the packaging settings to track changes over time.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseGame.ini:155, section: [/Script/UnrealEd.ProjectPackagingSettings]

Location: <Workspace>/Engine/Config/BaseGame.ini:156, section: [/Script/UnrealEd.ProjectPackagingSettings]

Location: <Workspace>/Projects/Lyra/Config/DefaultGame.ini:180, section: [/Script/UnrealEd.ProjectPackagingSettings]

Location: <Workspace>/Projects/Lyra/Config/DefaultGame.ini:181, section: [/Script/UnrealEd.ProjectPackagingSettings]

Location: <Workspace>/Projects/Lyra/Config/DefaultGame.ini:183, section: [/Script/UnrealEd.ProjectPackagingSettings]

Location: <Workspace>/Projects/Lyra/Config/DefaultGame.ini:184, section: [/Script/UnrealEd.ProjectPackagingSettings]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Developer/DeveloperToolSettings/Classes/Settings/ProjectPackagingSettings.h:555

Scope (from outer to inner):

file
class        class UProjectPackagingSettings : public UObject

Source code excerpt:

	/** List of ini file sections to strip when packaging */
	UPROPERTY(config, EditAnywhere, Category = Packaging)
	TArray<FString> IniSectionDenylist;

	/**
	 * List of specific files to include with GenerateEarlyDownloaderPakFile
	 */
	UPROPERTY(config)
	TArray<FString> EarlyDownloaderPakFileFiles_DEPRECATED;

#Loc: <Workspace>/Engine/Source/Developer/PakFileUtilities/Private/PakFileUtilities.cpp:5379

Scope (from outer to inner):

file
function     bool MakeBinaryConfig

Source code excerpt:

	TArray<FString> SectionsDenyList;
	GConfig->GetArray(TEXT("/Script/UnrealEd.ProjectPackagingSettings"), TEXT("IniKeyDenylist"), KeyDenyListStrings, GGameIni);
	GConfig->GetArray(TEXT("/Script/UnrealEd.ProjectPackagingSettings"), TEXT("IniSectionDenylist"), SectionsDenyList, GGameIni);
	TArray<FName> KeysDenyList;
	for (const FString& Key : KeyDenyListStrings)
	{
		KeysDenyList.Add(FName(*Key));
	}

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Commandlets/MakeBinaryConfigCommandlet.cpp:62

Scope (from outer to inner):

file
function     int32 UMakeBinaryConfigCommandlet::Main

Source code excerpt:

	TArray<FString> SectionsDenyList;
	GConfig->GetArray(TEXT("/Script/UnrealEd.ProjectPackagingSettings"), TEXT("IniKeyDenylist"), KeyDenyListStrings, GGameIni);
	GConfig->GetArray(TEXT("/Script/UnrealEd.ProjectPackagingSettings"), TEXT("IniSectionDenylist"), SectionsDenyList, GGameIni);
	TArray<FName> KeysDenyList;
	for (FString Key : KeyDenyListStrings)
	{
		KeysDenyList.Add(FName(*Key));
	}

#References in C# build files

This variable is referenced in the following C# build files:

Location: <Workspace>/Engine/Source/Programs/AutomationTool/AutomationUtils/DeploymentContext.cs:617

		// Read the config deny lists
		GameConfig.GetArray(PackagingIniPath, "IniKeyDenylist", out IniKeyDenyList);
		GameConfig.GetArray(PackagingIniPath, "IniSectionDenylist", out IniSectionDenyList);

		// TODO: Drive these lists from a config file
		IniSuffixAllowList = new List<string>
		{
			".ini",
			"compat.ini",