Incomputer programming, amanifest file is afile containingmetadata for a group of accompanying files that are part of a set or coherent unit. For example, the files of acomputer program may have a manifest describing the name,version number,license and the constituent files of the program.[1]The term "manifest" is borrowed from a cargo shipping procedure, where aship manifest would list the crew and/or cargo of a vessel.
Manifest files are similar in nature to declaration files in that both specify the expected structure of a computer program to be consumed by another computer program, providing additional information that allowsystem software, software-defined tools (e.g.,compilers,linters),development environments, or other developers to understand how to interact with certain resources or code. Unlike declaration files, manifests do this in different ways and for different purposes. For instance, manifest files describe things like dependencies, permissions, or runtime settings that control the execution of code. Declaration files describe the structure of code (such as types, interfaces, or functions) to control the translation of code, support static type-checking, and enable convenient features like autocompletion and automatic code refactoring.
Build systems and operating systems may use manifest files to understand how to set up, execute, or integrate a computer program into an existing system. Furthermore, while manifest files focus on project-level or system-level information (like runtime settings or dependencies), declaration files focus on code-level details (like the types or signatures of functions and objects).
Linux distributions rely heavily onpackage management systems for distributing software. In this scheme, a package is anarchive file containing a manifest file. The primary purpose is to enumerate the files which are included in the distribution, either for processing by various packaging tools or for human consumption. Manifests may contain additional information; for example, inJAR (a package format for delivering software written inJava programming language), they can specify a version number and anentry point for execution. The manifest may optionally contain acryptographic hash orchecksum of each file. By creating a cryptographic signature for such a manifest file, the entire contents of the distribution package can be validated for authenticity and integrity, as altering any of the files will invalidate the checksums in the manifest file.
InMicrosoft Windows, software that relies on Windows Side-by-Side (WinSxS) needs an application manifest, which is anXML document that is either embedded in anexecutable file or contained in a separateXML file that accompanies it. It bears name, version, trust information, privileges required for execution and dependencies on other components.[2]
An assembly manifest is very similar to an application manifest but describes the identity of components known as "assemblies". These assemblies are referred to in the application manifest.[3]
An example of an application manifest is as follows. This application manifest has two core parts: Security and dependency. The security part says that the application requires "asInvoker" security level; that is, it can be operated at whatever security level it is executed. The dependency part says the application needs a component called "Microsoft.VC90.CRT" with version number "9.0.21022.8".
<?xml version='1.0' encoding='UTF-8' standalone='yes'?><assemblyxmlns='urn:schemas-microsoft-com:asm.v1'manifestVersion='1.0'><trustInfoxmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><!--I am okay with whatever security privilege level--><requestedExecutionLevellevel='asInvoker'uiAccess='false'/></requestedPrivileges></security></trustInfo><dependency><dependentAssembly><!--I need Microsoft Visual C++ 2008 Runtime to run--><assemblyIdentitytype='win32'name='Microsoft.VC90.CRT'version='9.0.21022.8'processorArchitecture='x86'publicKeyToken='1fc8b3b9a1e18e3b'/></dependentAssembly></dependency></assembly>
A cache manifest in HTML5 is aplain text file accompanying aweb app that helps it run when there is no network connectivity. The caching mechanism reads this file and ensures that its contents are available locally. An HTML5 cache manifest is served with its content type set to "text/cache-manifest".[4]
Example of a cache manifest:
CACHE MANIFEST /test.css/test.js/test.png
A webmanifest is aJSON file used inprogressive web apps to make them easily shareable via a URL, discoverable by a search engines, and alleviates complex installation procedures. Furthermore, PWAs support native app-style interactions and navigation, including being added tohome screen, displayingsplash screens, etc.[5]
The WebExtension manifest is a file calledmanifest.json
used to configurebrowser extensions. The standard is currently in version 3, but version 2 is still supported bygecko-based browsers likeMozilla Firefox.
This Directory class contains special metadata in a manifest file. This data can be recognized by the Contact Provider, which developers can use to create a custom directory, and to transfer data between the device and online services.