Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Para cualquier proceso que se ejecute en AppContainer, si hace que se llame a DeploymentManager.Initialize, la aplicación debe declarar la packageManagement en el manifiesto del paquete. Para obtener más información, consulte El inicializador automático de Deployment Manager.
En el tema AppContainer para aplicaciones heredadas se describe toda la información básica necesaria sobre qué es el entorno de AppContainer y sus ventajas; ese tema también contiene ejemplos de código de C# y C++ para probar si un proceso se está ejecutando o no dentro de un AppContainer.
En el tema que está leyendo ahora se muestra cómo puede tomar una aplicación empaquetada con MSIX y configurarla fácilmente para que se ejecute en el entorno de AppContainer (en un contenedor de aplicaciones ligeras). Las aplicaciones de la Plataforma Universal de Windows (UWP) son automáticamente aplicaciones AppContainer. Pero también puede configurar la aplicación de escritorio empaquetada con MSIX para que sea una aplicación AppContainer.
Un proceso de la aplicación AppContainer y sus procesos secundarios se ejecutan dentro de un contenedor de aplicaciones ligero donde solo pueden acceder 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.
Sugerencia
Las aplicaciones sin empaquetar también se pueden ejecutar en un AppContainer. Es especialmente fácil usar AppContainer si empaquetas utilizando MSIX. Por lo tanto, todos los escenarios descritos en este tema tratan sobre aplicaciones empaquetadas.
Configuración de un proyecto de WinUI 3 para AppContainer
Los pasos descritos en Creación de un nuevo proyecto para una aplicación de escritorio WinUI 3 de C# o C++ empaquetada muestran la forma predeterminada y recomendada de crear un nuevo proyecto de WinUI 3.
De forma predeterminada, el archivo del Package.appxmanifest proyecto contiene la configuración de un paquete de plena confianza (es decir, de nivel de integridad medio). Las secciones relevantes tienen el siguiente aspecto:
...
<Applications>
<Application ...
EntryPoint="$targetentrypoint$">
...
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
...
Para configurar el paquete como si contuviera una aplicación AppContainer, puede editar el atributo EntryPoint y quitar la declaración de funcionalidad restringida (pero mantener el elemento Capabilities ). Por ejemplo:
...
<Applications>
<Application ...
EntryPoint="windows.partialTrustApplication">
...
</Application>
</Applications>
<Capabilities/>
...
Si el paquete se instala en Windows 10, versión 2004 (10.0; Compilación 19041) o posterior, después, en lugar de establecer EntryPoint, puede establecer uap10:TrustLevel y uap10:RuntimeBehavior (después de declarar el prefijo del espacio de nombres XML, como se muestra). Por ejemplo:
<Package ...
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
...>
...
<Applications>
<Application ...
EntryPoint="$targetentrypoint$"
uap10:TrustLevel="appContainer"
uap10:RuntimeBehavior="packagedClassicApp">
...
</Application>
</Applications>
<Capabilities/>
...
Para obtener más información, consulta estos temas:
- Elemento de aplicación
- uap10 se introdujo en Windows 10, versión 2004 (10.0; Compilación 19041)
- Tipos de aplicación de escritorio
Configuración de una solución de dos proyectos de WinUI 3 para AppContainer
En la sección anterior se describió el proceso para MSIX de un solo proyecto, que se recomienda y es el valor predeterminado para los nuevos proyectos de WinUI 3. Para obtener más información, consulta Empaqueta tu aplicación usando MSIX de un solo proyecto.
Pero es posible que tenga un proyecto de WinUI 3 que data de anterior a la introducción de la funcionalidad de MSIX de proyecto único. En cuyo caso, tendrás dos proyectos en tu solución: tu proyecto de aplicación, además de un Proyecto de Empaquetado de Aplicaciones de Windows adicional. Si puede migrar su proyecto a MSIX de un solo proyecto, sería ideal. Y podrá seguir las instrucciones de la sección anterior. Para obtener más información, consulta Empaquetar tu aplicación con MSIX de un solo proyecto.
Si no puedes migrar el proyecto a MSI de un solo proyecto, en esta sección se describe cómo configurar el paquete para que contenga una aplicación AppContainer.
Un Windows Application Packaging Project implica una configuración predeterminada que invalida la configuración en Package.appxmanifest. El proyecto se comporta como si hubiera una propiedad TrustLevel en el archivo de proyecto establecida en un valor de Full.
Para corregir ese valor de propiedad implícito, expanda el nodo Dependencias>Aplicaciones del proyecto de empaquetado y seleccione el nodo que representa la referencia al proyecto de WinUI 3. A continuación, en Visual Studio ventana Properties (no propiedades del proyecto), para la propiedad Trust Level elija el valor de Partial Trust.
El archivo de proyecto para el proyecto de empaquetado ahora contiene esta propiedad explícita:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Y ahora puede eliminar <rescap:Capability Name="runFullTrust" /> del archivo de proyecto de empaquetado de Package.appxmanifest.
Configurar un proyecto de aplicación de Windows (aplicación de tipo WndProc de C++ para Win32) para AppContainer
Esta sección es para ti si tienes un proyecto de tipo WndProc Win32 de C++ que se creó con la plantilla de proyecto Windows Application Project. El primer paso, en resumen, consiste en agregar a la solución un Windows Application Packaging Project. Hay más detalles sobre los pasos exactos en Configurar su aplicación de escritorio para el empaquetado de MSIX en Visual Studio. Ese tema se aplica a las aplicaciones de escritorio escritas en C++ o C#.
A continuación, abra el archivo de proyecto del nuevo proyecto de empaquetado y agregue una propiedad TrustLevel a la propiedad ProjectReference existente de la siguiente manera:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Al compilar, es posible que vea el error "error APPX1673: Falta el elemento obligatorio 'PhoneIdentity' en el manifiesto de la aplicación". Si eso sucede, edite el archivo del proyecto Package.appxmanifest de la siguiente manera:
<Package ...
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
...>
...
<mp:PhoneIdentity
PhoneProductId="A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx."
PhonePublisherId="A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.">
</mp:PhoneIdentity>
...
Configuración de un proyecto de WPF o WinForms para AppContainer
Esta sección es para ti si tienes:
- un proyecto de aplicación Windows Presentation Foundation (WPF) que se creó con la plantilla de proyecto de aplicación WPF de C#. Esto le proporcionará un proyecto de .NET y es diferente de la plantilla de proyecto denominada WPF App (.NET Framework). O bien,
- un proyecto de aplicación Windows Forms (WinForms) que se creó con la plantilla de proyecto de C# Windows Forms App. Esto le proporcionará un proyecto de .NET y es diferente de la plantilla de proyecto denominada Windows Forms App (.NET Framework).
El primer paso, en resumen, es agregar a tu solución un proyecto de empaquetado de aplicaciones de Windows (Windows Application Packaging Project). Hay más detalles sobre los pasos exactos en Configurar su aplicación de escritorio para empaquetado MSIX en Visual Studio.
A continuación, expanda el nodo Dependencies>Applications del proyecto de empaquetado y seleccione el nodo que representa la referencia a su proyecto de WPF o WinForms. A continuación, en Visual Studio ventana Properties (no propiedades del proyecto), para la propiedad Trust Level elija el valor de Partial Trust.
Temas relacionados
- Introducción a la contenedorización de MSIX
- AppContainer para aplicaciones heredadas
- Creación de un nuevo proyecto para una aplicación de escritorio WinUI 3 de C# o C++ empaquetada
- Elemento de aplicación
- uap10 se introdujo en Windows 10, versión 2004 (10.0; Compilación 19041)
- Tipos de aplicación de escritorio
- Empaqueta tu aplicación utilizando un MSIX de proyecto único
- Windows Presentation Foundation (WPF)
- Windows Forms (WinForms)
- Configura tu aplicación de escritorio para el empaquetado MSIX en Visual Studio