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.
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 aplicaciones appContainer automáticamente. 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. Pero es especialmente fácil usar AppContainer si empaqueta con 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) y/o posterior, en lugar de establecer EntryPoint, puede establecer uap10:TrustLevel y uap10:RuntimeBehavior (después de declarar el prefijo de 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 MSET de un solo proyecto; que se recomienda y que es el valor predeterminado para los nuevos proyectos de WinUI 3. Para obtener más información, consulta Empaquetar la aplicación con MSI de un solo proyecto.
Pero es posible que tenga un proyecto de WinUI 3 que data de antes de la introducción de la característica MSIX de un solo proyecto. En cuyo caso, tendrá dos proyectos en la solución: el proyecto de aplicación y un proyecto de empaquetado de aplicaciones de Windows adicional. Si puede migrar su proyecto a MSI de un solo proyecto, entonces eso es ideal. Y podrá seguir las instrucciones de la sección anterior. Para obtener más información, consulta Empaquetar la aplicación con MSI 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 proyecto de empaquetado de aplicaciones de Windows 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 la ventana Propiedades de Visual Studio (no en las propiedades del proyecto), en la propiedad Nivel de confianza , elija el valor de Confianza parcial.
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 eliminarlo <rescap:Capability Name="runFullTrust" />
del archivo del proyecto de Package.appxmanifest
empaquetado.
Configuración de un proyecto de aplicación de Windows (aplicación de tipo WndProc de C++ Win32) para AppContainer
Esta sección es para usted si tiene un proyecto de tipo WndProc de C++ Win32 que se creó con la plantilla de proyecto de proyecto de aplicación de Windows . El primer paso, en pocas palabras, es agregar a la solución un proyecto de empaquetado de aplicaciones de Windows de C++. Hay más detalles sobre los pasos exactos en Configuración de la 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 manifiesto de la aplicación del elemento obligatorio 'PhoneIdentity'". Si eso sucede, edite el archivo del proyecto de Package.appxmanifest
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 de Windows Presentation Foundation (WPF) que se creó con la plantilla de proyecto de aplicación WPF de C#. Eso le dará un proyecto .NET; y es diferente de la plantilla de proyecto denominada Aplicación WPF (.NET Framework). O bien,
- un proyecto de aplicación de Windows Forms (WinForms) que se creó con la plantilla de proyecto de aplicación de Windows Forms de C#. Eso le dará un proyecto .NET; y es diferente de la plantilla de proyecto denominada Aplicación de Windows Forms (.NET Framework).
El primer paso, en pocas palabras, es agregar a la solución un proyecto de empaquetado de aplicaciones de Windows de C#. Hay más detalles sobre los pasos exactos en Configuración de la aplicación de escritorio para el empaquetado de MSIX en Visual Studio.
A continuación, expanda el nodoAplicaciones de dependencias> del proyecto de empaquetado y seleccione el nodo que representa la referencia al proyecto de WPF o WinForms. A continuación, en la ventana Propiedades de Visual Studio (no en las propiedades del proyecto), en la propiedad Nivel de confianza , elija el valor de Confianza parcial.
Temas relacionados
- 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)
- Configurar la aplicación de escritorio para el empaquetado MSIX en Visual Studio