Compartir a través de


Generador de perfiles de funcionalidad de aplicación (ACP)

Es posible que las aplicaciones empaquetadas necesiten acceder a los recursos fuera del espacio aislado. Algunos ejemplos de estos recursos incluyen archivos de usuario, imágenes, elementos del Registro, cámara, ubicación y micrófono, entre otros. La declaración de la funcionalidad permite que las aplicaciones de espacio aislado accedan a algunos de esos recursos. Las declaraciones se realizan en el manifiesto del paquete de la aplicación de espacio aislado. Consulte msix-packaging-tool para obtener referencia.

El generador de perfiles de funcionalidad de la aplicación es un conjunto de herramientas que ayudan a identificar qué funcionalidades puede necesitar declarar un paquete de aplicación, por lo que se le concede el acceso a los recursos que necesita. Además, proporciona información de diagnóstico útil sobre los intentos de acceso erróneos por parte del paquete de aplicación.

Importante

Esta característica está en versión preliminar: parte de la información hace referencia al producto de versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.

Preparación del sistema de destino para la generación de perfiles

Los pasos siguientes son necesarios para configurar el sistema de destino para la generación de perfiles:

  1. Asegúrese de que la cuenta de usuario tiene privilegios de administrador para el sistema Windows de destino.

  2. Habilite el modo de desarrollador en el sistema de destino. Esta configuración se puede encontrar en Configuración de Windows | Privacidad y seguridad | Para desarrolladores. Para obtener más información, consulte Habilitación del dispositivo para el desarrollo.

  3. Instale PowerShell 7.3 o posterior. Para obtener las instrucciones de instalación, consulte Instalación de PowerShell en Windows.

    Esto es necesario para la compatibilidad del módulo Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.

  4. Instale Windows Performance Recorder (WPR) si aún no está instalado y agréguelo a PATH.

    Consulte Windows Performance Recorder para obtener instrucciones.

    Get-Command wpr
    

    Captura de pantalla que muestra el cmdlet Get-Command que se ejecuta en un símbolo del sistema de PowerShell

  5. Descargue el archivo del generador de perfiles de funcionalidad de la aplicación y extráigalo en una ruta de acceso que le resulte cómoda.

    El archivo del generador de perfiles de funcionalidad de la aplicación se puede descargar de los activos de versión de este proyecto.

  6. Siga las instrucciones de msix-packaging-tool para empaquetar la aplicación e instalarla en el sistema de destino.

  7. Obtenga el manifiesto del paquete de aplicación de destino (recomendado) o el nombre completo del paquete de aplicación de destino.

    1. (Recomendado) Obtenga el manifiesto del paquete de aplicación de destino. La manera más fácil de hacerlo es abrirlo mediante la herramienta de empaquetado MSIX y guardar una copia del manifiesto en una ruta de acceso que le resulte cómoda.

      Captura de pantalla que muestra la sección Información del paquete de la herramienta de empaquetado MSIX con el botón Abrir archivo resaltado

      Captura de pantalla que muestra el archivo de manifiesto que se va a guardar

      Captura de pantalla que muestra el archivo de manifiesto que se guarda en el cuadro de diálogo Guardar de Windows

    2. Para obtener el nombre completo del paquete de aplicación, ejecute el siguiente comando en PowerShell:

      Get-AppxPackage | where-object {$_.name -like '*Test-AppSilo*'}
      

      Captura de pantalla que muestra la salida del comando Get-AppxPackage

  8. (Opcional) Instale el Analizador de rendimiento de Windows. Consulte Windows Performance Analyzer para obtener instrucciones. Esto no es necesario para la generación de perfiles, pero puede ser útil para visualizar algunos de los datos capturados y la salida por ACP.

Importación del módulo de PowerShell

Puede encontrar información sobre el módulo aquí: Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.

Ejecute el siguiente comando en PowerShell con privilegios de administrador para importar el módulo:

Import-Module .\Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.dll

Nota:

El módulo Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.dll se encuentra en la carpeta ACP extraída del archivo en el paso 5 de las instrucciones anteriores sobre Preparación del sistema de destino para la generación de perfiles.

Inicio de la generación de perfiles

El cmdlet Start-Profiling toma la ruta de acceso al manifiesto del paquete de aplicación de destino o al nombre completo del paquete de aplicación.

Start-Profiling instrumentará el paquete de aplicación de destino para el registro de seguimiento y habilitará un proveedor de registro de seguimiento para los intentos de acceso realizados por el paquete de aplicación de destino. Para obtener más información, consulte Start-Profiling.

Ejecute el siguiente comando en PowerShell con privilegios de administrador para iniciar la generación de perfiles.

Start-Profiling -ManifestPath TestApp-AppXManifest.xml

Captura de pantalla que muestra una ventana de comandos de PowerShell que ejecuta el cmdlet Start-Profiling

Ejecución de los escenarios de aplicación

En este paso, es importante que se ejecuten todos los escenarios críticos de la aplicación. Los resultados de la generación de perfiles son tan completos como los escenarios que se ejecutan en este paso. Cuantos más escenarios de aplicación se ejerciten, mayor y más completa será la cantidad de datos capturados por la sesión de registro de seguimiento iniciada anteriormente.

Detener la creación de perfiles

El cmdlet Stop-Profiling detiene una sesión de registro de seguimiento de intento de acceso que se ha iniciado y quita la instrumentación de los paquetes de aplicación instrumentados para el registro de seguimiento.

Stop-Profiling acepta un parámetro opcional de ruta de acceso de seguimiento que controla la ruta de acceso usada para el archivo de registro de seguimiento de eventos (.etl) de salida. <current_directory>\trace.etl es el valor predeterminado. Para obtener más información, consulte Stop-Profiling.

Ejecute el siguiente comando en PowerShell con privilegios de administrador para detener la generación de perfiles.

Stop-Profiling

Captura de pantalla que muestra una ventana de comandos de PowerShell que ejecuta el cmdlet Stop-Profiling

Obtención de los resultados de generación de perfiles

El cmdlet Get-ProfilingResults analiza el archivo de seguimiento obtenido de los pasos anteriores y busca las funcionalidades requeridas por los paquetes de aplicación identificados en el seguimiento. Genera las funcionalidades e información de cada paquete de aplicación identificado en el seguimiento, a menos que se especifiquen filtros para un paquete específico.

Get-ProfilingResults acepta la ruta de acceso al archivo de seguimiento que se va a analizar. Si no se proporciona ninguna ruta de acceso, Get-ProfilingResults intentará invocar Stop-Profiling para obtener un seguimiento para analizar.

Get-ProfilingResults toma opcionalmente una ruta de acceso a un manifiesto de aplicación de destino. Si la información del seguimiento analizado se puede atribuir al manifiesto del paquete de aplicación de destino, el archivo se edita directamente con las funcionalidades de salida. De lo contrario, se realiza una copia del manifiesto para cada uno de los paquetes identificados en el seguimiento, agregando las funcionalidades identificadas.

Consulte Get-ProfilingResults para más información.

El siguiente comando analizará el archivo de seguimiento y generará los resultados:

Get-ProfilingResults -EtlFilePaths trace.etl -ManifestPath TestApp-AppXManifest.xml

Captura de pantalla que muestra una ventana de comandos de PowerShell que ejecuta el cmdlet Get-ProfilingResults

Nuevo empaquetado de la aplicación

Para volver a empaquetar la aplicación de destino con las funcionalidades recién identificadas:

  1. Incluya las funcionalidades recién identificadas en el manifiesto del paquete de aplicación de destino (Get-ProfilingResults editará el manifiesto directamente si se proporciona).
  2. Siga las instrucciones de msix-packaging-tool para volver a empaquetar la aplicación de destino con las nuevas funcionalidades y reinstalarla.

Cmdlets auxiliares

El cmdlet Merge-ProfilingResults se puede usar para combinar la salida de varias ejecuciones de Get-ProfilingResults.

Interpretación de la salida de generación de perfiles

La salida de Get-ProfilingResults consta de lo siguiente:

  1. Funcionalidades con formato de manifiesto

    Si el usuario proporciona un manifiesto que se va a editar con el modificador -ManifestPath y el paquete al que pertenece el manifiesto se identifica en el seguimiento de entrada, Get-ProfilingResults editará el archivo de manifiesto directamente para incluir las funcionalidades identificadas en el seguimiento del paquete. De lo contrario, para cada paquete identificado en el archivo de seguimiento, Get-ProfilingResults generará un archivo denominado <package full name><manifest name>.xml que contiene el elemento <Capabilities> con las funcionalidades identificadas en el seguimiento del paquete correspondiente.

    Nota:

    Hay dos tipos especiales de funcionalidades que Get-ProfilingResults puede identificar. Estos resultados se marcan con comentarios XML en el manifiesto de salida.

    • Funcionalidades sensibles a la privacidad: estas funcionalidades protegen los recursos sensibles a la privacidad, como la cámara, la ubicación y el micrófono. Estas funcionalidades deben declararse si el paquete de aplicación requiere acceso a estos recursos. Sin embargo, la declaración de funcionalidad sola puede no ser suficiente para garantizar el acceso de la aplicación al recurso sensible a la privacidad de destino. En la configuración de privacidad, el usuario puede seguir concediendo o denegando el acceso de recursos a la aplicación.
    • Funcionalidad de avisos: Get-ProfilingResults generará esta funcionalidad en el formulario de "comentario" cuando identifique que la funcionalidad de avisos se puede aplicar a un paquete de aplicación. Si se declara en el manifiesto del paquete, la aplicación opta por los avisos de reserva. Se emitirán avisos al usuario cada vez que se deniegue el acceso de la aplicación a un recurso apto para avisos. Esto permite al usuario conceder o denegar explícitamente el acceso al recurso. Los avisos de reserva pueden ser intrusivos y debilitar el espacio aislado, por lo que deben usarse con precaución, preferiblemente solo cuando sea necesario para escenarios críticos de aplicación.
  2. AccessAttemptRecords.csv

    Se trata de un archivo de valores separados por comas que contiene información detallada de diagnóstico sobre eventos de seguimiento analizados y cada intento de acceso con error registrado para el paquete de aplicación.

  3. summary.txt

    Este es un resumen de todas las ejecuciones de Get-ProfilingResults. Cada ejecución se anexa a este archivo. -SummaryOutputPath se puede usar para modificar esta ruta de archivo.

    El resumen contiene las entradas analizadas, los paquetes de aplicación de destino y los ejecutables, las funcionalidades identificadas, el contenido del manifiesto editado y una lista resumida de todos los recursos a los que el paquete de aplicación intentó acceder, pero para los que no se identificó ninguna funcionalidad.

Nota:

Es posible que la aplicación de destino no pueda acceder a estos recursos cuando se empaqueta.

  1. README.txt

    Este archivo contiene información para todas las ejecuciones de Get-ProfilingResults. Cada vez que se ejecuta el script, se anexa a este archivo.

    El archivo LÉAME proporciona información sobre la entrada analizada, el paquete de aplicación de destino, la salida de archivos y sus rutas de acceso, así como una guía de solución de problemas.

Seguimiento de pila

El archivo ACP contiene un archivo denominado ACP-StackTrace.wpaProfile. Este es un perfil para Windows Performance Analyzer (WPA). Habilita la visualización de seguimiento de pila para el archivo de registro de seguimiento de eventos capturado por Stop-Profiling. Desglosa los intentos de acceso, su destino y la pila que emitió el intento. Esto permite una comprensión más completa de las razones por las que la aplicación de destino no puede acceder a recursos específicos.

Para visualizar las pilas de intentos de acceso capturadas por Stop-Profiling en trace.etl:

  1. Abra el archivo trace.etl en WPA.

  2. Configure las rutas de acceso de símbolo de WPA para que apunten a los símbolos de la aplicación y al servidor de símbolos públicos de Microsoft:

    Captura de pantalla que muestra símbolos de carga de Windows Performance Analyzer

  3. Cargue los símbolos.

  4. Aplique el perfil en ACP-StackTrace.wpaProfile para ver la visualización de la pila de intentos de acceso:

    Captura de pantalla que muestra Windows Performance Analyzer aplicando el perfil

    Captura de pantalla que muestra Windows Performance Analyzer visualizando la pila de intentos de acceso

Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler

Start-Profiling

Stop-Profiling

Get-ProfilingResults

Merge-ProfilingResults

msix-packaging-tool

Declaración de funcionalidad

Grabadora de rendimiento de Windows

Windows Performance Analyzer

Instalación de PowerShell en Windows