En programación informática , un archivo manifiesto es un archivo que contiene metadatos para un grupo de archivos que forman parte de un conjunto o unidad coherente. Por ejemplo, los archivos de un programa informático pueden tener un manifiesto que describa el nombre, el número de versión , la licencia y los archivos que lo componen. [ 1 ] El término «manifiesto» se toma prestado de un procedimiento de transporte marítimo de carga, donde un manifiesto de barco enumeraba la tripulación y/o la carga de un buque.
Los archivos de manifiesto son similares a los archivos de declaración, ya que ambos especifican la estructura esperada de un programa informático que será utilizado por otro programa, proporcionando información adicional que permite al software del sistema , las herramientas definidas por software (por ejemplo, compiladores , analizadores de código ), los entornos de desarrollo u otros desarrolladores comprender cómo interactuar con ciertos recursos o código. A diferencia de los archivos de declaración, los manifiestos cumplen esta función de maneras diferentes y con propósitos distintos. Por ejemplo, los archivos de manifiesto describen aspectos 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 estática de tipos y habilitar funciones prácticas 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 la configuración de tiempo de ejecución o las dependencias), los archivos de declaración se centran en detalles a nivel de código (como los tipos o las firmas de las funciones y los objetos).
Tipos
Manifiesto del paquete
Las distribuciones de Linux dependen en gran medida de los sistemas de gestión de paquetes para distribuir software. En este sistema, un paquete es un archivo comprimido que contiene un archivo de manifiesto. Su propósito principal es enumerar los archivos incluidos en la distribución, ya sea para su procesamiento por diversas herramientas de empaquetado o para su uso por parte del usuario. Los manifiestos pueden contener información adicional; por ejemplo, en JAR (un formato de paquete para distribuir software escrito en Java ), pueden especificar un número de versión y un punto de entrada para la ejecución. Opcionalmente, el manifiesto puede contener un hash criptográfico o una suma de verificación de cada archivo. Al crear una firma criptográfica para dicho archivo de manifiesto, se puede validar la autenticidad e integridad de todo el contenido del paquete de distribución, ya que la modificación de cualquiera de los archivos invalidará las sumas de verificación del manifiesto.
Manifiesto de aplicación y montaje
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 se encuentra incrustado en un archivo ejecutable o en un archivo XML separado que lo acompaña. Contiene el nombre, la versión, 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 conocidos como " ensamblajes ". 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 consta de dos partes principales: Seguridad y Dependencias. La parte de Seguridad indica que la aplicación requiere el nivel de seguridad "asInvoker"; es decir, puede ejecutarse con cualquier nivel de seguridad. La parte de Dependencias indica que la aplicación necesita un componente llamado "Microsoft.VC90.CRT" con la 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> <!--Me parece bien cualquier nivel de privilegio de seguridad--> <requestedExecutionLevel level= 'asInvoker' uiAccess= 'false' /> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <!--Necesito Microsoft Visual C++ 2008 Runtime para ejecutar--> <assemblyIdentity type= 'win32' name= 'Microsoft.VC90.CRT' version= '9.0.21022.8' processorArchitecture= 'x86' publicKeyToken= '1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> </assembly>manifiesto de caché HTML5
Un manifiesto de caché en HTML5 era un archivo de texto plano que acompañaba a una aplicación web y que le permitía ejecutarse sin conexión a la red. El mecanismo de almacenamiento en caché del navegador web leía este archivo y garantizaba que su contenido estuviera disponible localmente. Un manifiesto de caché HTML5 debe servirse con su tipo de contenido establecido en "text/cache-manifest". [ 4 ] Los principales navegadores web eliminaron la compatibilidad con el manifiesto de caché. [ 5 ] [ 6 ] En su lugar, se recomienda el uso de service workers . [ 7 ]
Ejemplo de manifiesto de caché:
MANIFIESTO DE CACHÉ /test.css /test.js /prueba.png
Manifiesto web
Un webmanifest es un archivo JSON que se utiliza en las aplicaciones web progresivas para que sean fácilmente compartibles mediante una URL, detectables por los motores de búsqueda y para simplificar los complejos procedimientos de instalación. Además, las PWA admiten interacciones y navegación al estilo de las aplicaciones nativas, como agregarse a la pantalla de inicio , mostrar pantallas de bienvenida , etc. [ 8 ]
manifiesto de extensión web
El manifiesto WebExtension es un archivo que manifest.jsonse utiliza para configurar las extensiones del navegador . El estándar se encuentra actualmente en la versión 3, pero la versión 2 todavía es compatible con navegadores basados en gecko como Mozilla Firefox .
Referencias
- ↑ Ashwin (1 de agosto de 2015). "Investigadores descubren el malware HiddenAds en una docena de aplicaciones de Android distribuidas en Google Play Store" . ghacks.net . G Hacks . Consultado el 19 de agosto de 2015.
Esta clase de directorio 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 transferir datos entre el dispositivo y los servicios en línea.
- ↑ "Manifiestos de aplicación" . Referencia de ensamblados en paralelo . Microsoft . Consultado el 23 de diciembre de 2015 .
- ↑ "Manifiestos de ensamblado" . Referencia de ensamblados en paralelo . Microsoft . Consultado el 23 de diciembre de 2015 .
- ↑ "7.7 Aplicaciones web sin conexión" . Estándar HTML . W3C . 22 de diciembre de 2015.
- ↑ "Preparativos para la eliminación de AppCache" . web.dev . Archivado del original el 20 de mayo de 2020. Consultado el 2 de septiembre de 2021 .
- ↑ "Uso de la caché de la aplicación - HTML: Lenguaje de marcado de hipertexto | MDN" . developer.mozilla.org . Archivado del original el 15 de febrero de 2019. Consultado el 11 de abril de 2021 .
- ↑ "Window.applicationCache" . MDN Web Docs . Mozilla. Archivado del original el 2 de mayo de 2023. Consultado el 29 de diciembre de 2020 .
- ↑ ""Manifiesto de la aplicación web", Borrador de trabajo" . "Manifiesto de la aplicación web", Borrador de trabajo . W3C . 12 de septiembre de 2016.
- formatos de archivos informáticos
- extensiones de nombre de archivo