Manifiestos de aplicación

Un manifiesto de aplicación (también conocido como manifiesto de aplicación en paralelo o manifiesto de fusión) es un archivo XML en el que se describen e identifican los ensamblados en paralelo compartidos y privados a los que una aplicación debe enlazarse en tiempo de ejecución. Deben ser las mismas versiones de ensamblado utilizadas para probar la aplicación. Los manifiestos de aplicación también pueden describir los metadatos de los archivos que son privados para la aplicación.

Para obtener una lista completa del esquema XML, vea Esquema del archivo de manifiesto.

Los manifiestos de aplicación tienen los siguientes elementos y atributos.

Elemento Atributos Obligatorio
assembly
manifestVersion
noInherit No
assemblyIdentity
type
name
language No
processorArchitecture No
version
publicKeyToken No
compatibility No
application No
supportedOS No
Id
maxversiontested No
Id
dependencia No
dependentAssembly No
file No
name
hashalg No
hash No
activatableClass No
name
threadingModel
activeCodePage No
autoElevate No
disableTheming No
disableWindowFiltering No
dpiAware No
dpiAwareness No
gdiScaling No
highResolutionScrollingAware No
longPathAware No
printerDriverIsolation No
ultraHighResolutionScrollingAware No
msix No
heapType No
supportedArchitectures No
trustInfo No

Ubicación de los archivos

Si es posible, debe insertar el manifiesto de aplicación como recurso en el archivo .exe o .dll de la aplicación. Si no puede hacerlo, puede colocar el archivo de manifiesto de aplicación en el mismo directorio que .exe o .dll.

Para obtener más información, consulte Instalación de ensamblados en paralelo.

Nombre de archivo

Por convención, un manifiesto de aplicación debe tener el mismo nombre que el archivo ejecutable de la aplicación, con la extensión .manifest anexada.

Por ejemplo, un manifiesto de aplicación que haga referencia a example.exe o example.dll debe usar la siguiente sintaxis de nombre de archivo (si Id. de recurso es 1, puede omitir el segmento <Id. de recurso> de la sintaxis).

example.exe.<Id. de recurso>.manifest

example.dll.<Id. de recurso>.manifest

Elementos

Los nombres de los elementos y atributos distinguen mayúsculas de minúsculas. Los valores de los elementos y atributos no distinguen mayúsculas de minúsculas, excepto el valor del atributo de tipo.

ensamblado

Es un elemento contenedor. Su primer subelemento debe ser un elemento noInherit o assemblyIdentity. Necesario.

El elemento assembly debe estar en el espacio de nombres urn:schemas-microsoft-com:asm.v1. Los elementos secundarios del ensamblado también deben estar en este espacio de nombres, mediante herencia o etiquetado.

El elemento assembly tiene los siguientes atributos.

Atributo Descripción
manifestVersion El atributo manifestVersion debe establecerse en 1.0.

noInherit

Incluya este elemento en un manifiesto de aplicación para establecer los contextos de activación generados a partir del manifiesto con la marca "no inherit". Cuando esta marca no se establece en un contexto de activación y ese contexto está activo, lo heredan los subprocesos nuevos en el mismo proceso, ventanas, procedimientos de ventanas y llamadas a procedimientos asincrónicos. Al establecer esta marca, se impide que el nuevo objeto herede el contexto activo.

El elemento noInherit es opcional y suele omitirse. La mayoría de los ensamblados no funcionan correctamente con un contexto de activación que no se hereda porque el ensamblado debe estar diseñado explícitamente para administrar la propagación de su propio contexto de activación. El uso del elemento noInherit requiere que cualquier ensamblado dependiente al que haga referencia el manifiesto de aplicación tenga un elemento noInherit en su manifiesto de aplicación.

Si se usa noInherit en un manifiesto, debe ser el primer subelemento del elemento assembly. El elemento assemblyIdentity debe aparecer inmediatamente después del elemento noInherit. Si no se utiliza noInherit, assemblyIdentity debe ser el primer subelemento del elemento assembly. El elemento noInherit no tiene elementos secundarios. No es un elemento válido en los manifiestos de ensamblado.

assemblyIdentity

Como primer subelemento de un elemento assembly, assemblyIdentity describe e identifica de forma única la aplicación a la que pertenece este manifiesto de aplicación. Como primer subelemento de un elemento dependentAssembly, assemblyIdentity describe un ensamblado en paralelo requerido por la aplicación. Tenga en cuenta que todos los ensamblados a los que se hace referencia en el manifiesto de aplicación requieren un elemento assemblyIdentity que coincida exactamente con el elemento assemblyIdentity del manifiesto de ensamblado propio del ensamblado al que se hace referencia.

El elemento assemblyIdentity tiene los siguientes atributos. No tiene subelementos.

Atributo Descripción
type Especifica el tipo de ensamblado o aplicación. El valor debe ser win32 con todo en minúsculas. Necesario.
name Asigna nombres únicos a la aplicación o ensamblado. Use el siguiente formato para el nombre: Organization.Division.Name. Por ejemplo, Microsoft.Windows.mysampleApp. Necesario.
language Identifica el lenguaje de la aplicación o ensamblado. Si la aplicación o el ensamblado son específicos de un lenguaje, especifique el código de lenguaje DHTML. En el elemento assemblyIdentity de una aplicación destinada al uso internacional (independiente del lenguaje), omita el atributo de lenguaje.
En un elemento assemblyIdentity de un ensamblado destinado al uso internacional (independiente del lenguaje), establezca el valor del lenguaje en *. Opcional.
processorArchitecture Especifica el procesador. Entre los valores válidos se incluyen x86, amd64, arm y arm64. También puede especificar *, lo que garantiza que se dirige a todas las plataformas. Opcional.
version Especifica la versión de la aplicación o del ensamblado. Use el formato de versión de cuatro partes: mmmmm.nnnnn.ooooo.ppppp. El valor de cada una de las partes separadas por puntos puede ser de 0 a 65535 inclusive. Para obtener más información, consulte Versiones de ensamblado. Necesario.
publicKeyToken Cadena hexadecimal de 16 caracteres que representa los últimos 8 bytes del hash SHA-1 de la clave pública en la que se firma la aplicación o el ensamblado. La clave pública que se usa para firmar el catálogo debe ser de 2048 bits o superior. Obligatorio para todos los ensamblados en paralelo compartidos.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 ...
<dependency>
   <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
       />
   </dependentAssembly>
</dependency>
...
</assembly>

compatibilidad

Contiene al menos una aplicación. No tiene atributos. Opcional. Los manifiestos de aplicación que no tengan un elemento compatibility tienen compatibilidad de Windows Vista en Windows 7 de forma predeterminada.

El elemento compatibility debe estar en el espacio de nombres urn:schemas-microsoft-com:compatibility.v1. Los elementos secundarios de compatibility también deben estar en este espacio de nombres, por herencia o por etiquetado.

application

Contiene al menos un elemento supportedOS. A partir de Windows 10, versión 1903, también puede contener un elemento maxversiontested opcional. No tiene atributos. Opcional.

supportedOS

El elemento supportedOS tiene el atributo siguiente. No tiene subelementos.

Atributo Descripción
Id Establezca el atributo Id en {e2011457-1546-43c5-a5fe-008deee3d3f0} para ejecutar la aplicación con la funcionalidad de Vista. Esto puede permitir que una aplicación diseñada para Windows Vista se ejecute en un sistema operativo posterior.
Establezca el atributo Id en {35138b9a-5d96-4fbd-8e2d-a2440225f93a} para ejecutar la aplicación con la funcionalidad de Windows 7.
Las aplicaciones que admiten la funcionalidad de Windows Vista, Windows 7 y Windows 8 no requieren manifiestos independientes. En este caso, agregue los GUID para todos los sistemas operativos Windows.
Para obtener información sobre el comportamiento del atributo Id en Windows, consulte la Guía de compatibilidad de Windows 8 y Windows Server 2012.
Los GUID siguientes corresponden a los sistemas operativos indicados:
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} -> Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 y Windows Server 2022
{1f676c76-80e1-4239-95bb-83d0f6d0da78} -> Windows 8.1 y Windows Server 2012 R2
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} -> Windows 8 y Windows Server 2012
{35138b9a-5d96-4fbd-8e2d-a2440225f93a} -> Windows 7 y Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0} -> Windows Vista y Windows Server 2008
Para probar esto en Windows 7 o Windows 8.x, ejecute el Monitor de recursos (resmon), vaya a la pestaña CPU, haga clic con el botón derecho en las etiquetas de columna, "Seleccionar columna...", y seleccione "Contexto del sistema operativo". En Windows 8.x, también puede encontrar esta columna disponible en el Administrador de tareas (taskmgr). El contenido de la columna muestra el valor más alto que se encuentra o "Windows Vista" como valor predeterminado.

maxversiontested

El elemento maxversiontested especifica las versiones de Windows en las que se ha probado la aplicación, desde la versión mínima del sistema operativo que la aplicación admite hasta la versión máxima. Aquí puede encontrar el conjunto completo de las versiones. Está pensado para que lo usen las aplicaciones de escritorio que utilizan islas XAML y que no se implementan en un paquete MSIX. Este elemento se admite en Windows 10, versión 1903 y posteriores.

El elemento maxversiontested tiene el atributo siguiente. No tiene subelementos.

Atributo Descripción
Id Establezca el atributo Id en una cadena de versión de 4 partes que especifique la versión máxima de Windows en la que se ha probado la aplicación. Por ejemplo, "10.0.18362.1" para Windows 10, versión 1903. Necesario.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
            <!-- Windows 10, version 1903 -->
            <maxversiontested Id="10.0.18362.1"/>
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
        </application>
    </compatibility>
...
</assembly>

dependency

Contiene al menos un elemento dependienteAssembly. No tiene atributos. Opcional.

dependentAssembly

El primer subelemento de dependentAssembly debe ser un elemento assemblyIdentity que describa un ensamblado en paralelo requerido por la aplicación. Cada dependentAssembly debe estar incluido exactamente dentro de una dependencia. No tiene atributos.

file

Especifica los archivos que son privados para la aplicación. Opcional.

El elemento file contiene los atributos que se muestran en la tabla siguiente.

Atributo Description
name Nombre del archivo. Por ejemplo, Comctl32.dll. Necesario.
hashalg Algoritmo usado para crear un hash del archivo. Este valor debe ser SHA1. Opcional.
hash Hash del archivo al que se hace referencia por el nombre. Cadena hexadecimal cuya longitud depende del algoritmo hash. Opcional.

activatableClass

Permite que las aplicaciones de escritorio no empaquetadas usen componentes de Windows Runtime (WinRT) definidos por el usuario. Este elemento se admite en Windows 10, versión 1903 y posteriores. Para obtener más información, consulte este artículo.

El elemento activatableClass debe estar en el espacio de nombres urn:schemas-microsoft-com:winrt.v1.

El elemento activatableClass tiene los atributos siguientes.

Atributo Description
name Especifica el identificador de la clase activable. Necesario.
threadingModel Representa el modelo de apartamento de subproceso que se va a usar para activar un servidor en proceso. Los valores válidos incluyen both, STA o MTA. Consulte este artículo para obtener más información. Necesario.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
    <activatableClass
        name="WinRTComponent.MessageHolder"
        threadingModel="both"
        xmlns="urn:schemas-microsoft-com:winrt.v1"
     />
</file>
...
</assembly>

activeCodePage

En Windows 10, este elemento fuerza un proceso para usar UTF-8 como página de códigos del proceso. Para obtener más información, consulte Uso de la página de códigos UTF-8. En Windows 10, el único valor válido para activeCodePage es UTF-8.

A partir de Windows 11, este elemento también permite seleccionar una página de códigos heredada que no sea UTF-8, o bien páginas de códigos de una configuración regional específica para la compatibilidad con aplicaciones heredadas. Se recomienda encarecidamente que las aplicaciones modernas usen Unicode. En Windows 11, activeCodePage también puede establecerse en el valor Legacy o en un nombre de configuración regional, como en-US o ja-JP.

  • En las máquinas configuradas en una página de códigos activa de un sistema UTF-8, Legacy revertirá el proceso a las páginas de códigos de la configuración regional del sistema. Si la configuración regional del sistema no tiene páginas de códigos definidas, se usará Windows-1252/437. La configuración de página de códigos Legacy solo se admite en los manifiestos Fusion y únicamente a partir de Windows 11.
  • Cuando se proporciona un nombre de configuración regional como en-US, la página de códigos de proceso se establecerá adecuadamente para la página de códigos de esa configuración regional. Por ejemplo, Windows-1252 y 437 para en-US o 932 para ja-JP.

Este elemento se agregó por primera vez en Windows 10, versión 1903 (actualización de mayo de 2019). Puede declarar esta propiedad y destinarla o ejecutarla en compilaciones anteriores de Windows, pero debe controlar la detección y la conversión de páginas de códigos heredadas de la forma habitual. Este elemento no tiene atributos.

En el ejemplo siguiente se muestra cómo usar este elemento para forzar que el proceso actual use UTF-8 como página de códigos del proceso.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> 
      <activeCodePage>UTF-8</activeCodePage> 
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

autoElevate

Especifica si la elevación automática está habilitada. TRUE indica que está habilitada. No tiene atributos. El archivo ejecutable debe estar firmado digitalmente por Windows Publisher. Para uso interno.

disableTheming

Especifica si la asignación de un tema a los elementos de la interfaz de usuario se ha deshabilitado. TRUE indica que se ha deshabilitado. No tiene atributos.

disableWindowFiltering

Especifica si debe deshabilitarse el filtrado de ventanas. TRUE deshabilita el filtrado de ventanas, de forma que puede enumerar las ventanas envolventes desde el escritorio. El elemento disableWindowFiltering se agregó en Windows 8 y no tiene atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <disableWindowFiltering>true</disableWindowFiltering>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAware

Especifica si el proceso actual tiene reconocimiento de puntos por pulgada (ppp).

Windows 10, versión 1607: el elemento dpiAware se ignora si el elemento dpiAwareness está presente. Puede incluir ambos elementos en un manifiesto si quiere especificar un comportamiento distinto para Windows 10, versión 1607, que para una versión anterior del sistema operativo.

En la tabla siguiente se describe el comportamiento que se obtiene basado en la presencia del elemento dpiAware y el texto que contiene. El texto del elemento no distingue mayúsculas de minúsculas.

Estado del elemento dpiAware Descripción
Absent El proceso actual no tiene reconocimiento de ppp de forma predeterminada. Puede cambiar esta configuración mediante programación si llama a la función SetProcessDpiAwareness o SetProcessDPIAware.
Contiene "true" El proceso actual tiene reconocimiento de ppp del sistema.
Contiene "false" Windows Vista, Windows 7 y Windows 8: el comportamiento es el mismo que cuando dpiAware está ausente.
Windows 8.1 y Windows 10: el proceso actual no tiene reconocimiento de ppp y esta configuración no se puede cambiar mediante programación al llamar a la función SetProcessDpiAwareness o SetProcessDPIAware.
Contiene "true/pm" Windows Vista, Windows 7 y Windows 8: el proceso actual tiene reconocimiento de ppp del sistema.
Windows 8.1 y Windows 10: el proceso actual tiene reconocimiento de ppp por monitor.
Contiene "per monitor" Windows Vista, Windows 7 y Windows 8: el comportamiento es el mismo que cuando dpiAware está ausente.
Windows 8.1 y Windows 10: el proceso actual tiene reconocimiento de ppp por monitor.
Contiene cualquier otra cadena Windows Vista, Windows 7 y Windows 8: el comportamiento es el mismo que cuando dpiAware está ausente.
Windows 8.1 y Windows 10: el proceso actual no tiene reconocimiento de ppp y esta configuración no se puede cambiar mediante programación al llamar a la función SetProcessDpiAwareness o SetProcessDPIAware.

Para obtener más información sobre la configuración de reconocimiento de ppp, consulte Desarrollo de aplicaciones de escritorio con valores altos de ppp en Windows.

dpiAware no tiene atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAwareness

Especifica si el proceso actual tiene reconocimiento de puntos por pulgada (ppp).

La versión mínima del sistema operativo que admite el elemento dpiAwareness es Windows 10, versión 1607. En el caso de las versiones que admiten el elemento dpiAwareness, la instancia de dpiAwareness reemplaza al elemento dpiAware. Puede incluir ambos elementos en un manifiesto si quiere especificar un comportamiento distinto para Windows 10, versión 1607, que para una versión anterior del sistema operativo.

El elemento dpiAwareness puede contener un solo elemento o una lista de elementos separados por comas. En este último caso, se usa el primer elemento (situado más a la izquierda) de la lista reconocida por el sistema operativo. De este modo, puede especificar distintos comportamientos admitidos en futuras versiones del sistema operativo Windows.

En la tabla siguiente se describe el comportamiento que se obtiene basado en la presencia del elemento dpiAwareness y el texto que contiene en su elemento reconocido situado más a la izquierda. El texto del elemento no distingue mayúsculas de minúsculas.

Estado del elemento dpiAwareness: Descripción
El elemento está ausente El elemento dpiAware especifica si el proceso tiene reconocimiento de ppp.
No contiene elementos reconocidos El proceso actual no tiene reconocimiento de ppp de forma predeterminada. Puede cambiar esta configuración mediante programación si llama a la función SetProcessDpiAwareness o SetProcessDPIAware.
El primer elemento reconocido es "system" El proceso actual tiene reconocimiento de ppp del sistema.
El primer elemento reconocido es "permonitor" El proceso actual tiene reconocimiento de ppp por monitor.
El primer elemento reconocido es "permonitorv2" El proceso actual usa el contexto de reconocimiento de ppp per-monitor-v2. Este elemento solo se reconocerá en Windows 10, versión 1703 o posteriores.
El primer elemento reconocido es "unaware" El proceso actual no tiene reconocimiento de ppp. No puede cambiar esta configuración mediante programación si llama a la función SetProcessDpiAwareness o SetProcessDPIAware.

Para obtener más información sobre la configuración de reconocimiento de ppp compatible con este elemento, consulte DPI_AWARENESS y DPI_AWARENESS_CONTEXT.

dpiAwareness no tiene atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

gdiScaling

Especifica si el escalado de GDI está habilitado. La versión mínima del sistema operativo que admite el elemento gdiScaling es Windows 10, versión 1703.

El marco GDI (interfaz de dispositivo gráfico) puede aplicar el escalado de ppp a primitivos y texto por monitor sin actualizaciones de la aplicación en sí. Esto puede resultar útil para las aplicaciones GDI que ya no se actualizan de forma activa.

Este elemento no puede escalar gráficos no vectoriales (como mapas de bits, iconos o barras de herramientas). Además, este elemento tampoco puede escalar los gráficos ni el texto que aparecen en mapas de bits creados por aplicaciones de forma dinámica. Para obtener más información, consulte Mejora de la experiencia de valores altos de PPP en aplicaciones de escritorio basadas en GDI.

Puede cambiar esta configuración mediante programación si llama a la función SetThreadDpiAwarenessContext o SetProcessDpiAwarenessContext con el valor DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED.

TRUE indica que este elemento está habilitado. No tiene atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

highResolutionScrollingAware

Especifica si está habilitado el reconocimiento del desplazamiento de alta resolución. TRUE indica que está habilitado. No tiene atributos.

longPathAware

Habilita rutas de acceso largas, con una longitud que supera el valor de MAX_PATH. Este elemento se admite en Windows 10, versión 1607 y posteriores. Para obtener más información, consulte este artículo.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <ws2:longPathAware>true</ws2:longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

printerDriverIsolation

Especifica si el aislamiento del controlador de impresora está habilitado. TRUE indica que está habilitado. No tiene atributos. El aislamiento del controlador de impresora mejora la confiabilidad del servicio de impresión de Windows al permitir que los controladores de impresora se ejecuten en procesos independientes de aquel en el que se ejecuta el administrador de trabajos de impresión. La compatibilidad con el aislamiento de controladores de impresora comenzó en Windows 7 y Windows Server 2008 R2. Una aplicación puede declarar el aislamiento del controlador de impresora en su manifiesto de la aplicación para aislarse del controlador de impresora y mejorar su confiabilidad. Es decir, la aplicación no se bloqueará si el controlador de impresora tiene un error.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <printerDriverIsolation>true</printerDriverIsolation>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

ultraHighResolutionScrollingAware

Especifica si el reconocimiento de desplazamiento de resolución ultraalta está habilitado. TRUE indica que está habilitado. No tiene atributos.

msix

Especifica la información de identidad de un paquete con ubicación externa para la aplicación actual (consulte Concesión de la identidad del paquete mediante el empaquetado con ubicación externa). Este elemento se admite en Windows 10, versión 2004 y posteriores.

El elemento msix debe estar en el espacio de nombres urn:schemas-microsoft-com:msix.v1. Tiene los atributos que se muestran en la tabla siguiente.

Atributo Descripción
publisher Describe la información del publicador. Este valor debe coincidir con el atributo Publisher del elemento Identity en el manifiesto de paquete de su aplicación empaquetada con ubicación externa.
packageName Describe el contenido del paquete. Este valor debe coincidir con el atributo Name en el elemento Identity en el manifiesto de paquete de su aplicación empaquetada con ubicación externa.
applicationId Identificador único de la aplicación. Este valor debe coincidir con el atributo Id en el elemento Application en el manifiesto de paquete de su aplicación empaquetada con ubicación externa.
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Contoso.PhotoStoreApp"/>
  <msix xmlns="urn:schemas-microsoft-com:msix.v1"
          publisher="CN=Contoso"
          packageName="ContosoPhotoStore"
          applicationId="ContosoPhotoStore"
        />
</assembly>

heapType

Reemplaza a la implementación predeterminada del montón para las API del montón Win32 que se van a usar.

  • El valor SegmentHeap indica que se usará el montón de segmentos. El montón de segmentos es una implementación moderna del montón que normalmente reduce el uso general de la memoria. Este elemento se admite en Windows 10, versión 2004 (compilación 19041) y versiones posteriores.
  • Se ignorará al resto de los otros valores.

Este elemento no tiene atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
      <heapType>SegmentHeap</heapType>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

supportedArchitectures

Para ejecutables .NET solo de IL, especifica una lista de arquitecturas de procesador nativas con las que la aplicación es compatible. Puede contener uno o varios de los siguientes valores, separados por espacios:

  • amd64
  • arm64

Este elemento no tiene atributos.

Este elemento se admite en Windows 11, versión 24H2 y posteriores.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
      <supportedArchitectures>amd64 arm64</supportedArchitectures>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

trustInfo

Todas las aplicaciones conformes a UAC deben tener un nivel de ejecución solicitado agregado al manifiesto de aplicación. Los niveles de ejecución solicitados especifican los privilegios necesarios para una aplicación. Para obtener más información, consulte Cómo el Control de cuentas de usuario (UAC) afecta a la aplicación.

El nivel de ejecución solicitado se especifica con el atributo level del valor descendiente requestedExecutionLevel del elemento trustInfo. Los valores permitidos para level son:

Valor Descripción
asInvoker La aplicación se ejecuta con el mismo nivel de permiso que el proceso que la inició. La aplicación se puede elevar a un nivel de permisos superior si seleccionaEjecutar como administrador.
requireAdministrator La aplicación se ejecuta con permisos de administrador. El usuario que inicia la aplicación debe ser miembro del grupo Administradores. Si el proceso de apertura no se está ejecutando con los permisos administrativos, el sistema solicitará las credenciales.
highestAvailable La aplicación se ejecuta con el nivel de permisos más alto posible para esta. Si el usuario que inicia la aplicación es miembro del grupo Administradores, esta opción es igual que level="requireAdministrator". Si el máximo nivel de permiso disponible es superior al nivel del proceso de apertura, el sistema solicitará las credenciales.

Al establecer el nivel en highestAvailable se garantiza que la aplicación se ejecutará correctamente tanto con usuarios que son miembros del grupo Administradores como con aquellos que no lo son. Si la aplicación solo puede funcionar con acceso administrativo al sistema, al marcarla con un nivel de ejecución solicitado de requireAdministrator se garantiza que el sistema identifica este programa como aplicación administrativa y se llevan a cabo los pasos de elevación pertinentes.

De forma predeterminada, el enlazador de Visual C++ incrusta un fragmento del UAC en el manifiesto de una aplicación con un nivel de ejecución de asInvoker.

El elemento requestedExecutionLevel también tiene un atributo opcional uiAccess. Establezca este valor en true si quiere que la aplicación omita los niveles de protección de la interfaz de usuario y dirija las entradas de datos a ventanas con un nivel de permisos superior en el escritorio. Establezca este atributo en true solo para aplicaciones relacionadas con la accesibilidad de la interfaz de usuario. Su valor predeterminado es false. Puede que se apliquen restricciones adicionales de la configuración de directiva de seguridad; consulte Control de cuentas de usuario: elevar solo aplicaciones UIAccess instaladas en ubicaciones seguras. Para obtener más información, consulte Consideraciones de seguridad para las tecnologías de asistencia.

Al especificar el nodo requestedExecutionLevel, se deshabilitará la virtualización de archivos y del Registro. Si quiere usar Virtualización de archivos y del Registro para la compatibilidad con versiones anteriores, omita el nodo requestedExecutionLevel.

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    </requestedPrivileges>
  </security>
</trustInfo>

Ejemplo

A continuación, se muestra un ejemplo de un manifiesto de aplicación para una aplicación denominada MySampleApp.exe. La aplicación consume el ensamblado en paralelo SampleAssembly.

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
      </dependentAssembly>
   </dependency>
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
         <!-- Windows 10 and Windows 11 -->
         <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
         <!-- Windows 8.1 -->
         <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
         <!-- Windows 8 -->
         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
         <!-- Windows 7 -->
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
         <!-- Windows Vista -->
         <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
      </application>
   </compatibility>
</assembly>