Pruebas del Kit para la certificación de aplicaciones en Windows

El Kit para la certificación de aplicaciones en Windows contiene diversas pruebas que te ayudan a garantizar que tu aplicación esté lista para publicarse en Microsoft Store. Las pruebas se enumeran a continuación con sus criterios, detalles y acciones recomendadas en caso de error.

Implementación y pruebas de inicio

Supervisa la aplicación durante la prueba de certificación para registrar cuándo se bloquea o se cuelga.

Segundo plano

Las aplicaciones que dejan de responder o se bloquean pueden originar pérdidas de datos al usuario y que su experiencia no sea buena.

Esperamos que las aplicaciones funcionen correctamente sin usar los modos de compatibilidad de Windows, mensajes de AppHelp o archivos de compatibilidad.

Las aplicaciones no deben enumerar archivos DLL para cargar en la clave del Registro HKEY-LOCAL-MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit-DLLs.

Detalles de las pruebas

Probamos la estabilidad y resistencia de la aplicación durante las pruebas de certificación.

El Kit para la certificación de aplicaciones en Windows llama a IApplicationActivationManager::ActivateApplication para iniciar las aplicaciones. Para que ActivateApplication inicie una aplicación, el Control de cuentas de usuario (UAC) debe estar habilitado y la pantalla debe tener una resolución de al menos 1024 x 768 o 768 x 1024. Si alguna de estas condiciones no se cumple, tu aplicación no pasará esta prueba.

Acciones correctivas

Asegúrate de que UAC esté habilitado en el equipo de prueba.

Asegúrate de ejecutar la prueba en un equipo que tenga una pantalla lo suficientemente amplia.

Si tu aplicación no puede iniciarse aun cuando la plataforma de prueba cumple con los requisitos de ActivateApplication, puedes solucionar el problema revisando el registro de eventos de activación. Para encontrar estas entradas en el registro de eventos:

  1. Abra eventvwr.exe y vaya a la carpeta Registro de aplicaciones y servicios\Microsoft\Windows\Immersive-Shell folder.
  2. Filtra la vista para que se muestren los identificadores de eventos: 5900-6000.
  3. Revisa las entradas del registro para encontrar información que pueda explicar por qué la aplicación no se inicia.

Soluciona los problemas del archivo mediante identificación y corrección. Recompila y vuelve a probar la aplicación. También puedes comprobar si en la carpeta de registro del Kit para la certificación de aplicaciones de Windows se generó un archivo de volcado que se pueda usar para depurar la aplicación.

Prueba de inicio de versión de plataforma

Comprueba que la aplicación de Windows puede ejecutarse en una versión futura del sistema operativo. Esta prueba históricamente solo se ha aplicado al flujo de trabajo de la aplicación de escritorio, pero ahora también es compatible con flujos de trabajo de la Plataforma universal de Windows (UWP).

Segundo plano

La información de versión del sistema operativo limitaba el uso de Microsoft Store. A menudo, las aplicaciones usaban esta restricción de forma incorrecta para comprobar la versión del SO para que la aplicación pudiera proporcionar a los usuarios una funcionalidad específica de una versión del sistema operativo.

Detalles de las pruebas

El Kit para la certificación de aplicaciones en Windows usa HighVersionLie para detectar cómo comprueba la aplicación la versión del SO. Si la aplicación se bloquea, no pasará esta prueba.

Acción correctiva

Las aplicaciones deben usar las funciones auxiliares de la API de la versión para comprobar esto. Consulta Versión del sistema operativo para más información.

Validación del controlador de cancelación de tareas en segundo plano

Comprueba que la aplicación tiene un controlador de cancelación de tareas en segundo plano declarado. Es necesario que haya una función específica a la que se llamará cuando se cancele la tarea. Esta prueba se aplica solo a aplicaciones implementadas.

Segundo plano

Las aplicaciones de la Tienda pueden registrar un proceso que se ejecuta en segundo plano. Por ejemplo, una aplicación de correo electrónico puede hacer ping a un servidor ocasionalmente. Sin embargo, si el sistema operativo necesita estos recursos, cancelará la tarea en segundo plano y las aplicaciones deben controlar correctamente esta cancelación. Es posible que las aplicaciones que no tengan un controlador de cancelación se bloqueen o no se cierren cuando el usuario intente cerrar la aplicación.

Detalles de las pruebas

La aplicación se inicia, se suspende, y la parte que no está en segundo plano de la aplicación se finaliza. A continuación, las tareas en segundo plano asociadas con esta aplicación se cancelan. Se comprueba el estado de la aplicación y si la aplicación sigue ejecutándose, no pasará esta prueba.

Acción correctiva

Agrega el controlador de cancelación a la aplicación. Para más información, consulta Dar soporte a tu aplicación mediante tareas en segundo plano.

Recuento de aplicaciones

Comprueba que el paquete de la aplicación (.msix, .appx o lote de aplicaciones) contiene una aplicación. Esto se ha cambiado en el kit para ser una prueba independiente.

Segundo plano

Esta prueba se ha implementado según la directiva de la Tienda.

Detalles de las pruebas

Para las aplicaciones de Windows Phone 8.1, se comprueba que el número total de paquetes .appx del lote es < 512, que hay un solo paquete principal en el lote y que la arquitectura del paquete principal del lote se ha marcado como ARM o neutro.

Para las aplicaciones de Windows 10, la prueba comprueba que el número de revisión de la versión del lote se establece en 0.

Acción correctiva

Asegúrese de que el paquete de la aplicación y el lote cumplen con requisitos anteriores que se indican en la sección Detalles de la prueba.

Prueba de cumplimiento del manifiesto de la aplicación

Prueba el contenido del manifiesto de la aplicación para asegurarte de que su contenido es correcto.

Segundo plano

Las aplicaciones deben tener un manifiesto de la aplicación con el formato correcto.

Detalles de la prueba

Examina el manifiesto de la aplicación para comprobar que el contenido sea correcto, según se describe en los Requisitos del paquete de la aplicación.

  • Extensiones de archivo y protocolos

    La aplicación puede declarar las extensiones de archivo con los que quiere asociarse. Si no se usa correctamente, la aplicación puede declarar una gran cantidad de extensiones de archivo, la mayoría de las cuales quizás ni use, lo que provocaría una experiencia del usuario deficiente. Esta prueba agrega una comprobación para limitar la cantidad de extensiones de archivo con las que puede asociarse una aplicación.

  • Regla de dependencia de marco

    Esta prueba aplica el requisito de que las aplicaciones adopten las dependencias adecuadas en UWP. Si se encuentra una dependencia inadecuada, la aplicación no pasará la prueba.

    Si hay un error de coincidencia entre la versión del sistema operativo a la que se aplica la aplicación y las dependencias de marco establecidas, la aplicación no pasará la prueba. Tampoco lo hará si hace referencia a alguna versión anterior de los dll del marco.

  • Comprobación de la comunicación entre procesos (IPC)

    Esta prueba impone el requisito de que las aplicaciones para UWP no se comunican fuera del contenedor de la aplicación con componentes del escritorio. La comunicación entre procesos está pensada exclusivamente para las aplicaciones de prueba. Las aplicaciones en las que el nombre especificado en ActivatableClassAttribute sea "DesktopApplicationPath" no superarán esta prueba.

Acción correctiva

Compara el manifiesto de la aplicación con los requisitos descritos en la página sobre los Requisitos del paquete de la aplicación.

Prueba de características de seguridad de Windows

Segundo plano

Cambiar las protecciones de seguridad de Windows predeterminadas puede causar grandes riesgos a los clientes.

Detalles de las pruebas

Prueba la seguridad de la aplicación ejecutando el analizador binario BinScope.

Las pruebas del analizador binario BinScope examinan los archivos binarios de la aplicación para comprobar las prácticas de codificación y diseño que hacen que la aplicación sea menos vulnerable a los ataques o que se use como vector de ataque.

Las pruebas del analizador binario BinScope comprueban el uso correcto de las siguientes características relacionadas con la seguridad:

  • Pruebas de analizador binario BinScope
  • Firma de código privado

Pruebas de analizador binario BinScope

Las pruebas del analizador binario BinScope examinan los archivos binarios de la aplicación para comprobar las prácticas de codificación y diseño que hacen que la aplicación sea menos vulnerable a los ataques o que se use como vector de ataque.

Las pruebas del analizador binario BinScope comprueban el uso correcto de estas características relacionadas con la seguridad:

AllowPartiallyTrustedCallersAttribute

Mensaje de error del Kit para la certificación de aplicaciones en Windows : error en la prueba APTCACheck

El atributo AllowPartiallyTrustedCallersAttribute (APTCA) habilita el acceso a los códigos de plena confianza desde los códigos de confianza parcial en los ensamblados con signo. Cuando apliques el atributo APTCA en un ensamblado, los llamadores de confianza parcial pueden obtener acceso a ese ensamblado durante su vigencia, lo que puede comprometer la seguridad.

Qué debes hacer si la aplicación no pasa esta prueba

No uses el atributo APTCA en ensamblados con nombre seguro a menos que lo requiera tu proyecto y comprendas cuáles son los riesgos. En los casos en los que sea obligatorio, asegúrate de que todas las API estén protegidas con las peticiones de seguridad de acceso al código apropiadas. APTCA no tiene efectos cuando el ensamblado forma parte de una aplicación para la Plataforma universal de Windows (UWP).

Comentarios:

Esta prueba solo se realiza en código administrado (C#, .NET, etc.).

Protección de control de excepciones de /SafeSEH

Mensaje de error del Kit para la certificación de aplicaciones en Windows: Error en la prueba SafeSEHCheck

Un controlador de excepciones se ejecuta cuando la aplicación encuentra una condición de excepción, como un error de división entre cero. Dado que la dirección del controlador de excepciones se almacena en la pila cuando se llama una función, podría quedar expuesta a un atacante de desbordamiento de búfer si algún software malintencionado quisiera sobrescribir la pila.

Qué debes hacer si la aplicación no pasa esta prueba

Habilita la opción /SAFESEH en el comando enlazador cuando diseñes tu aplicación. Esta opción está activada de manera predeterminada en la configuración de lanzamiento de Visual Studio. Comprueba que esta opción esté habilitada en las instrucciones de compilación de todos los módulos ejecutables de la aplicación.

Comentarios:

La prueba no se realiza en binarios de 64 bits ni en binarios de conjunto de chips ARM porque no almacenan direcciones de controladores de excepciones en la pila.

Prevención de ejecución de datos

Mensaje de error del Kit para la certificación de aplicaciones en Windows: error en la prueba NXCheck

Esta prueba comprueba que la aplicación no ejecute el código que se almacena en el segmento de datos.

Qué debes hacer si la aplicación no pasa esta prueba

Habilita la opción /NXCOMPAT en el comando enlazador cuando diseñes tu aplicación. Esta opción está activada de manera predeterminada en las versiones del enlazador que admiten la Prevención de ejecución de datos (DEP).

Comentarios:

Te recomendamos que pruebes tus aplicaciones en una CPU con funcionalidad DEP y repares cualquier error que encuentres en los resultados de DEP.

Selección aleatoria del diseño del espacio de direcciones

Mensaje de error del Kit para la certificación de aplicaciones en Windows: Error en la prueba DBCheck.

La selección aleatoria del diseño del espacio de direcciones (ASLR) carga imágenes ejecutables en ubicaciones impredecibles de la memoria, lo que dificulta la tarea del software malintencionado La aplicación y todos los componentes que usa la aplicación deben admitir ASLR.

Qué debes hacer si la aplicación no pasa esta prueba

Habilita la opción /DYNAMICBASE en el comando enlazador cuando diseñes tu aplicación. Comprueba que todos los módulos que usa la aplicación también usen esta opción de enlazador.

Comentarios:

Normalmente, ASLR no afecta al rendimiento. Pero en algunos escenarios, hay una pequeña mejora de rendimiento en sistemas de 32 bits. Es posible que el rendimiento pueda afectar a un sistema muy congestionado con imágenes cargadas en muchas ubicaciones diferentes de la memoria.

Esta prueba se realiza solamente en aplicaciones escritas en lenguajes no administrados, como C o C++.

Sección PE compartida de lectura y escritura

Mensaje de error del Kit para la certificación de aplicaciones en Windows: Error en la prueba SharedSectionsCheck.

Los archivos binarios con secciones grabables marcadas como compartidas son una amenaza de seguridad. No compiles aplicaciones con secciones compartidas grabables a menos que sea necesario. Usa CreateFileMapping o MapViewOfFile para crear un objeto de memoria compartida debidamente asegurado.

Qué debes hacer si la aplicación no pasa esta prueba

Elimina todas las secciones compartidas de la aplicación y crea objetos de memoria compartidos invocando CreateFileMapping o MapViewOfFile con los atributos de seguridad apropiados y vuelve a compilar la aplicación.

Comentarios:

Esta prueba se realiza solamente en aplicaciones escritas en lenguajes no administrados, como C o C++.

AppContainerCheck

Mensaje de error del Kit para la certificación de aplicaciones en Windows: Error en la prueba AppContainerCheck.

AppContainerCheck comprueba que esté establecido el bit appcontainer en el encabezado portable ejecutable (PE) de un binario ejecutable. Las aplicaciones deben tener el bit appcontainer establecido en todos los archivos .exe y en todas las DLL no administradas para ejecutarse correctamente.

Qué debes hacer si la aplicación no pasa esta prueba

Si un archivo ejecutable nativo no pasa la prueba, asegúrate de haber usado los compiladores y enlazadores más recientes para compilarlo y de haber usado la marca /appcontainer en el enlazador.

Si un archivo ejecutable administrado no pasa la prueba, asegúrate de haber usado el compilador y enlazador más recientes, como Microsoft Visual Studio, para compilar la aplicación para UWP.

Comentarios:

Esta prueba se realiza en todos los archivos .exe y en DLL no administrados.

ExecutableImportsCheck

Mensaje de error del Kit para la certificación de aplicaciones en Windows: Error en la prueba ExecutableImportsCheck.

Una imagen portable ejecutable (PE) no pasa esta prueba si su tabla de importación se colocó en una sección de código ejecutable. Esto puede producirse si habilitaste la combinación de .rdata para la imagen PE estableciendo la marca /merge del enlazador de Visual C++ en /merge:.rdata=.text.

Qué debes hacer si la aplicación no pasa esta prueba

No combines la tabla de importación en una sección de código ejecutable. Asegúrate de que la marca /merge del enlazador de Visual C++ no esté configurada para combinar la sección ".rdata" en una sección de código.

Comentarios:

Esta prueba se realiza en todo el código binario excepto en los ensamblados puramente administrados.

WXCheck

Mensaje de error del Kit para la certificación de aplicaciones en Windows: Error en la prueba WXCheck.

La comprobación ayuda a garantizar que un binario no tenga ninguna página asignada como de escritura y ejecutable. Esto puede suceder si el binario tiene una sección de escritura y ejecutable o si el valor de SectionAlignment del binario es menor que PAGE-SIZE.

Qué debes hacer si la aplicación no pasa esta prueba

Asegúrese de que el binario no tiene una sección de escritura o ejecutable y de que el valor de SectionAlignment del binario sea al menos igual a su valor PAGE-SIZE.

Comentarios:

Esta prueba se realiza en todos los archivos .exe y en DLL nativos no administrados.

Un ejecutable puede tener una sección de escritura y ejecutable si se compiló con Editar y continuar habilitado (/ZI). Deshabilitar Editar y continuar hará que la sección no válida no esté presente.

PAGE-SIZE es el valor SectionAlignment predeterminado de los elementos ejecutables.

Firma de código privado

Prueba la existencia de archivos binarios de firma de código privado en el paquete de la aplicación.

Segundo plano

Los archivos de firma de código privado se deben conservar de forma privada, ya que podrían usarse de forma malintencionada en caso de que se pongan en riesgo.

Detalles de las pruebas

Prueba para detectar archivos dentro del paquete de la aplicación que tengan la extensión .pfx o.snk, lo que indicaría que se incluyeron claves de firma privadas.

Acciones correctivas

Quita todas las claves de firma de código privado (por ejemplo, archivos .pfx y .snk) del paquete.

Prueba de API admitidas

Prueba la aplicación para detectar el uso de cualquier API no compatible.

Segundo plano

Para lograr la certificación de Microsoft Store, las aplicaciones deben usar las API destinadas a las aplicaciones para UWP (es decir, API de Windows Runtime o API de Win32 compatibles). Esta prueba también identifica situaciones en las que un binario administrado toma una dependencia de una función fuera del perfil aprobado.

Detalles de las pruebas

  • Examina la tabla de direcciones de importación de cada uno de los binarios del paquete de la aplicación para garantizar que ninguno tenga una dependencia en una API de Win32 no compatible con el desarrollo de aplicaciones para UWP.
  • Comprueba que cada binario administrado en el paquete de la aplicación no toma una dependencia de una función fuera del perfil aprobado.

Acciones correctivas

Asegúrate de que la aplicación se haya compilado como una versión de lanzamiento y no con una versión de depuración.

Nota: La versión de depuración de una aplicación no pasará esta prueba aunque la aplicación use solamente las API de aplicaciones para UWP.

Revisa los mensajes de error para identificar la API que usa la aplicación y que no es una API de aplicaciones para UWP.

Nota: Las aplicaciones C++ compiladas con una configuración de depuración no pasarán esta prueba, aun cuando la configuración use solo las API de Windows SDK orientadas a aplicaciones para UWP. Consulta el tema sobre alternativas a las API de Windows en aplicaciones para UWP para obtener más información.

Pruebas de rendimiento

La aplicación debe responder con rapidez a la interacción del usuario y los comandos del sistema para que la experiencia de usuario sea rápida y fluida.

Las características del equipo en el que se realiza la prueba pueden afectar a los resultados. Los umbrales de la prueba de rendimiento para la certificación de aplicaciones están establecidos de tal manera que los equipos de bajo consumo cumplan con las expectativas del cliente en cuanto a una experiencia rápida y fluida. Para determinar el rendimiento de la aplicación, te recomendamos que la pruebes en un equipo de bajo consumo, por ejemplo, un equipo basado en un procesador Intel Atom con una resolución de pantalla de 1366 x 768 (o superior) y un disco duro giratorio (en lugar de un disco duro de estado sólido).

Generación de códigos de bytes

Como optimización del rendimiento para acelerar el tiempo de ejecución de JavaScript, los archivos de JavaScript con la extensión .js generan código de bytes cuando se implementa la aplicación. Esto mejora el inicio y el tiempo de ejecución en curso para las operaciones de JavaScript.

Detalles de las pruebas

Examina la implementación de la aplicación para asegurarse de que todos los archivos .js se hayan convertido a código de bytes.

Acción correctora

Si la prueba da error, considera lo siguiente para abordar el problema:

  • Comprueba que el registro de eventos esté habilitado.
  • Comprueba que todos los archivos JavaScript sean sintácticamente válidos.
  • Confirma que todas las versiones anteriores de la aplicación estén desinstaladas.
  • Excluye los archivos identificados del paquete de la aplicación.

Referencias de enlace optimizadas

Cuando uses enlaces, WinJS.Binding.optimizeBindingReferences debe establecerse como verdadero para optimizar el uso de la memoria.

Detalles de las pruebas

Comprueba el valor de WinJS.Binding.optimizeBindingReferences.

Acción correctora

Establece WinJS.Binding.optimizeBindingReferences en true en el JavaScript de la aplicación.

Prueba de recursos del manifiesto de la aplicación

Validación de recursos de la aplicación

La aplicación probablemente no se instale si las cadenas o imágenes declaradas en el manifiesto de la aplicación son incorrectas. Si se instala con estos errores, es probable que el logotipo de la aplicación u otras imágenes usadas por esta no se muestren correctamente.

Detalles de las pruebas

Inspecciona los recursos definidos en el manifiesto de la aplicación para asegurarse de que estén presentes y sean válidos.

Acción correctora

Usa esta tabla como guía.

Mensaje de errorComentarios

La imagen {image name} define ambos calificadores Scale y TargetSize; puedes definir un calificador por vez.

Puedes personalizar imágenes para distintas resoluciones.

En el mensaje en sí, {image name}contiene el nombre de la imagen que presenta el error.

Asegúrate de que cada imagen defina Scale o TargetSize como calificador.

La imagen {image name} no cumple con las restricciones de tamaño.

Asegúrate de que todas las imágenes de la aplicación cumplan con las restricciones de tamaño apropiado.

En el mensaje en sí, {image name}contiene el nombre de la imagen que presenta el error.

La imagen {image name} no se encuentra en el paquete.

Falta una imagen obligatoria.

En el mensaje en sí, {image name} contiene el nombre de la imagen que falta.

La imagen {image name} no es un archivo de imagen válido.

Asegúrate de que todas las imágenes de la aplicación cumplan con las restricciones de tipo de formato de archivo apropiado.

En el mensaje en sí, {image name}contiene el nombre de la imagen que no es válida.

La imagen “BadgeLogo” tiene un valor ABGR {value} en la posición (x, y) que no es válido. El píxel debe ser blanco (##FFFFFF) o transparente (00######).

El logotipo del distintivo es una imagen que se muestra junto a la notificación del distintivo para identificar la aplicación en la pantalla de bloqueo. Esta imagen debe ser monocromática (puede tener únicamente píxeles blancos o transparentes).

En el mensaje en sí, {value} contiene un valor de color en la imagen que no es válido.

La imagen "BadgeLogo" tiene un valor ABGR {value} en la posición (x, y) que no es válido para una imagen con blanco en contraste alto. El píxel debe ser (##2A2A2A) o más oscuro, o transparente (00######).

El logotipo del distintivo es una imagen que se muestra junto a la notificación del distintivo para identificar la aplicación en la pantalla de bloqueo. Dado que el logotipo del distintivo aparece en un fondo blanco cuando se usa blanco en contraste alto, debe ser una versión oscura del logotipo del distintivo normal. En blanco de alto contraste, el logotipo del distintivo solo puede contener píxeles que son más oscuros que (##2A2A2A) o transparentes.

En el mensaje en sí, {value} contiene un valor de color en la imagen que no es válido.

La imagen debe definir al menos una variante sin un calificador TargetSize. Debe definir un calificador Scale o dejar Scale y TargetSize sin especificar, para que de manera predeterminada se establezca Scale-100.

Para más información, consulta Diseño con capacidad de respuesta 101 para aplicaciones de la Plataforma universal de Windows (UWP) y Directrices sobre recursos de la aplicación.

Al paquete le falta un archivo "resources.pri".

Si tienes contenido localizable en el manifiesto de la aplicación, asegúrate de que el paquete de la aplicación incluya un archivo resources.pri válido.

El archivo "resources.pri" debe tener un mapa de recursos cuyo nombre coincida con el nombre del paquete {package full name}.

Es posible que se muestre este error si el manifiesto cambia y el nombre del mapa de recursos del archivo resources.pri deja de coincidir con el nombre del paquete en el manifiesto.

En el mensaje en sí, {package full name} contiene el nombre del paquete que resources.pri debe tener.

Para corregirlo, debes volver a compilar el archivo resources.pri y la forma más fácil de hacerlo es reconstruyendo el paquete de la aplicación.

El archivo "resources.pri" no debe tener habilitado Combinar automáticamente.

MakePRI.exe admite una opción denominada Combinar automáticamente. El valor predeterminado de Combinar automáticamente es desactivado. Cuando está habilitada, la opción Combinar automáticamente combina los recursos del paquete de idioma de una aplicación en un solo resources.pri en tiempo de ejecución. No se recomienda para aplicaciones que intentas distribuir a través de Microsoft Store. El archivo resources.pri de una aplicación que se distribuye a través de Microsoft Store debe estar en la raíz del paquete de la aplicación y contener todas las referencias de idiomas que esa aplicación admite.

La cadena {string} no cumple la restricción de longitud máxima de {number} caracteres.

Consulta los requisitos de metadatos del paquete.

En el mensaje en sí, {string} se reemplaza por la cadena que tiene el error y {number} contiene la longitud máxima.

La cadena {string} no debe tener espacios en blanco iniciales ni finales.

El esquema de los elementos en el manifiesto de la aplicación no permite caracteres de espacio en blanco inicial ni final.

En el mensaje en sí, {string} se reemplaza por la cadena que tiene el error.

Asegúrate de que ninguno de los valores localizados en los campos del manifiesto en resources.pri tenga caracteres de espacio en blanco inicial o final.

La cadena debe ser no vacía (mayor que cero en longitud).

Consulta el tema sobre los requisitos del paquete de la aplicación para más información.

No hay un recurso predeterminado especificado en el archivo "resources.pri".

Para más información, consulta Directrices sobre recursos de la aplicación.

En la configuración de compilación predeterminada, Visual Studio solo incluye los recursos de imagen con una escala de 200 en el paquete de la aplicación al generar agrupaciones y coloca otros recursos en el paquete de recursos. Asegúrate de incluir recursos de imagen con una escala de 200 o de configurar el proyecto para incluir los recursos que tienes.

No hay un valor de recurso especificado en el archivo "resources.pri".

Asegúrate de que el manifiesto de la aplicación tenga recursos definidos en dicho archivo.

El archivo de imagen {filename} debe tener un tamaño inferior a 204800 bytes.\*\*

Reduce el tamaño de las imágenes especificadas.

El archivo {filename} no debe contener una sección de mapa inverso.\*\*

Aunque el mapa inverso se genera durante la tarea "F5 debugging" de Visual Studio al llamar a makepri.exe, se puede quitar ejecutando makepri.exe sin el parámetro /m al generar un archivo pri.

\*\*Indica que se ha incluido una prueba en el Kit para la certificación de aplicaciones en Windows 3.3 para Windows 8.1 y que únicamente es válida cuando se usa esa versión del kit o una posterior.

 

Validación de la personalización de marca

Se espera que las aplicaciones para UWP estén completas y sean absolutamente funcionales. Las aplicaciones que usan imágenes predeterminadas (de plantillas o muestras del SDK) ofrecen una experiencia mediocre al usuario y son difíciles de identificar en el catálogo de la tienda.

Detalles de las pruebas

La prueba corrobora que las imágenes usadas por la aplicación no sean imágenes predeterminadas de muestras de SDK ni de Visual Studio.

Acciones correctivas

Reemplaza las imágenes predeterminadas con otras más distintivas y representativas de tu aplicación.

Prueba de configuración de depuración

Prueba la aplicación para asegurarte de que no sea una versión de depuración.

Segundo plano

Para obtener la certificación para Microsoft Store, las aplicaciones no deben compilarse para depuración ni deben hacer referencia a versiones de depuración de un archivo ejecutable. Además, debes crear tu propio código según lo optimice tu aplicación para pasar esta prueba.

Detalles de la prueba

Prueba la aplicación para asegurarte de que no sea una versión de depuración y no esté vinculada con ningún marco de depuración.

Acciones correctivas

  • Compila la aplicación como una compilación de versión antes de enviarla a Microsoft Store.
  • Asegúrate de tener instalada la versión correcta de .NET Framework.
  • Asegúrate de que la aplicación no esté vinculada a versiones de depuración de un marco de trabajo y que esté creada con una versión de lanzamiento. Si la aplicación incluye componentes .NET, comprueba si has instalado la versión correcta de .NET Framework.

Prueba de codificación de archivos

Codificación de archivos UTF-8

Segundo plano

Los archivos HTML, CSS y JavaScript deben codificarse en formato UTF-8 con una correspondiente marca de orden de bytes (BOM), para que se puedan obtener los beneficios del almacenamiento en caché del código de bytes y se eviten ciertas condiciones de error en tiempo de ejecución.

Detalles de las pruebas

Prueba el contenido de los paquetes de la aplicación para asegurarte de que usen la codificación de archivo correcta.

Acción correctora

Abre el archivo afectado y selecciona Guardar como en el menú Archivo de Visual Studio. Selecciona el control desplegable ubicado junto al botón Save y selecciona Guardar con codificación. En el cuadro de diálogo de opciones de guardado Advanced, elige la opción Unicode (UTF-8 con firma) y haz clic en Aceptar.

Prueba de nivel de función de Direct3D

Compatibilidad del nivel de función de Direct3D

Prueba las aplicaciones de Microsoft Direct3D para garantizar que no se bloquearán en los dispositivos con hardware gráfico más antiguo.

Segundo plano

Microsoft Store exige que todas las aplicaciones que usan Direct3D se representen de manera adecuada o finalicen correctamente en las tarjetas gráficas con el nivel de función 9-1.

Debido a que los usuarios pueden cambiar el hardware gráfico de sus dispositivos después de instalar la aplicación, si elige un nivel de función mínimo mayor que 9-1, la aplicación debe detectar al iniciarse si el hardware actual cumple los requisitos mínimos. Si no se cumplen los requisitos mínimos, la aplicación debe mostrar un mensaje al usuario en el que se detallan todos los requisitos de Direct3D. Asimismo, si se descarga una aplicación en un dispositivo con el que no es compatible, debe detectarlo en el inicio y mostrar al cliente un mensaje en el que se detallan los requisitos.

Detalles de las pruebas

La prueba examina si las aplicaciones se representan correctamente en el nivel de función 9-1.

Acción correctora

Asegúrese de que la aplicación se represente correctamente en el nivel de función 9-1 de Direct3D, aun cuando tenga pensado ejecutarla en un nivel más alto. Consulta Desarrollar para distintos niveles de funciones de Direct3D para obtener más información.

Recorte Direct3D tras suspensión

Nota: Esta prueba solo se aplica a las aplicaciones para UWP desarrolladas para Windows 8.1 y versiones posteriores.

Segundo plano

Si la aplicación no llama a Trim en su dispositivo Direct3D, no podrá liberar la memoria asignada a trabajos 3D anteriores. Esto aumenta el riesgo de que la aplicación finalice debido a la presión de memoria del sistema.

Detalles de las pruebas

Comprueba si las aplicaciones cumplen los requisitos d3d y garantiza que las aplicaciones llamen a una nueva API Trim en la devolución de llamada de Suspend.

Acción correctora

La aplicación debe llamar a la API Trim en su interfaz de IDXGIDevice3 siempre que esté por suspenderse.

Prueba de funcionalidades de la aplicación

Funcionalidades de uso especial

Segundo plano

Las funcionalidades de uso especial están indicadas para escenarios muy específicos. Estas funcionalidades solo pueden usarse en cuentas de empresa.

Detalles de las pruebas

Examina si la aplicación declara alguna de las siguientes funcionalidades:

  • EnterpriseAuthentication
  • SharedUserCertificates
  • DocumentsLibrary

Si se declara alguna de estas funcionalidades, la prueba muestra una advertencia al usuario.

Acciones correctivas

Piensa en la posibilidad de quitar la función de uso especial si la aplicación no la necesita. Además, el uso de estas funcionalidades está sujeto a otras revisiones de las directivas de incorporación.

Validación de metadatos de Windows Runtime

Segundo plano

Comprueba que los componentes suministrados en una aplicación corresponden al sistema de tipo Windows Runtime.

Detalles de las pruebas

Comprueba que los archivos .winmd del paquete cumplen las reglas de Windows Runtime.

Acciones correctivas

  • Prueba del atributo ExclusiveTo: comprueba que las clases de Windows Runtime no implementen interfaces de otra clase marcadas como exclusivas (ExclusiveTo).
  • Prueba de ubicación de tipo: comprueba que los metadatos de todos los tipos de Windows Runtime estén ubicados en el archivo winmd cuyo nombre presente la mayor coincidencia en longitud con el espacio de nombres en el paquete de la aplicación.
  • Prueba de distinción entre mayúsculas y minúsculas del nombre de tipo: comprueba que todos los tipos de Windows Runtime tengan nombres únicos sin distinción de mayúsculas y minúsculas en el paquete de la aplicación. Asegúrate también de que ningún nombre de tipo UWP se use además como espacio de nombres de tu paquete de la aplicación.
  • Prueba de exactitud del nombre de tipo: comprueba que no haya tipos de Windows Runtime en el espacio de nombres global ni en el espacio de nombres de nivel superior de Windows.
  • Prueba de exactitud de metadatos general: comprueba que el compilador que se usa para generar los tipos cumpla con las especificaciones actuales de Windows Runtime.
  • Prueba de propiedades: comprueba que las propiedades de una clase de Windows Runtime tengan un método get (los métodos set son opcionales). Asegúrese de que el método get devuelva un tipo de valor que coincida con el tipo del parámetro de entrada del método set, para todas las propiedades de los tipos de Windows Runtime.

Pruebas de integridad del paquete

Prueba de archivos apropiados para la plataforma

Las aplicaciones que instalan binarios mixtos pueden bloquearse o no ejecutarse correctamente según la arquitectura del procesador que tenga el usuario.

Segundo plano

Esta prueba valida los binarios de un paquete de la aplicación para evitar conflictos de arquitectura. Un paquete de la aplicación no debe contener binarios que no se puedan usar en la arquitectura de procesador especificada en el manifiesto. De haberlos, existe la posibilidad de que la aplicación se bloquee o de que el tamaño del paquete de la aplicación se incremente sin necesidad.

Detalles de las pruebas

Examina que el "valor de bits" de cada archivo en el encabezado PE sea el apropiado al hacer referencia cruzada con la declaración de arquitectura de procesador en el paquete de la aplicación.

Acción correctora

Sigue estas directrices para que el paquete de la aplicación contenga únicamente archivos admitidos por la arquitectura especificada en el manifiesto de la aplicación:

  • Si la arquitectura de procesador de destino de la aplicación es de tipo neutral, el paquete de la aplicación no puede contener archivos de imagen o binarios de x86, x64 o ARM.

  • Si la arquitectura de procesador de destino de la aplicación es de tipo x86, el paquete de la aplicación solo debe contener archivos de imagen o binarios de x86. Si el paquete contiene archivos de imagen o binarios de x64 o ARM, la prueba no se superará.

  • Si la arquitectura de procesador de destino de la aplicación es de tipo x64, el paquete de la aplicación debe contener archivos de imagen o binarios de x64. Ten en cuenta que, en este caso, también puede contener archivos de x86, pero la experiencia de aplicación principal debe usar el binario de x64.

    La prueba no se superará, sin embargo, si el paquete contiene archivos de imagen o binarios de ARM o si solo contiene archivos de imagen o binarios de x86.

  • Si la arquitectura de procesador de destino de la aplicación es de tipo ARM, el paquete de la aplicación solo debe contener archivos de imagen o binarios de ARM. Si el paquete contiene archivos de imagen o binarios de x64 o x86, la prueba no se superará.

Prueba de estructura de directorios admitida

Controla que las aplicaciones no creen subdirectorios más largos que MAX-PATH como parte de la instalación.

Segundo plano

Las rutas de acceso al sistema de archivos están limitadas internamente a MAX-PATH para los componentes de sistema operativo (incluidos Trident y WWAHost, entre otros). Estos no tendrán un buen funcionamiento con rutas de acceso más largas.

Detalles de las pruebas

Examina que ninguna ruta de acceso supere en longitud a MAX-PATH en el interior del directorio de instalación de la aplicación.

Acción correctora

Usa una estructura de directorio o nombre de archivo más cortos.

Prueba de uso de recursos

Prueba de tareas en segundo plano de WinJS

Esta prueba garantiza que las aplicaciones de JavaScript tengan las instrucciones de cierre adecuadas para que no consuman batería.

Segundo plano

Las aplicaciones que tienen tareas en segundo plano de JavaScript necesitan llamar a Close() en la última declaración de la tarea. De lo contrario, podrían impedir que el sistema vuelva al modo de espera conectado y agoten la batería.

Detalles de las pruebas

Si la aplicación no cuenta con un archivo de tareas en segundo plano especificado en el manifiesto, pasará la prueba. De lo contrario, la prueba analizará el archivo de tareas en segundo plano de JavaScript especificado en el manifiesto de la aplicación y buscará la declaración Close(). En función de si encuentra o no esta declaración, se pasará o no la prueba.

Acción correctora

Actualiza el código JavaScript en segundo plano para que llame a Close() correctamente.