|This article needs additional citations for verification. (December 2013)|
A manifest file in computing is a file containing metadata for a group of accompanying files that are part of a set or coherent unit. For example, the files of a computer program may have a manifest describing the name, version number and the constituting files of the program.
The term is borrowed from a cargo shipping procedure, where a ship manifest would list the crew and/or cargo of a vessel.
Linux distribution rely heavily on package management systems for distributing software. In this scheme, a package is an archive 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, in JAR (a package format for delivering software written in Java programming language), they can specify a version number and an entry point for execution. The manifest may optionally contain a cryptographic hash or checksum 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.
Application and assembly manifest
In Microsoft Windows, software that rely on Windows Side-by-Side (WinSxS) need an application manifest. It is either an XML file with
.manifest filename extension that accompanies executable files or is an integral part of them, in the same XML format. It bears, name, version, trust information, privileges required for execution and dependencies on other components.
An assembly manifest 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.
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; i.e. it is okay with whatever security level it is executed. The dependency part say 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'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <!--I am okay with whatever security privilege level--> <requestedExecutionLevel level='asInvoker' uiAccess='false' /> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <!--I need Microsoft Visual C++ 2008 Runtime to run--> <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> </assembly>
HTML5 cache manifest
A cache manifest in HTML5 is a plain text file accompanying a web 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".
Example of a cache manifest:
CACHE MANIFEST /test.css /test.js /test.png