UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ManifestData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
5#include "Misc/SecureHash.h"
7#include "Misc/EnumRange.h"
9#include "Data/ChunkData.h"
11
13
14namespace BuildPatchServices
15{
20 {
21 // Stored as raw data.
22 None = 0,
23 // Flag for compressed data.
24 Compressed = 1,
25 // Flag for encrypted. If also compressed, decrypt first. Encryption will ruin compressibility.
26 Encrypted = 1 << 1,
27 };
28 ENUM_CLASS_FLAGS(EManifestStorageFlags);
29
33 namespace ManifestVersionHelpers
34 {
40 const TCHAR* GetChunkSubdir(EFeatureLevel FeatureLevel);
41
47 const TCHAR* GetFileSubdir(EFeatureLevel FeatureLevel);
48 }
49
51 {
60 // The version of this header and manifest data format, driven by the feature level.
61 EFeatureLevel Version;
62 // The size of this header.
64 // The size of this data compressed.
66 // The size of this data uncompressed.
68 // How the chunk data is stored.
69 EManifestStorageFlags StoredAs;
70 // The SHA1 hash for the manifest data that follows.
72 };
73
75 {
83 friend FArchive& operator<<(FArchive& Ar, FManifestMeta& Meta);
84 // The feature level support this build was created with, regardless of the serialised format.
85 EFeatureLevel FeatureLevel;
86 // Whether this is a legacy 'nochunks' build.
88 // The app id provided at generation.
90 // The app name string provided at generation.
91 FString AppName;
92 // The build version string provided at generation.
93 FString BuildVersion;
94 // The file in this manifest designated the application executable of the build.
95 FString LaunchExe;
96 // The command line required when launching the application executable.
98 // The set of prerequisite ids for dependencies that this build's prerequisite installer will apply.
100 // A display string for the prerequisite provided at generation.
101 FString PrereqName;
102 // The file in this manifest designated the launch executable of the prerequisite installer.
103 FString PrereqPath;
104 // The command line required when launching the prerequisite installer.
105 FString PrereqArgs;
106 // A unique build id generated at original chunking time to identify an exact build.
107 FString BuildId;
108 };
109
111 {
119 friend FArchive& operator<<(FArchive& Ar, FChunkDataList& ChunkDataList);
120 // The list of chunks.
122 };
123
128 {
129 None = 0,
130 // Flag for readonly file.
131 ReadOnly = 1,
132 // Flag for natively compressed.
133 Compressed = 1 << 1,
134 // Flag for unix executable.
135 UnixExecutable = 1 << 2
136 };
137 ENUM_CLASS_FLAGS(EFileMetaFlags);
138
140 {
142 // The build relative filename.
143 FString Filename;
144 // Whether this is a symlink to another file.
146 // The file SHA1.
148 // The flags for this file.
149 EFileMetaFlags FileMetaFlags;
150 // The install tags for this file.
152 // The list of chunk parts to stitch.
154 // The size of this file.
156 };
157
159 {
167 friend FArchive& operator<<(FArchive& Ar, FFileManifestList& FileManifestList);
171 void OnPostLoad();
172 // The list of files.
174 };
175
177 {
185 friend FArchive& operator<<(FArchive& Ar, FCustomFields& CustomFields);
186 // The map of field name to field data.
188 };
189
191 {
192 public:
193 static void Init();
194 static bool Serialize(FArchive& Ar, FBuildPatchAppManifest& AppManifest, BuildPatchServices::EFeatureLevel SaveFormat /* Ignored for loading */ = BuildPatchServices::EFeatureLevel::Latest);
195 };
196}
197
198ENUM_RANGE_BY_FIRST_AND_LAST(BuildPatchServices::EFeatureLevel, BuildPatchServices::EFeatureLevel::Original, BuildPatchServices::EFeatureLevel::Latest);
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define ENUM_RANGE_BY_FIRST_AND_LAST(EnumType, First, Last)
Definition EnumRange.h:47
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ManifestData.h:191
static void Init()
Definition ManifestData.cpp:541
EFileMetaFlags
Definition ManifestData.h:128
EManifestStorageFlags
Definition ManifestData.h:20
Definition Archive.h:1208
Definition BuildPatchManifest.h:64
Definition SecureHash.h:226
Definition Array.h:670
Definition UnrealString.h.inl:34
const TCHAR * GetFileSubdir(EFeatureLevel FeatureLevel)
Definition ManifestData.cpp:86
const TCHAR * GetChunkSubdir(EFeatureLevel FeatureLevel)
Definition ManifestData.cpp:78
Definition BuildPatchFileConstructor.h:28
Definition ManifestData.h:111
TArray< FChunkInfo > ChunkList
Definition ManifestData.h:121
friend FArchive & operator<<(FArchive &Ar, FChunkDataList &ChunkDataList)
Definition ManifestData.cpp:313
FChunkDataList()
Definition ManifestData.cpp:309
Definition ManifestData.h:177
FCustomFields()
Definition ManifestData.cpp:468
friend FArchive & operator<<(FArchive &Ar, FCustomFields &CustomFields)
Definition ManifestData.cpp:472
TMap< FString, FString > Fields
Definition ManifestData.h:187
Definition ManifestData.h:159
FFileManifestList()
Definition ManifestData.cpp:384
friend FArchive & operator<<(FArchive &Ar, FFileManifestList &FileManifestList)
Definition ManifestData.cpp:398
TArray< FFileManifest > FileList
Definition ManifestData.h:173
void OnPostLoad()
Definition ManifestData.cpp:388
Definition ManifestData.h:140
uint64 FileSize
Definition ManifestData.h:155
FString SymlinkTarget
Definition ManifestData.h:145
TArray< FString > InstallTags
Definition ManifestData.h:151
TArray< FChunkPart > ChunkParts
Definition ManifestData.h:153
FFileManifest()
Definition ManifestData.cpp:375
FString Filename
Definition ManifestData.h:143
EFileMetaFlags FileMetaFlags
Definition ManifestData.h:149
FSHAHash FileHash
Definition ManifestData.h:147
Definition ManifestData.h:51
uint32 DataSizeCompressed
Definition ManifestData.h:65
FManifestHeader()
Definition ManifestData.cpp:149
uint32 DataSizeUncompressed
Definition ManifestData.h:67
friend FArchive & operator<<(FArchive &Ar, FManifestHeader &Header)
Definition ManifestData.cpp:159
EManifestStorageFlags StoredAs
Definition ManifestData.h:69
FSHAHash SHAHash
Definition ManifestData.h:71
EFeatureLevel Version
Definition ManifestData.h:61
uint32 HeaderSize
Definition ManifestData.h:63
Definition ManifestData.h:75
TSet< FString > PrereqIds
Definition ManifestData.h:99
FString BuildId
Definition ManifestData.h:107
FString PrereqArgs
Definition ManifestData.h:105
friend FArchive & operator<<(FArchive &Ar, FManifestMeta &Meta)
Definition ManifestData.cpp:236
FString LaunchExe
Definition ManifestData.h:95
EFeatureLevel FeatureLevel
Definition ManifestData.h:85
FString LaunchCommand
Definition ManifestData.h:97
FString PrereqName
Definition ManifestData.h:101
uint32 AppID
Definition ManifestData.h:89
FString AppName
Definition ManifestData.h:91
FString PrereqPath
Definition ManifestData.h:103
FString BuildVersion
Definition ManifestData.h:93
bool bIsFileData
Definition ManifestData.h:87
FManifestMeta()
Definition ManifestData.cpp:228