Aplicaciones de Windows: empaquetado, implementación y proceso
Nota:
Parte de la información hace referencia al producto de versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
En este tema se describen las opciones relativas a:
- Indica si la aplicación se empaquetará o no.
- Cómo implementará o distribuirá la aplicación y cómo se instalará.
- El proceso en tiempo de ejecución de la aplicación: cómo 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 opcionesde desarrollo de Windows.
Empaquetado o desempaquetado
La decisión de tomar la aplicación empaquetada o desempaquetada se determina primero por un concepto conocido como identidadde paquete, que describiremos en esta sección. Si no lo necesita, la decisión se reduce a la experiencia deseada del instalador para usted mismo y para los usuarios. Vamos a profundizar en los detalles de esas cosas.
Muchas características—de extensibilidad de Windows, como tareas en segundo plano, notificaciones, iconos dinámicos, extensiones de menú contextual personalizadas y destinos—de recursos compartidos solo se pueden usar en una aplicación si esa aplicación tiene identidad de paquete en tiempo de ejecución. Esto se debe a que el sistema operativo (SO) debe ser capaz de identificar al autor de la llamada de la API correspondiente. Consulte Características que requieren la identidad del paquete.
- Si necesita usar cualquiera de esas características, la aplicación necesita la identidad del paquete. Por lo tanto, debe ser una aplicación empaquetada (las aplicaciones empaquetadas son el único tipo que tiene identidad de paquete). Una aplicación empaquetada se empaqueta mediante la tecnología MSIX (consulte ¿Qué es MSIX?).
- Para una nueva aplicación, el proceso de empaquetado es directo (y al final de esta sección hay información sobre cómo hacerlo).
- Para algunas aplicaciones existentes, puede seguir el mismo proceso de empaquetado que para una nueva aplicación. Pero dado que algunas aplicaciones existentes aún no están listas para que todo su contenido esté presente dentro de un paquete de MSIX, hay una opción para que la aplicación se empaquete con ubicación externa. Esto permite que su aplicación tenga identidad de paquete; de este modo, podrá usar las características que lo requieran. Para más información, consulte Concesión de la identidad del paquete mediante el empaquetado con ubicación externa.
- Incluso si no es necesario usar ninguna de esas características, la creación de una aplicación empaquetada sigue siendo una buena idea. Proporciona a los usuarios la manera más fácil de instalar, desinstalar y actualizar la aplicación. Para obtener más información, consulte Implementación, distribución e instalación en este tema.
- Pero crear una aplicación sin empaquetar es una opción.
La conclusión es que las aplicaciones empaquetadas son el único tipo que tiene identidad de paquete (y tienen la mejor experiencia de instalación). Una aplicación sin empaquetar no tiene identidad de paquete; por lo que no puede usar las API o características mencionadas anteriormente.
Para obtener más información sobre empaquetado frente a desempaquetado, consulta Introducción a la implementación; en particular, la sección Ventajas y desventajas del empaquetado de la aplicación en ese tema. Ese tema también menciona la opción empaquetada con ubicación externa.
Para obtener información sobre cómo configurar la aplicación como empaquetada o sin empaquetar:
- Aplicaciones winUI 3 (WINDOWS App SDK). Consulta la propiedad del
AppxPackage
proyecto de Visual Studio en Propiedadesdel proyecto y consulta Crear el primer proyectode WinUI 3 (Windows App SDK). - Aplicaciones de escritorio. Consulte Configuración de la aplicación de escritorio para el empaquetadoMSIX.
- Plataforma universal de Windows (UWP). Las aplicaciones para UWP ya están configuradas como empaquetadas; y esa configuración no se puede cambiar.
Consulte también la sección Administrador de paquetes de Windows y cliente WinGet en este tema.
Implementación, distribución e instalación
- Una aplicación empaquetada se empaqueta mediante la tecnología MSIX.
- También se instala una aplicación empaquetada mediante MSIX. Pero si opta por empaquetar con ubicación externa, puede verlo como un modelo de "traiga su propio instalador". Así que tendrá que hacer algo de trabajo de instalación con esa opción. Para más información, consulte Concesión de la identidad del paquete mediante el empaquetado con ubicación externa.
- Una aplicación sin empaquetar no implica MSIX en absoluto.
¿Por qué importa si la aplicación está empaquetada o no?
- Ofrece a los usuarios una manera fácil de instalar, desinstalar y actualizar la aplicación. La desinstalación es limpia: cuando se desinstala la aplicación, el sistema se restaura al mismo estado en el que estaba antes de la instalación, no queda ningún artefacto.
- Este tipo de aplicación también admite actualizaciones incrementales y automáticas.
- Además, Microsoft Store está optimizado para aplicaciones de este tipo (aunque se pueden usar dentro o fuera de Store).
- Es una ruta de acceso fácil para su uso a través de la conexión de aplicaciones MSIX (para máquinas virtuales de Azure Virtual Desktop). Para obtener más información, consulta ¿Qué es la asociación de aplicaciones MSIX?.
- Un paquete firmado se beneficia de una fuerte manipulación. Esta ventaja es incluso mayor que para una aplicación sin empaquetar instalada en Archivosde programa.
Consulte también la sección Administrador de paquetes de Windows y cliente WinGet en 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. Un proceso de la aplicación AppContainer y sus procesos secundarios se ejecutan en un contenedor de aplicaciones ligero al que solo pueden acceder los recursos que se les conceden específicamente. Y se aíslan mediante la virtualización del sistema de archivos y del registro. En consecuencia, las aplicaciones implementadas en AppContainer no se pueden piratear 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, se trata de una aplicación il media.
Para obtener más información consulte AppContainer para aplicaciones heredadas y Aplicaciones MSIX AppContainer.
Para obtener información sobre cómo configurar la aplicación para que se ejecute en un appContainer o il medio:
- Aplicaciones winUI 3 (WINDOWS App SDK). Consulte el atributo de manifiesto del
uap10:TrustLevel
paquete de aplicación en Configuración de un proyecto de WinUI 3 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). 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, declara la decisión appContainer-or-Medium-IL en el archivo de proyecto en lugar de en un manifiesto de paquete de aplicación.
Aislamiento de aplicaciones Win32
Importante
La característica descrita en este tema está disponible en las versiones preliminares de Windows Insider Preview.
El aislamiento de aplicaciones Win32 es una próxima característica de seguridad en Windows que, en caso de que una aplicación esté en peligro, ayuda a contener los daños y proteger las opciones de privacidad del usuario. Esta característica se basa en la base de AppContainers y componentes que virtualizan los recursos y proporcionan acceso asincronado a otros recursos. Para obtener documentación y herramientas que le ayuden a aislar las aplicaciones, consulte Bienvenido al repositoriode 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, incluye todas las aplicaciones de la 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 capacidad 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 dela 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 para la 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 (UI) (WinForms, WPF, Win32, Direct 2D/3D, UWP o WinUI 3) es una opción que 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 | Sin empaquetar | |
---|---|---|
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 en el uap10:RuntimeBehavior
manifiesto del paquete de la aplicación (consulta Aplicación (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, establezcauap10:RuntimeBehavior
en "packagedClassicApp" o "win32App".- El valor "packagedClassicApp" indica una aplicación WinUI 3 (Windows App SDK) o una aplicación de 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 todas las opciones de los tipos de aplicaciones que puedes desarrollar, consulta Desarrollo de aplicaciones de Windows: opciones y características.
SDK de aplicaciones de Windows: dependiente del marco o independiente
Si va a desarrollar o mantener una aplicación que use el SDKde aplicaciones de Windows, tendrá una decisión adicional para tomar. Dado que hay las dos maneras siguientes en las que puedes implementar el SDK de aplicaciones de Windows de la que depende la aplicación:
- Dependiente del marco (valor predeterminado). La aplicación necesita que el entorno de ejecución del SDK de aplicaciones de Windows o el paquete framework estén presentes en la máquina de destino.
- Independiente. La aplicación incluye sus dependencias del SDK de aplicaciones de Windows.
Para obtener más información, consulta Introduccióna la implementación de Windows App SDK.
Administrador de paquetes de Windows y cliente WinGet
Un administrador de paquetes 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 suelen usarse sobre todo para instalar herramientas para desarrolladores. Por tanto, si está creando una herramienta para desarrolladores, esta opción podría interesarle especialmente. Funciona de esta forma:
- Usted, como desarrollador de software, define para el administrador de paquetes (en forma de instrucciones declarativas) todas las piezas necesarias para instalar correctamente el producto.
- Y luego, cuando un usuario instala su software, el administrador de paquetes sigue sus 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 puede usar el Administrador de paquetes de Windows para distribuir las aplicaciones empaquetadas o desempaquetadas en formatos como .msix
, .msi
y .exe
.
Para obtener más información, consulte Administrador de paquetes de Windows.