En NeXTSTEP , OPENSTEP y sus descendientes lineales macOS , iOS , iPadOS , tvOS y watchOS , y en GNUstep , un paquete es un directorio de archivos con una estructura y extensión de archivo definidas, que permite agrupar archivos relacionados como un elemento conceptualmente único. .
Ejemplos de paquetes que contienen código ejecutable incluyen aplicaciones , marcos y complementos . Este tipo de paquete generalmente contiene un archivo que representa el código ejecutable y archivos que representan recursos como puntas , plantillas, imágenes, sonidos y otros medios. En algunos otros sistemas, como Microsoft Windows , estos recursos generalmente se incluyen directamente en el archivo ejecutable en el momento de la compilación. En Macintosh más antiguos, se utiliza una técnica similar, donde se pueden agregar metadatos adicionales a la bifurcación de recursos de un archivo . Similares en concepto son los directorios de aplicaciones utilizados en RISC OS y en ROX Desktop .
Ejemplos de paquetes que no contienen código ejecutable incluyen paquetes de documentos ( documentos de iWork ) y bibliotecas multimedia ( biblioteca de iPhoto ).
Se accede a los paquetes mediante programación con la NSBundle
clase en los marcos Cocoa , NeXTSTEP y GNUstep's Foundation , y CFBundle
en Core Foundation . Los paquetes suelen incluir una información. plist archivo para metadatos. [1] El identificador de tipo uniforme (UTI) para un paquete de Apple es . [2]com.apple.bundle
Los paquetes de aplicaciones son jerarquías de directorios, y el directorio de nivel superior tiene un nombre que termina con una .app
extensión.
En un paquete de aplicaciones de macOS, el primer directorio del paquete debajo del directorio de nivel superior suele denominarse Contents
. Dentro Contents
suele haber otro directorio, llamado MacOS
, que contiene el código ejecutable de la aplicación. La Contents
carpeta contiene un archivo llamado Info.plist
, que contiene información de la aplicación, como el nombre del proveedor del software, el nombre de los archivos que contienen el ejecutable y el ícono de la aplicación, la versión de la aplicación, los permisos solicitados, etc. Dentro de la Contents
carpeta generalmente también hay un directorio llamado Resources
, que contiene los recursos de la aplicación. [3]
Entre otras cosas, la carpeta contiene versiones localizadas de los archivos nibResources
de la aplicación .
Otros subdirectorios comunes incluyen Plugins
, y Frameworks
. El directorio contiene marcos utilizados por la aplicación y se utilizan incluso si existe otra versión del marco en el sistema. El directorio contiene marcos que pueden ser utilizados tanto por la aplicación que los contiene como por otras aplicaciones; se utilizan sólo si no existe una versión más reciente en ninguna otra parte del sistema. Contiene código extensible utilizado por la aplicación. La carpeta contiene información utilizada por el sistema para validar que el paquete proviene de una parte confiable y no ha sido manipulado._CodeSignature
Shared Frameworks
Frameworks
Shared Frameworks
Plugins
_CodeSignature
De forma predeterminada, el Finder muestra paquetes de aplicaciones, que también pueden denominarse paquetes , como archivos opacos sin estructura subyacente; El contenido del paquete se puede mostrar con el elemento del menú contextual "Mostrar contenido del paquete" .
GNUstep utiliza de forma predeterminada el nombre de la aplicación para nombrar la carpeta que contiene el código de la aplicación. Una alternativa es nombrarlos según la arquitectura de la computadora y el sistema operativo para el que está destinado el código para formar un binario grueso , de modo que la aplicación se pueda abrir en muchas plataformas. [4] [5]
Los marcos de macOS también se almacenan como paquetes; [6] el directorio de nivel superior de un paquete de marco tiene un nombre que es el nombre del marco seguido de la extensión .framework
. En el directorio de nivel superior hay un Versions
directorio, con subdirectorios para una o más versiones del marco, cada subdirectorio contiene el código de la biblioteca dinámica para el marco, en un archivo cuyo nombre es el mismo que el nombre del marco, posiblemente con un Headers
carpeta que contiene archivos de encabezado para el marco y otras subcarpetas como Resources
. El Versions
directorio también contiene un enlace simbólico Current
al directorio de la versión actual del marco. En el directorio de nivel superior hay enlaces simbólicos al contenido de Versions/Current
. [7]
El Finder muestra paquetes de marcos como directorios en lugar de archivos opacos.
Aunque GNUstep utiliza marcos, normalmente no se almacenan como paquetes. Esto se debe a que la semántica completa de la carga del marco se considera demasiado ajena a otras plataformas. [8]
Los paquetes cargables son paquetes que contienen código que se puede cargar en tiempo de ejecución. [9] Los paquetes cargables suelen tener la extensión .bundle
y se utilizan con mayor frecuencia como complementos . En macOS, existe una manera de cargar paquetes incluso en aplicaciones que no los admiten, lo que permite hacks de terceros para aplicaciones populares, como Safari [10] y Apple Mail . [11] [12] GNUstep, una característica heredada de NeXTSTEP, -[NSBundle principalClass]
también tiene la interfaz.
De forma predeterminada, el Finder muestra paquetes cargables, que también pueden denominarse paquetes , como archivos opacos sin estructura subyacente; El contenido del paquete se puede mostrar con el elemento del menú contextual "Mostrar contenido del paquete" .
Hay muchas aplicaciones macOS que utilizan su propio formato de paquete personalizado (por ejemplo, CandyBar .iContainer
, Aperture .aplibrary
, VMware Fusion .vmwarevm
, etc.).
Un archivo .lproj es un paquete que contiene archivos de localización para el software OpenStep, macOS o GNUstep. Por lo general, contiene los .nib
archivos para un idioma determinado junto con .strings
archivos e imágenes si es necesario (por ejemplo, Léame o archivos de licencia). Los fabricantes de instaladores utilizan estos archivos localizados para personalizar los paquetes de instalación. También están incluidos en un paquete de aplicaciones.