Aplicaciones de Windows: empaquetado, implementación y proceso

En este tema se describen las opciones relativas a:

  • Qué opción de empaquetado usar para la aplicación (empaquetada, empaquetada con ubicación externa o desempaquetada).
  • Cómo implementará o distribuirá la aplicación y cómo se instalará.
  • El proceso en tiempo de ejecución de la aplicación, incluido el modo en que se aislará y qué API estarán disponibles para ella.

Puede tomar esas decisiones para las aplicaciones nuevas y existentes. Pero si aún está en la fase de planeación de una nueva aplicación, antes de empezar a pensar en las consideraciones anteriores, primero decida qué plataforma de desarrollo e interfaz de usuario usará para la aplicación. Y para esa decisión, consulte Introducción a las opciones de desarrollo de Windows.

Opciones de empaquetado: empaquetadas, empaquetadas con ubicación externa o sin empaquetar

La decisión sobre qué opción de empaquetado usar para la aplicación viene determinada por un concepto conocido como identidad del paquete. Muchas características de extensibilidad de Windows (tareas en segundo plano, escenarios de notificaciones push que usan la entrega en segundo plano o la activación COM, extensiones personalizadas del menú contextual y destinos para compartir) solo puede usarlas una aplicación si esa aplicación tiene identidad de paquete en tiempo de ejecución, porque el sistema operativo (SO) necesita poder identificar quién realiza la llamada a la API correspondiente. Solo las aplicaciones empaquetadas (incluidas las aplicaciones empaquetadas con ubicación externa) tienen la identidad del paquete.

Para obtener una explicación completa de los modelos empaquetados, empaquetados con ubicación externa y sin empaquetar, y cómo elegir entre ellos, consulte la introducción al empaquetado. Para conocer las características que dependen de la identidad del paquete, consulte Características que requieren la identidad del paquete.

Para obtener información sobre cómo configurar la aplicación como empaquetada o sin empaquetar:

Consulte también la sección Windows Administrador de paquetes y el cliente WinGet de este tema.

Implementación, distribución e instalación

Una aplicación empaquetada se empaqueta e instala mediante MSIX. Si elige empaquetar con ubicación externa, se trata de un modelo en el que "aporta su propio instalador", por lo que usted mismo debe seguir encargándose del trabajo del instalador (consulte Conceder identidad de paquete al empaquetar con ubicación externa). Una aplicación sin empaquetar no implica MSIX en absoluto.

El empaquetado es importante porque MSIX ofrece a sus usuarios una experiencia limpia de instalación, desinstalación y actualización, admite actualizaciones incrementales y automáticas, está optimizado para Microsoft Store, funciona con MSIX app attach para Azure Virtual Desktop y se beneficia de una sólida protección contra manipulaciones cuando está firmado.

Para obtener instrucciones de implementación y distribución, consulte Introducción al paquete e implementación y Elección de una ruta de distribución. Consulte también la sección Windows Administrador de paquetes y el cliente WinGet de este tema.

AppContainer o IL medio

La opción para ejecutar la aplicación en un AppContainer, o no, es una cuestión de seguridad. El proceso de una aplicación AppContainer y sus procesos secundarios se ejecutan dentro de un contenedor ligero de aplicaciones donde pueden acceder solo a los recursos que se les conceden específicamente. Y están aislados mediante el sistema de archivos y la virtualización del registro. Como resultado, las aplicaciones implementadas en un AppContainer no se pueden hackear para permitir acciones malintencionadas fuera de los recursos asignados limitados.

Las aplicaciones empaquetadas o desempaquetadas se pueden configurar para que se ejecuten en un AppContainer. Pero el proceso es más sencillo para las aplicaciones empaquetadas. Si una aplicación no es una aplicación AppContainer, entonces es una aplicación Medium IL.

Para obtener más información, consulta AppContainer para aplicaciones heredadas y aplicaciones MSIX AppContainer.

Para obtener información sobre cómo configurar tu aplicación para que se ejecute en un AppContainer o Medium IL:

  • Aplicaciones winUI (SDK de Aplicaciones para Windows). Consulte el atributo de manifiesto del paquete de aplicación uap10:TrustLevel en Configurar un proyecto WinUI para AppContainer.
  • Aplicaciones de escritorio. Consulte la propiedad del TrustLevel proyecto de Visual Studio en aplicaciones AppContainer de MSIX (en la sección adecuada para su tipo de aplicación).
  • Plataforma universal de Windows (UWP) aplicaciones. Las aplicaciones para UWP ya están configuradas para ejecutarse en appContainer; y esa configuración no se puede cambiar.

Recuerde que las aplicaciones sin empaquetar no tienen un manifiesto de paquete de aplicación. Por lo tanto, para las aplicaciones sin empaquetar, declaras la decisión de AppContainer o Medium-IL en tu archivo de proyecto en lugar de en un manifiesto de paquete de aplicación.

Aislamiento de la aplicación Win32

El aislamiento de aplicaciones Win32 es una característica de seguridad (disponible en Windows 11, versión 24H2 y posteriores) que ayuda a contener daños si una aplicación está en peligro y protege las opciones de privacidad del usuario. Se basa en AppContainers y componentes que virtualizan los recursos y proporcionan acceso mediado. Para obtener más información, consulta Información general sobre el aislamiento de aplicaciones Win32 y el repositorio de GitHub de aislamiento de aplicaciones Win32.

Características de aplicaciones

Las funcionalidades de la aplicación (por ejemplo, InternetClient, ubicación, micrófono y bluetooth) son relevantes principalmente para las aplicaciones empaquetadas que se ejecutan en un AppContainer. Por lo tanto, esto incluye todas las aplicaciones de Plataforma universal de Windows (UWP) y algunas aplicaciones de escritorio.

Pero hay algunos escenarios en los que incluso una aplicación il media (es decir, no una aplicación AppContainer) debe declarar una funcionalidad. Un ejemplo es la funcionalidad restringida runFullTrust .

Para obtener más información sobre las funcionalidades de la aplicación, los tipos de aplicaciones a los que se aplican y cómo configurarlas, consulte Declaraciones de funcionalidad de la aplicación. Las funcionalidades se configuran en el manifiesto del paquete de la aplicación; y por eso solo se aplican a las aplicaciones empaquetadas.

Tipos de aplicaciones

Las aplicaciones de escritorio y las aplicaciones Plataforma universal de Windows (UWP) son los dos tipos principales de aplicaciones, aunque hay varios tipos de aplicaciones en la familia de aplicaciones de escritorio. Elegir un marco de interfaz de usuario (WinForms, WPF, Win32, Direct 2D/3D o WinUI 3) es hasta cierto punto independiente de las configuraciones descritas en este tema.

Pero echemos un vistazo a cómo esos tipos de aplicaciones pueden diferir entre sí en términos de empaquetado, implementación y proceso.

En primer lugar, todas las aplicaciones para UWP se empaquetan y se ejecutan en un AppContainer. Pero para las aplicaciones de escritorio, las cosas son más flexibles. Puede elegir empaquetar la aplicación de escritorio o no. Además, independientemente de esa decisión, puede optar por configurar la aplicación de escritorio como una appContainer o una aplicación il media.

Empaquetado Desempaquetado
AppContainer Aplicaciones de escritorio
Aplicaciones para UWP
Aplicaciones de escritorio
IL medio Aplicaciones de escritorio Aplicaciones de escritorio

Para las aplicaciones empaquetadas, para configurar el tipo de aplicación que quieras, usas el atributo uap10:RuntimeBehavior en el manifiesto del paquete de la aplicación (consulta Application (Windows 10)).

  • Las aplicaciones de escritorio son Windows .exe, normalmente con una función de punto de entrada principal o WinMain . Para configurar la aplicación como una aplicación de escritorio, establezca uap10:RuntimeBehavior en "packagedClassicApp" o "win32App".
    • El valor "packagedClassicApp" indica una aplicación WinUI (SDK de Aplicaciones para Windows) o una aplicación puente de escritorio (Centennial). La diferencia es que una aplicación Centennial se ejecuta en un AppContainer.
    • Y "win32App" indica cualquier otro tipo de aplicación Win32 (incluida una aplicación empaquetada con ubicación externa).
  • Por último, establecer uap10:RuntimeBehavior en "windowsApp" te ofrece una aplicación para UWP.

Para ver todas las opciones de los tipos de aplicaciones que puede desarrollar, consulte Windows app desarrollo: opciones y características.

SDK de Aplicaciones para Windows: dependiente del marco o independiente

Si la aplicación usa el SDK de Aplicaciones para Windows, también elige cómo implementar el entorno de ejecución del SDK del que depende la aplicación: dependiente del marco (el valor predeterminado, donde el entorno de ejecución de SDK de Aplicaciones para Windows o el paquete framework deben estar presentes en la máquina de destino) o autocontenida (la aplicación lleva sus dependencias SDK de Aplicaciones para Windows con ella). Para obtener más información, consulte la introducción a la implementación de SDK de Aplicaciones para Windows.

Windows Administrador de paquetes y el cliente WinGet

Un package manager puede ayudar a los usuarios a instalar, actualizar o configurar el software mediante la automatización del flujo de trabajo. Los administradores de paquetes pueden ayudar a instalar cualquier software, pero tienden a usarse principalmente para instalar developer tools. Por lo tanto, si va a crear una herramienta para desarrolladores, es posible que le interese especialmente esta opción. Pero así es como funciona:

  • Usted, como desarrollador de software, defina a la package manager (en forma de instrucciones declarativas) todas las piezas necesarias para una instalación correcta del producto.
  • Y, después, cuando un usuario instala el software, el package manager sigue las instrucciones declarativas para automatizar el flujo de trabajo de instalación y configuración.

El resultado es una reducción del tiempo dedicado a preparar el entorno de un usuario y una mejor compatibilidad entre los componentes instalados. Y puedes usar Windows Administrador de paquetes para distribuir las aplicaciones empaquetadas o sin empaquetar en formatos como .msix, .msi y .exe.

Para obtener más información, consulta Windows Administrador de paquetes.