UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BuildPatchSettings.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "BuildPatchDelta.h"
6#include "BuildPatchInstall.h"
7#include "BuildPatchVerify.h"
8#include "Containers/Array.h"
9#include "Containers/Map.h"
10#include "Containers/Set.h"
13#include "CoreMinimal.h"
14#include "HAL/Platform.h"
17#include "Misc/Variant.h"
19
20class FVariant;
21
22namespace BuildPatchServices
23{
24 enum class EInstallActionIntent : int32;
25
30 {
31 public:
36
37 public:
38 // The application settings directory.
40 // The application project name.
41 FString ProjectName;
42 // The local machine config file name.
44 };
45
47 {
48 public:
49
58 static BUILDPATCHSERVICES_API FInstallerAction MakeInstall(const IBuildManifestRef& Manifest, TSet<FString> InstallTags = TSet<FString>(), FString InstallSubdirectory = FString(), FString CloudSubdirectory = FString());
59
69 static BUILDPATCHSERVICES_API FInstallerAction MakeUpdate(const IBuildManifestRef& CurrentManifest, const IBuildManifestRef& InstallManifest, TSet<FString> InstallTags = TSet<FString>(), FString InstallSubdirectory = FString(), FString CloudSubdirectory = FString());
70
79 static BUILDPATCHSERVICES_API FInstallerAction MakeRepair(const IBuildManifestRef& Manifest, TSet<FString> InstallTags = TSet<FString>(), FString InstallSubdirectory = FString(), FString CloudSubdirectory = FString());
80
81
89 static BUILDPATCHSERVICES_API FInstallerAction MakeUninstall(const IBuildManifestRef& Manifest, FString InstallSubdirectory = FString(), FString CloudSubdirectory = FString());
90
100 static FInstallerAction MakeInstallOrUpdate(const IBuildManifestPtr& CurrentManifest, const IBuildManifestRef& InstallManifest, TSet<FString> InstallTags = TSet<FString>(), FString InstallSubdirectory = FString(), FString CloudSubdirectory = FString())
101 {
102 if (!CurrentManifest.IsValid())
103 {
104 return MakeInstall(InstallManifest, MoveTemp(InstallTags), MoveTemp(InstallSubdirectory), MoveTemp(CloudSubdirectory));
105 }
106 else
107 {
108 return MakeUpdate(CurrentManifest.ToSharedRef(), InstallManifest, MoveTemp(InstallTags), MoveTemp(InstallSubdirectory), MoveTemp(CloudSubdirectory));
109 }
110 }
111
116
121
122 public:
127
131 BUILDPATCHSERVICES_API bool IsUpdate() const;
132
136 BUILDPATCHSERVICES_API bool IsRepair() const;
137
142
147
151 BUILDPATCHSERVICES_API const FString& GetInstallSubdirectory() const;
152
156 BUILDPATCHSERVICES_API const FString& GetCloudSubdirectory() const;
157
162
167
168 public:
174 {
175 if (IsUpdate() || IsRepair() || IsUninstall())
176 {
177 return GetCurrentManifest();
178 }
179 return nullptr;
180 }
181
187 {
188 if (IsInstall() || IsUpdate() || IsRepair())
189 {
190 return GetInstallManifest();
191 }
192 return nullptr;
193 }
194
200 {
201 return (CurrentManifest.IsValid() ? CurrentManifest : InstallManifest).ToSharedRef();
202 }
203
209 {
210 return (InstallManifest.IsValid() ? InstallManifest : CurrentManifest).ToSharedRef();
211 }
212
213 private:
215 IBuildManifestPtr CurrentManifest;
216 IBuildManifestPtr InstallManifest;
217 TSet<FString> InstallTags;
218 FString InstallSubdirectory;
219 FString CloudSubdirectory;
220 EInstallActionIntent ActionIntent;
221 };
222
248
253 {
258
259 public:
260 // The array of intended actions to perform.
262 // The context for allocating shared resources.
264 // The directory to install to.
266 // The directory for storing the intermediate files. This would usually be inside the InstallDirectory. Empty string will use module's global setting.
268 // The directory for placing files that are believed to have local changes, before we overwrite them. Empty string will use module's global setting. If both empty, the feature disables.
270 // The list of chunk database filenames that will be used to pull patch data from. These must be local (i.e. no URLs)
272 // If set, when we've read everything we're going to read from a chunkdb file, we delete it to minimize required disk space for install/patch.
274
275 // If set, don't actually do an installation, just figure out how much disk space is required if we are using entirely
276 // chunkdbs and we delete them as we go.
278
279 // The list of cloud directory roots that will be used to pull patch data from. Empty array will use module's global setting. This is only hit if a chunk can not be satisfied by
280 // other sources (i.e. chunkdbs or install directory for patches). If the chunk can not be serviced from here, it's a failure.
282
283 // The mode for installation.
284 EInstallMode InstallMode;
285 // The mode for verification. This will be overridden for any files referenced by a repair action.
286 EVerifyMode VerifyMode;
287 // The policy to follow for requesting an optimised delta.
288 EDeltaPolicy DeltaPolicy;
289 // Whether to run the prerequisite installer provided if it hasn't been ran before on this machine.
291 // Whether to allow this installation to run concurrently with any existing installations.
293 // Whether to gather individual file operation statistics during install
295
296 // Whether the file constructor is allowed to spawn multiple threads for IO read/write servicing.
297 // Unset uses Engine.ini value [Portal.BuildPatch]ConstructorSpawnAdditionalIOThreads if present, FFileConstructorConfig::bDefaultSpawnAdditionalIOThreads otherwise.
299 // File constructor batch size, in MB. File will attempt to fill/write this chunk size to disk.
300 // Unset uses Engine.ini value [Portal.BuildPatch]ConstructorIOBatchSizeMB if present, FFileConstructorConfig::DefaultIOBatchSizeMB otherwise.
302
303 // File constructor buffer size, in MB. This affects constructor performance heavily and must be at least big enough to fit a batch.
304 // For purely disk->disk installs, this can be relatively small - even 2x batch size will facilitate multiple GB/s installations. However
305 // for cloud/download installs this needs to be fairly large to mitigate the effect of out of order download completion.
306 // When bConstructFilesInMemory or bInstallToMemory is set, this is used to determine how many active files can be in flight.
307 // Unset uses Engine.ini value [Portal.BuildPatch]ConstructorIOBufferSizeMB if present, FFileConstructorConfig::DefaultIOBufferSizeMB otherwise.
309
310 // Whether the file construction should adhere to file system write limits. If a write limit is hit, writing will stall until
311 // sufficient quota exists for the write. Inheritance for this property is:
312 // CVar BuildPatchFileConstructor.bStallWhenFileSystemThrottled, which defaults to true.
313 // if set, this member.
315
316 // Whether to disable resume on clean installs below a given threshold, in megabytes. 0 means "never disable".
317 // Inheritance:
318 // CVar BuildPatchFileConstructor.DisableResumeBelowMB, which defaults to 0.
319 // if set, this member
321
322 // If set, files will be built entirely in memory - requiring at least the largest file's size worth of memory.
323 // IO batch and buffer sizes are ignored as operations operate directly on the output memory buffer. If allowing
324 // multiple files in flight, this causes the size of the entire installation to be allocated as there's no IO buffer
325 // size limiting the number of in flight requests.
326 // Once the file completes construction it is written to disk in the normal place defined by InstallMode. This occurs
327 // after the old file is deleted for Destructive installations in order to manage peak disk space usage.
328 //
329 // This mode does not support resuming mid-file.
331
332 // As bConstructFilesInMemory, except the file is never written to disk and is instead made available after via
333 // GetFilesInstalledToMemory
334 bool bInstallToMemory = false;
335
336 // If set, no initial size check will be performed prior to starting the installation. Running out of disk space during installation is unchanged.
338 };
339
344 {
345 public:
350
351 public:
352 // The client feature level to output data for.
353 EFeatureLevel FeatureLevel;
354 // The directory to analyze.
356 // The ID of the app of this build.
358 // The name of the app of this build.
359 FString AppName;
360 // The version string for this build.
362 // The local exe path that would launch this build.
363 FString LaunchExe;
364 // The command line that would launch this build.
366 // The path to a file containing a \r\n separated list of RootDirectory relative files to read.
368 // The path to a file containing a \r\n separated list of RootDirectory relative files to ignore.
370 // The path to a file containing a \r\n separated list of RootDirectory relative files followed by attribute keywords.
372 // The set of identifiers which the prerequisites satisfy.
374 // The display name of the prerequisites installer.
375 FString PrereqName;
376 // The path to the prerequisites installer.
377 FString PrereqPath;
378 // The command line arguments for the prerequisites installer.
379 FString PrereqArgs;
380 // The maximum age (in days) of existing data files which can be reused in this build.
382 // Indicates whether data age threshold should be honored. If false, ALL data files can be reused.
384 // The chunk window size to be used when saving out new data.
386 // Indicates whether any window size chunks should be matched, rather than just out output window size.
388 // Map of custom fields to add to the manifest.
390 // The cloud directory that all patch data will be saved to. An empty value will use module's global setting.
392 // The output manifest filename.
394 // Allow Manifest Creation for builds with no data
396 };
397
398 // Temporary for use with deprecated module function.
399 typedef FChunkBuildConfiguration FGenerationConfiguration;
400
405 {
406 public:
411
412 public:
413 // A full file or http path for the manifest to be used as the source build.
415 // A full file or http path for the manifest to be used as the destination build.
417 // The cloud directory that all patch data will be saved to. An empty value will use ManifestB's directory.
419 // The window size to use for find new matches.
421 // The chunk size to use for saving new diff data.
423 // A threshold for the original delta size, for which we would abort and not process.
425 };
426
431 {
432 public:
437
438 public:
439 // A full file path for the manifest or chunkdb to enumerate referenced data for.
440 FString InputFile;
441 // A full file path to a file where the list will be saved out to.
442 FString OutputFile;
443 // Whether to include files sizes.
445 };
446
451 {
452 public:
457
458 public:
459 // A full file or http path for the manifest to be used as the source build.
461 // A full file or http path for the manifest to be used as the destination build.
463 // The tag set to use to filter desired files from ManifestA.
465 // The tag set to use to filter desired files from ManifestB.
467 // Tag sets that will be used to calculate additional differential size statistics between manifests.
468 // They must all be a subset of anything used in TagSetB.
470 // A full file path where a JSON object will be saved for the diff details.Empty string if not desired.
472
473 // A destination base directory to use for writing out patch description files for the patch between the two
474 // manifest.
476
477 // If true, the tool will throw an error if the optimized delta file is missing.
479
480 // If true, only emit patch descriptors and not the entirety of the diff manifests output.
482
483 // If true, emit simulated installation time estimations
485 };
486
491 {
492 public:
497
498 public:
499 // The path to the directory to compactify.
501 // Chunks which are not referenced by a valid manifest, and which are older than this age(in days), will be deleted.
503 // The full path to a file to which a list of all chunk files deleted by compactify will be written.The output filenames will be relative to the cloud directory.
505 // If ran in preview mode, then the process will run in logging mode only - no files will be deleted.
507 };
508
513 {
514 public:
519
520 public:
521 // The client feature level to output data for.
522 EFeatureLevel FeatureLevel;
523 // A full file path to the manifest to enumerate chunks from.
525 // A full file path to a manifest describing a previous build, which will filter out saved chunks for patch only chunkdbs.
527 // Optional list of tagsets to split chunkdb files on. Empty array will include all data as normal.
529 // Optional tagset to filter the files used from PrevManifestFilePath, potentially increasing the number of chunks saved.
531 // A full file path to the chunkdb file to save. Extension of .chunkdb will be added if not present.
532 FString OutputFile;
533 // Cloud directory where chunks to be packaged can be found.
534 FString CloudDir;
535 // The maximum desired size for each chunkdb file.
537 // A full file path to use when saving the json output data.
539 };
540}
541
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32_t uint32
Definition binka_ue_file_header.h:6
EInstallActionIntent
Definition BuildPatchSettings.cpp:18
FChunkBuildConfiguration FGenerationConfiguration
Definition BuildPatchSettings.h:399
Definition Variant.h:114
Definition Array.h:670
Definition UnrealString.h.inl:34
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
Definition BuildPatchFileConstructor.h:28
Definition BuildPatchSettings.h:253
TOptional< int32 > ConstructorDisableResumeBelowMB
Definition BuildPatchSettings.h:320
bool bRunRequiredPrereqs
Definition BuildPatchSettings.h:290
bool bInstallToMemory
Definition BuildPatchSettings.h:334
FString StagingDirectory
Definition BuildPatchSettings.h:267
TArray< FString > CloudDirectories
Definition BuildPatchSettings.h:281
EDeltaPolicy DeltaPolicy
Definition BuildPatchSettings.h:288
bool bConstructFilesInMemory
Definition BuildPatchSettings.h:330
TOptional< int32 > ConstructorIOBatchSizeMB
Definition BuildPatchSettings.h:301
bool bDeleteChunkDbFilesAfterUse
Definition BuildPatchSettings.h:273
IBuildInstallerSharedContextPtr SharedContext
Definition BuildPatchSettings.h:263
EVerifyMode VerifyMode
Definition BuildPatchSettings.h:286
TOptional< int32 > ConstructorIOBufferSizeMB
Definition BuildPatchSettings.h:308
bool bTrackFileOperations
Definition BuildPatchSettings.h:294
TOptional< bool > ConstructorSpawnAdditionalIOThreads
Definition BuildPatchSettings.h:298
FString BackupDirectory
Definition BuildPatchSettings.h:269
bool bCalculateDeleteChunkDbMaxDiskSpaceAndExit
Definition BuildPatchSettings.h:277
FString InstallDirectory
Definition BuildPatchSettings.h:265
TArray< FInstallerAction > InstallerActions
Definition BuildPatchSettings.h:261
bool bSkipInitialDiskSizeCheck
Definition BuildPatchSettings.h:337
TOptional< bool > ConstructorStallWhenFileSystemThrottled
Definition BuildPatchSettings.h:314
TArray< FString > ChunkDatabaseFiles
Definition BuildPatchSettings.h:271
bool bAllowConcurrentExecution
Definition BuildPatchSettings.h:292
EInstallMode InstallMode
Definition BuildPatchSettings.h:284
Definition BuildPatchSettings.h:30
FString ProjectName
Definition BuildPatchSettings.h:41
BUILDPATCHSERVICES_API FBuildPatchServicesInitSettings()
Definition BuildPatchSettings.cpp:10
FString ApplicationSettingsDir
Definition BuildPatchSettings.h:39
FString LocalMachineConfigFileName
Definition BuildPatchSettings.h:43
Definition BuildPatchSettings.h:344
bool bAllowEmptyBuild
Definition BuildPatchSettings.h:395
FString RootDirectory
Definition BuildPatchSettings.h:355
FString PrereqName
Definition BuildPatchSettings.h:375
FString PrereqPath
Definition BuildPatchSettings.h:377
EFeatureLevel FeatureLevel
Definition BuildPatchSettings.h:353
FString LaunchExe
Definition BuildPatchSettings.h:363
FString AttributeListFile
Definition BuildPatchSettings.h:371
float DataAgeThreshold
Definition BuildPatchSettings.h:381
FString IgnoreListFile
Definition BuildPatchSettings.h:369
FString InputListFile
Definition BuildPatchSettings.h:367
FString OutputFilename
Definition BuildPatchSettings.h:393
BUILDPATCHSERVICES_API FChunkBuildConfiguration()
Definition BuildPatchSettings.cpp:158
FString LaunchCommand
Definition BuildPatchSettings.h:365
TMap< FString, FVariant > CustomFields
Definition BuildPatchSettings.h:389
FString CloudDirectory
Definition BuildPatchSettings.h:391
bool bShouldHonorReuseThreshold
Definition BuildPatchSettings.h:383
FString BuildVersion
Definition BuildPatchSettings.h:361
TSet< FString > PrereqIds
Definition BuildPatchSettings.h:373
bool bShouldMatchAnyWindowSize
Definition BuildPatchSettings.h:387
uint32 AppId
Definition BuildPatchSettings.h:357
FString PrereqArgs
Definition BuildPatchSettings.h:379
uint32 OutputChunkWindowSize
Definition BuildPatchSettings.h:385
FString AppName
Definition BuildPatchSettings.h:359
BUILDPATCHSERVICES_API FChunkDeltaOptimiserConfiguration()
Definition BuildPatchSettings.cpp:169
uint64 DiffAbortThreshold
Definition BuildPatchSettings.h:424
FString ManifestBUri
Definition BuildPatchSettings.h:416
uint32 OutputChunkSize
Definition BuildPatchSettings.h:422
uint32 ScanWindowSize
Definition BuildPatchSettings.h:420
FString ManifestAUri
Definition BuildPatchSettings.h:414
FString CloudDirectory
Definition BuildPatchSettings.h:418
Definition BuildPatchSettings.h:491
FString CloudDirectory
Definition BuildPatchSettings.h:500
bool bRunPreview
Definition BuildPatchSettings.h:506
float DataAgeThreshold
Definition BuildPatchSettings.h:502
BUILDPATCHSERVICES_API FCompactifyConfiguration()
Definition BuildPatchSettings.cpp:185
FString DeletedChunkLogFile
Definition BuildPatchSettings.h:504
Definition BuildPatchSettings.h:451
FString ManifestAUri
Definition BuildPatchSettings.h:460
FString OutputFilePath
Definition BuildPatchSettings.h:471
FString ManifestBUri
Definition BuildPatchSettings.h:462
TSet< FString > TagSetA
Definition BuildPatchSettings.h:464
bool bEmitInstallTime
Definition BuildPatchSettings.h:484
TSet< FString > TagSetB
Definition BuildPatchSettings.h:466
TArray< TSet< FString > > CompareTagSets
Definition BuildPatchSettings.h:469
FString OutputPatchDescriptorPath
Definition BuildPatchSettings.h:475
bool bOnlyPatchDescriptors
Definition BuildPatchSettings.h:481
bool bRequireOptimizedDelta
Definition BuildPatchSettings.h:478
BUILDPATCHSERVICES_API FDiffManifestsConfiguration()
Definition BuildPatchSettings.cpp:181
Definition BuildPatchSettings.h:47
static BUILDPATCHSERVICES_API FInstallerAction MakeInstall(const IBuildManifestRef &Manifest, TSet< FString > InstallTags=TSet< FString >(), FString InstallSubdirectory=FString(), FString CloudSubdirectory=FString())
Definition BuildPatchSettings.cpp:27
static BUILDPATCHSERVICES_API FInstallerAction MakeRepair(const IBuildManifestRef &Manifest, TSet< FString > InstallTags=TSet< FString >(), FString InstallSubdirectory=FString(), FString CloudSubdirectory=FString())
Definition BuildPatchSettings.cpp:50
BUILDPATCHSERVICES_API const TSet< FString > & GetInstallTags() const
Definition BuildPatchSettings.cpp:117
IBuildManifestRef GetInstallOrCurrentManifest() const
Definition BuildPatchSettings.h:208
BUILDPATCHSERVICES_API bool IsUninstall() const
Definition BuildPatchSettings.cpp:112
BUILDPATCHSERVICES_API bool IsRepair() const
Definition BuildPatchSettings.cpp:107
static BUILDPATCHSERVICES_API FInstallerAction MakeUninstall(const IBuildManifestRef &Manifest, FString InstallSubdirectory=FString(), FString CloudSubdirectory=FString())
Definition BuildPatchSettings.cpp:62
IBuildManifestRef GetCurrentOrInstallManifest() const
Definition BuildPatchSettings.h:199
BUILDPATCHSERVICES_API const FString & GetInstallSubdirectory() const
Definition BuildPatchSettings.cpp:122
BUILDPATCHSERVICES_API const FString & GetCloudSubdirectory() const
Definition BuildPatchSettings.cpp:127
static FInstallerAction MakeInstallOrUpdate(const IBuildManifestPtr &CurrentManifest, const IBuildManifestRef &InstallManifest, TSet< FString > InstallTags=TSet< FString >(), FString InstallSubdirectory=FString(), FString CloudSubdirectory=FString())
Definition BuildPatchSettings.h:100
BUILDPATCHSERVICES_API IBuildManifestRef GetInstallManifest() const
Definition BuildPatchSettings.cpp:132
BUILDPATCHSERVICES_API bool IsUpdate() const
Definition BuildPatchSettings.cpp:102
static BUILDPATCHSERVICES_API FInstallerAction MakeUpdate(const IBuildManifestRef &CurrentManifest, const IBuildManifestRef &InstallManifest, TSet< FString > InstallTags=TSet< FString >(), FString InstallSubdirectory=FString(), FString CloudSubdirectory=FString())
Definition BuildPatchSettings.cpp:38
BUILDPATCHSERVICES_API bool IsInstall() const
Definition BuildPatchSettings.cpp:97
IBuildManifestPtr TryGetInstallManifest() const
Definition BuildPatchSettings.h:186
IBuildManifestPtr TryGetCurrentManifest() const
Definition BuildPatchSettings.h:173
BUILDPATCHSERVICES_API IBuildManifestRef GetCurrentManifest() const
Definition BuildPatchSettings.cpp:137
Definition BuildPatchSettings.h:227
bool bAllowConcurrentExecution
Definition BuildPatchSettings.h:246
bool bIsRepair
Definition BuildPatchSettings.h:244
TArray< FString > CloudDirectories
Definition BuildPatchSettings.h:239
TArray< FString > ChunkDatabaseFiles
Definition BuildPatchSettings.h:238
EInstallMode InstallMode
Definition BuildPatchSettings.h:241
IBuildManifestRef InstallManifest
Definition BuildPatchSettings.h:234
EDeltaPolicy DeltaPolicy
Definition BuildPatchSettings.h:243
EVerifyMode VerifyMode
Definition BuildPatchSettings.h:242
FString StagingDirectory
Definition BuildPatchSettings.h:236
IBuildManifestPtr CurrentManifest
Definition BuildPatchSettings.h:233
FString InstallDirectory
Definition BuildPatchSettings.h:235
FString BackupDirectory
Definition BuildPatchSettings.h:237
bool bRunRequiredPrereqs
Definition BuildPatchSettings.h:245
TSet< FString > InstallTags
Definition BuildPatchSettings.h:240
Definition BuildPatchSettings.h:513
FString OutputFile
Definition BuildPatchSettings.h:532
FString ManifestFilePath
Definition BuildPatchSettings.h:524
FString PrevManifestFilePath
Definition BuildPatchSettings.h:526
uint64 MaxOutputFileSize
Definition BuildPatchSettings.h:536
FString ResultDataFilePath
Definition BuildPatchSettings.h:538
FString CloudDir
Definition BuildPatchSettings.h:534
TArray< TSet< FString > > TagSetArray
Definition BuildPatchSettings.h:528
BUILDPATCHSERVICES_API FPackageChunksConfiguration()
Definition BuildPatchSettings.cpp:191
EFeatureLevel FeatureLevel
Definition BuildPatchSettings.h:522
TSet< FString > PrevTagSet
Definition BuildPatchSettings.h:530
FString InputFile
Definition BuildPatchSettings.h:440
FString OutputFile
Definition BuildPatchSettings.h:442
BUILDPATCHSERVICES_API FPatchDataEnumerationConfiguration()
Definition BuildPatchSettings.cpp:176
bool bIncludeSizes
Definition BuildPatchSettings.h:444
Definition Optional.h:131