En programación informática , un archivo de manifiesto es un archivo que contiene metadatos para un grupo de archivos adjuntos que forman parte de un conjunto o unidad coherente. Por ejemplo, los archivos de un programa informático pueden tener un manifiesto que describe el nombre, el número de versión , la licencia y los archivos constituyentes del programa. [1] El término "manifiesto" se tomó prestado de un procedimiento de envío de carga, donde un manifiesto de barco enumeraría la tripulación y/o la carga de un buque.
Los archivos de manifiesto son similares en naturaleza a los archivos de declaración en que ambos especifican la estructura esperada de un programa de computadora que será consumido por otro programa de computadora, proporcionando información adicional que permite que el software del sistema , las herramientas definidas por software (por ejemplo, compiladores , linters ), los entornos de desarrollo u otros desarrolladores comprendan cómo interactuar con ciertos recursos o código. A diferencia de los archivos de declaración, los manifiestos hacen esto de diferentes maneras y para diferentes propósitos. Por ejemplo, los archivos de manifiesto describen cosas como dependencias, permisos o configuraciones de tiempo de ejecución que controlan la ejecución del código. Los archivos de declaración describen la estructura del código (como tipos, interfaces o funciones) para controlar la traducción del código, admitir la verificación de tipos estática y habilitar características convenientes como el autocompletado y la refactorización automática del código.
Los sistemas de compilación y los sistemas operativos pueden usar archivos de manifiesto para comprender cómo configurar, ejecutar o integrar un programa informático en un sistema existente. Además, mientras que los archivos de manifiesto se centran en información a nivel de proyecto o de sistema (como configuraciones de tiempo de ejecución o dependencias), los archivos de declaración se centran en detalles a nivel de código (como los tipos o firmas de funciones y objetos).
Las distribuciones de Linux dependen en gran medida de los sistemas de gestión de paquetes para distribuir software. En este esquema, un paquete es un archivo de almacenamiento que contiene un archivo de manifiesto. El propósito principal es enumerar los archivos que se incluyen en la distribución, ya sea para su procesamiento por diversas herramientas de empaquetado o para el consumo humano. Los manifiestos pueden contener información adicional; por ejemplo, en JAR (un formato de paquete para distribuir software escrito en lenguaje de programación Java ), pueden especificar un número de versión y un punto de entrada para la ejecución. El manifiesto puede contener opcionalmente un hash criptográfico o una suma de comprobación de cada archivo. Al crear una firma criptográfica para un archivo de manifiesto de este tipo, se puede validar la autenticidad e integridad de todo el contenido del paquete de distribución, ya que la alteración de cualquiera de los archivos invalidará las sumas de comprobación en el archivo de manifiesto.
En Microsoft Windows , el software que depende de Windows Side-by-Side ( WinSxS ) necesita un manifiesto de aplicación, que es un documento XML que está incrustado en un archivo ejecutable o contenido en un archivo XML separado que lo acompaña. Contiene el nombre, la versión, la información de confianza, los privilegios necesarios para la ejecución y las dependencias de otros componentes. [2]
Un manifiesto de ensamblaje es muy similar a un manifiesto de aplicación, pero describe la identidad de los componentes denominados " ensamblados ". Estos ensamblajes se mencionan en el manifiesto de aplicación. [3]
A continuación se muestra un ejemplo de manifiesto de aplicación. Este manifiesto de aplicación tiene dos partes principales: seguridad y dependencia. La parte de seguridad indica que la aplicación requiere un nivel de seguridad "asInvoker", es decir, puede funcionar con cualquier nivel de seguridad en el que se ejecute. La parte de dependencia indica que la aplicación necesita un componente llamado "Microsoft.VC90.CRT" con el número de versión "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> <!--Estoy de acuerdo con cualquier nivel de privilegio de seguridad--> <requestedExecutionLevel level= 'asInvoker' uiAccess= 'false' /> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <!--Necesito que Microsoft Visual C++ 2008 Runtime se ejecute--> <assemblyIdentity type= 'win32' name= 'Microsoft.VC90.CRT' version= '9.0.21022.8' arquitectura del procesador = 'x86' token de clave pública = '1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependencia> </ensamblaje>
Un manifiesto de caché en HTML5 es un archivo de texto sin formato que acompaña a una aplicación web y que ayuda a que se ejecute cuando no hay conectividad de red. El mecanismo de almacenamiento en caché lee este archivo y garantiza que su contenido esté disponible localmente. Un manifiesto de caché HTML5 se entrega con su tipo de contenido establecido en "text/cache-manifest". [4]
Ejemplo de un manifiesto de caché:
MANIFIESTO DE CACHÉ/prueba.css/prueba.js/prueba.png
Un manifiesto web es un archivo JSON que se utiliza en aplicaciones web progresivas para que se puedan compartir fácilmente a través de una URL, que los motores de búsqueda puedan descubrirlas y que alivie los procedimientos de instalación complejos. Además, las PWA admiten interacciones y navegación nativas al estilo de las aplicaciones, como la incorporación a la pantalla de inicio , la visualización de pantallas de presentación , etc. [5]
Esta clase Directory contiene metadatos especiales en un archivo de manifiesto. Estos datos pueden ser reconocidos por el proveedor de contactos, que los desarrolladores pueden usar para crear un directorio personalizado y para transferir datos entre el dispositivo y los servicios en línea.