Compartir a través de


Manifiestos de aplicación

Un manifiesto de aplicación (también conocido como manifiesto de aplicación en paralelo o un manifiesto de fusión de ) es un archivo XML que describe e identifica los ensamblados compartidos y privados en paralelo a los que una aplicación debe enlazar en tiempo de ejecución. Deben ser las mismas versiones de ensamblado que se usaron 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 de archivo de manifiesto.

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

Elemento Atributos Obligatorio
de ensamblado de
manifestVersion
noInherit No
assemblyIdentity
tipo
nombre
de idioma de No
processorArchitecture No
de versión de
publicKeyToken No
de compatibilidad No
de aplicación de No
compatibles conOS No
id. de
maxversiontested No
id. de
de dependencia No
dependentAssembly No
de archivos de No
nombre
hashalg No
hash de No
activeableClass No
nombre
threadingModel
activeCodePage No
autoElevate No
disableTheming No
disableWindowFiltering No
pppAware No
pppAwareness No
gdiScaling No
highResolutionScrollingAware No
longPathAware No
impresoraDriverIsolation No
ultraHighResolutionScrollingAware No
msix No
heapType No
supportedArchitectures No
trustInfo No

Ubicación del archivo

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

Para obtener más información, consulta 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 hace 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 identificador de recurso <> segmento de la sintaxis).

example.exe.<identificador de recurso> .manifest

example.dll.<identificador de recurso> .manifest

Elementos

Los nombres de 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.

ensamblaje

Un elemento contenedor. Su primer subelemento debe ser un elemento noInherit o assemblyIdentity. Obligatorio.

El elemento ensamblado 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 ensamblado elemento tiene los atributos siguientes.

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

noInherit

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

El elemento noInherit es opcional y normalmente se omite. La mayoría de los ensamblados no funcionan correctamente mediante un contexto de activación sin heredar porque el ensamblado debe diseñarse explícitamente para administrar la propagación de su propio contexto de activación. El uso del elemento noInherit requiere que los ensamblados dependientes a los que hace referencia el manifiesto de aplicación tengan un elemento noInherit en su manifiesto de ensamblado .

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

assemblyIdentity

Como primer subelemento de un ensamblado de elemento, assemblyIdentity describe e identifica de forma única la aplicación propietaria de este manifiesto de aplicación. Como primer subelemento de un elemento de dependienteAssembly, 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 assemblyIdentity que coincida exactamente con el assemblyIdentity del propio manifiesto de ensamblado al que se hace referencia.

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

Atributo Descripción
tipo Especifica el tipo de ensamblado o aplicación. El valor debe ser win32 y todo en minúsculas. Obligatorio.
nombre Asigna nombres únicos a la aplicación o ensamblado. Use el formato siguiente para el nombre: Organization.Division.Name. Por ejemplo, Microsoft.Windows.mysampleApp. Obligatorio.
de idioma de Identifica el idioma de la aplicación o ensamblado. Si la aplicación o ensamblado es específica del lenguaje, especifique el código de lenguaje DHTML. En el assemblyIdentity de una aplicación destinada al uso mundial (neutral del lenguaje) omite el atributo de lenguaje.
En una assemblyIdentity de un ensamblado destinado a uso mundial (neutral del lenguaje), establezca el valor de language en *. Opcional.
processorArchitecture Especifica el procesador. Los valores válidos incluyen x86, amd64, arm y arm64. También puede especificar *, lo que garantiza que todas las plataformas están dirigidas. Opcional.
de versión de Especifica la aplicación o la versión del ensamblado. Use el formato de versión de cuatro partes: mmmmm.nnnnn.ooooo.ppppp. Cada una de las partes separadas por períodos puede ser de 0 a 65535 inclusive. Para obtener más información, vea versiones de ensamblado. Obligatorio.
publicKeyToken Cadena hexadecimal de 16 caracteres que representa los últimos 8 bytes del hash SHA-1 de la clave pública bajo 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. Necesario 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 de . No tiene atributos. Opcional. Los manifiestos de aplicación sin un elemento de compatibilidad tienen como valor predeterminado la compatibilidad de Windows Vista en Windows 7.

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

aplicación

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

supportedOS

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

Atributo Descripción
id. de Establezca el atributo Id en {e2011457-1546-43c5-a5fe-008deee3d3f0} para ejecutar la aplicación mediante la funcionalidad 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 mediante 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. de en Windows, consulta el windows 8 y el libro de guía de compatibilidad de 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 probarlo 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 active "Contexto del sistema operativo". En Windows 8.x, también puede encontrar esta columna disponible en el Administrador de tareas (administrador de tareas). El contenido de la columna muestra el valor más alto encontrado o "Windows Vista" como valor predeterminado.

maxversiontested

El elemento maxversiontested especifica las versiones de Windows en las que se probó la aplicación a partir de la versión mínima del sistema operativo que la aplicación admite hasta la versión máxima. Puede encontrar el conjunto completo de versiones aquí. Esto está pensado para que lo usen las aplicaciones de escritorio que usan islas XAML y que no se implementan en un paquete MSIX. Este elemento se admite en Windows 10, versión 1903 y versiones posteriores.

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

Atributo Descripción
id. de Establezca el atributo Id en una cadena de versión de 4 partes que especifique la versión máxima de Windows con la que se probó la aplicación. Por ejemplo, "10.0.18362.1" para Windows 10, versión 1903. Obligatorio.
<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>

dependencia

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

dependentAssembly

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

archivo

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

El elemento archivo tiene los atributos que se muestran en la tabla siguiente.

Atributo Descripción
nombre Nombre del archivo. Por ejemplo, Comctl32.dll. Obligatorio.
hashalg Algoritmo usado para crear un hash del archivo. Este valor debe ser SHA1. Opcional.
hash de Hash del archivo al que se hace referencia por nombre. Cadena hexadecimal de longitud en función 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 versiones posteriores. Para obtener más información, consulte este artículo.

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

El elemento activeableClass tiene los atributos siguientes.

Atributo Descripción
nombre Especifica el identificador de clase de la clase activable. Obligatorio.
threadingModel Representa el modelo de subprocesos de apartamento que se va a usar para activar un servidor en proceso. Los valores válidos incluyen both, STAo MTA. Consulte este artículo para obtener más información. Obligatorio.
<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, vea Usar 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 la página de códigos heredada que no es UTF-8 o páginas de códigos para una configuración regional específica para la compatibilidad de aplicaciones heredadas. Se recomienda encarecidamente que las aplicaciones modernas usen Unicode. En Windows 11, activeCodePage también se puede establecer en el valor heredado o 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 del sistema UTF-8, heredado revertirá el proceso a las páginas de códigos de 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 heredada solo se admite en manifiestos de Fusion y solo a partir de Windows 11.
  • Cuando se proporciona un nombre de configuración regional como en-US, la página de códigos del proceso se establecerá correctamente para esa página de códigos de configuración regional. Por ejemplo, Windows-1252 y 437 para en-USo 932 para ja-JP.

Este elemento se agregó por primera vez en Windows 10 versión 1903 (actualización de mayo de 2019). Puedes declarar esta propiedad y destino/ejecutar en compilaciones anteriores de Windows, pero debes controlar la detección y conversión de páginas de códigos heredadas como de costumbre. 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á habilitado. No tiene atributos. El archivo ejecutable debe estar firmado digitalmente por Windows Publisher. Para uso interno.

disableTheming

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

disableWindowFiltering

Especifica si se debe deshabilitar el filtrado de ventanas. TRUE deshabilita el filtrado de ventanas para poder enumerar ventanas envolventes desde el escritorio. 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>

pppAware

Especifica si el proceso actual es compatible con puntos por pulgada (ppp).

Windows 10, versión 1607: El elemento pppAware se omite si el elemento pppAwareness está presente. Puedes incluir ambos elementos en un manifiesto si quieres especificar un comportamiento diferente 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 en función de la presencia del elemento pppAware y el texto que contiene. El texto del elemento no distingue mayúsculas de minúsculas.

Estado del elemento pppAware Descripción
Ausente El proceso actual no es consciente de forma predeterminada. Puede cambiar esta configuración mediante programación llamando a la función SetProcessDpiAwareness o SetProcessDPIAware.
Contiene "true" El proceso actual es compatible con ppp del sistema.
Contiene "false" Windows Vista, Windows 7 y Windows 8: El comportamiento es el mismo que cuando el pppAware de está ausente.
Windows 8.1 y Windows 10: El proceso actual no es consciente de ppp y no se puede cambiar mediante programación esta configuración llamando a la función SetProcessDpiAwareness o SetProcessDPIAware.
Contiene "true/pm" Windows Vista, Windows 7 y Windows 8: El proceso actual es compatible con ppp del sistema.
Windows 8.1 y Windows 10: El proceso actual es compatible con ppp por monitor.
Contiene "por monitor" Windows Vista, Windows 7 y Windows 8: El comportamiento es el mismo que cuando el pppAware de está ausente.
Windows 8.1 y Windows 10: El proceso actual es compatible con ppp por monitor.
Contiene cualquier otra cadena Windows Vista, Windows 7 y Windows 8: El comportamiento es el mismo que cuando el pppAware de está ausente.
Windows 8.1 y Windows 10: El proceso actual no es consciente de ppp y no se puede cambiar mediante programación esta configuración llamando a la función SetProcessDpiAwareness o SetProcessDPIAware.

Para obtener más información sobre la configuración de reconocimiento de ppp, consulta Desarrollo de aplicaciones de escritorio de ppp alto en Windows.

pppAware 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>

pppAwareness

Especifica si el proceso actual es compatible con puntos por pulgada (ppp).

La versión mínima del sistema operativo que admite el elemento pppAwareness es Windows 10, versión 1607. Para las versiones que admiten el elemento pppAwareness de, el pppAwareness invalida el elemento pppAware. Puedes incluir ambos elementos en un manifiesto si quieres especificar un comportamiento diferente para Windows 10, versión 1607 que para una versión anterior del sistema operativo.

El elemento pppAwareness 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 diferentes comportamientos admitidos en futuras versiones del sistema operativo Windows.

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

estado del elemento pppAwareness: Descripción
El elemento está ausente El elemento pppAware especifica si el proceso es compatible con ppp.
No contiene elementos reconocidos El proceso actual no es consciente de forma predeterminada. Puede cambiar esta configuración mediante programación llamando a la función SetProcessDpiAwareness o SetProcessDPIAware.
El primer elemento reconocido es "system" El proceso actual es compatible con ppp del sistema.
El primer elemento reconocido es "permonitor" El proceso actual es compatible con ppp por monitor.
El primer elemento reconocido es "permonitorv2" El proceso actual usa el contexto de reconocimiento de ppp por monitor-v2. Este elemento solo se reconocerá en Windows 10 versión 1703 o posterior.
El primer elemento reconocido es "no consciente" El proceso actual no es consciente de ppp. No se puede cambiar esta configuración mediante programación llamando a la funciónSetProcessDpiAwarenesso función setProcessDPIAware.

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

pppAwareness 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 a la propia aplicación. Esto puede ser útil para las aplicaciones GDI que ya no se actualizan activamente.

Este elemento no puede escalar gráficos no vectoriales (como mapas de bits, iconos o barras de herramientas). Además, los gráficos y el texto que aparecen en mapas de bits construidos dinámicamente por las aplicaciones tampoco se pueden escalar mediante este elemento. Para obtener más información, consulte Mejorar la experiencia de valores altos de PPP en aplicaciones de escritorio basadas en GDI.

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

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 que superan los MAX_PATH de longitud. 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 del proceso en el que se ejecuta el administrador de trabajos de impresión. Compatibilidad con el aislamiento de controladores de impresora iniciado en Windows 7 y Windows Server 2008 R2. Una aplicación puede declarar el aislamiento del controlador de impresora en su manifiesto de 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 está habilitado el reconocimiento de desplazamiento ultra-alta resolución. 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 Conceder identidad de paquete mediante el empaquetado con ubicación externa). Este elemento se admite en Windows 10, versión 2004 y versiones 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
del publicador de Describe la información del publicador. Este valor debe coincidir con el atributo Publisher en el elemento Identity del manifiesto de paquete de la aplicación empaquetada con ubicación externa.
packageName Describe el contenido del paquete. Este valor debe coincidir con el atributo Name del elemento Identity del manifiesto de paquete de la aplicación empaquetada con ubicación externa.
applicationId Identificador único de la aplicación. Este valor debe coincidir con el atributo id. de en el elemento application de del manifiesto de paquete de la 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

Invalida la implementación predeterminada del montón para las API de montón win32 de 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 reducirá el uso general de la memoria. Este elemento se admite en Windows 10, versión 2004 (compilación 19041) y versiones posteriores.
  • Se omiten todos los demás 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

En el caso de los ejecutables de .NET Framework de solo IL, especifica una lista de arquitecturas de procesador nativas con las que la aplicación es compatible. Puede contener uno o varios de los valores siguientes, 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 compatibles con 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 afecta el control de cuentas de usuario (UAC) a la aplicación.

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

Valor Descripción
asInvoker La aplicación se ejecuta en el mismo nivel de permiso que el proceso que lo inició. Puede elevar la aplicación a un nivel de permisos superior seleccionando Ejecutar como administrador.
requireAdministrator La aplicación se ejecuta mediante permisos de administrador. El usuario que inicia la aplicación debe ser miembro del grupo Administradores. Si el proceso de apertura no se ejecuta con permisos administrativos, el sistema solicita las credenciales.
más alta disponible La aplicación se ejecuta en el nivel de permisos más alto que puede. Si el usuario que inicia la aplicación es miembro del grupo Administradores, esta opción es la misma que level="requireAdministrator". Si el nivel de permiso más alto disponible es mayor que el nivel del proceso de apertura, el sistema solicita las credenciales.

Establecer el nivel en highestAvailable garantiza que la aplicación se ejecutará correctamente con los usuarios que son miembros del grupo Administradores y aquellos que no lo son. Si la aplicación solo puede funcionar con acceso administrativo al sistema, marcando la aplicación con un nivel de ejecución solicitado de requireAdministrator garantiza que el sistema identifica este programa como una aplicación administrativa y realiza los pasos de elevación necesarios.

De forma predeterminada, el enlazador de Visual C++ inserta un fragmento de 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 desea que la aplicación omita los niveles de protección de la interfaz de usuario y impulse la entrada a ventanas de permisos superiores en el escritorio. Establezca este atributo en true solo para las aplicaciones de accesibilidad de la interfaz de usuario. El valor predeterminado es false. Se pueden aplicar restricciones adicionales de la configuración de directiva de seguridad, consulte Control de cuentas de usuario: eleva solo las aplicaciones UIAccess instaladas en ubicaciones seguras. Para obtener más información, consulte Consideraciones de seguridad para las tecnologías de asistencia.

Al especificar nodo requestedExecutionLevel, se deshabilitará la virtualización de archivos y registros. Si desea usar la virtualización de archivos y registros 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 SampleAssembly en paralelo.

<?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>