Ir al contenido principal

Solución de problemas de Winget

Resolve common issues with Level's winget actions, including package scope requirements, SYSTEM user context, and install timeouts.

Introducción

Las acciones de winget de Level se ejecutan como el SYSTEM usuario y aplica el ámbito de máquina en todas las operaciones. La mayoría de los errores de instalación y actualización se deben a una de estas dos restricciones. Comprenderlas desde el principio resuelve la mayoría de los problemas notificados.


Cómo ejecuta Level Winget

Las acciones de instalación, actualización y desinstalación de paquetes de Level usan la API del Administrador de paquetes de Windows de Microsoft. No dependen de una sesión interactiva de PowerShell ni de la configuración de winget del usuario que ha iniciado sesión. La acción separada Instalar Winget instala la herramienta winget.exe herramienta de línea de comandos.

Dos cosas son siempre ciertas para cada acción de paquetes de winget de Level:

  1. Se ejecuta como SYSTEM: Level ejecuta operaciones de paquetes bajo el SYSTEM cuenta, no como un usuario que ha iniciado sesión ni como una sesión de administrador estándar. Cualquier comportamiento de paquete que dependa del contexto de usuario no funcionará de la misma manera.

  2. Aplica ámbito de máquina: Level requiere ámbito de máquina para las operaciones de paquetes. Solo los paquetes con un instalador de ámbito de máquina aplicable pueden instalarse o actualizarse a través de Level.

Estas dos restricciones explican casi todos los informes del tipo «funciona en PowerShell pero no en Level».


Problemas comunes

El paquete se instala mediante PowerShell pero no mediante Level

Si puede instalar un paquete como el usuario que ha iniciado sesión actualmente pero la acción de Level falla, la diferencia es el contexto de usuario. Level se ejecuta como SYSTEM, que tiene un entorno y un registro diferentes a los de un usuario que ha iniciado sesión. La mayoría de las veces esto se manifiesta como un problema de permisos o una ruta de perfil de usuario faltante.

No hay solución alternativa para los paquetes que fundamentalmente requieren una sesión de usuario. Para esos, considere un enfoque basado en scripts con PsExec o una tarea programada que se ejecuta bajo un contexto de usuario específico.


El paquete se instala como administrador pero no mediante Level

Level aplica el ámbito de máquina. Un paquete puede instalarse correctamente como administrador sin --scope machine pero fallan cuando se requiere ámbito de máquina.

Pruébelo directamente para confirmarlo:

winget install --scope machine -e --id PACKAGE_ID

Si esto falla en una sesión de PowerShell con permisos de administrador, el paquete no proporciona un instalador de ámbito de máquina. Level no puede instalarlo mediante la acción de winget. Las únicas opciones son encontrar un ID de paquete alternativo que admita el ámbito de máquina, o instalarlo mediante una acción Ejecutar Script con un instalador diferente.


La acción de actualización muestra menos paquetes de los esperados

Level usa el ámbito de máquina para los análisis de actualización, por lo que solo aparecen en la lista de actualizaciones las instalaciones con ámbito de máquina.

Puede verificarlo ejecutando usted mismo el comando equivalente:

winget upgrade --scope machine --all

Si los resultados coinciden con lo que muestra Level, Level es preciso. Los paquetes instalados con ámbito de usuario no aparecerán.


La instalación o actualización del paquete agota el tiempo de espera

Si la salida de la acción indica operation timed out, el Administrador de paquetes de Windows no finalizó la operación del paquete en aproximadamente 30 minutos. Esto ocurre con frecuencia cuando un instalador se detiene o espera una interacción del usuario que no puede proporcionarse mientras Level se ejecuta en modo silencioso como SYSTEM.

Revise la salida de la acción en busca de un nombre de proceso bloqueado o un mensaje que indique que la aplicación está en uso. Cierre la aplicación e inténtelo de nuevo cuando sea posible. Si el mismo paquete agota repetidamente el tiempo de espera, agregue su ID de paquete a Paquete(s) excluido(s) en una acción Actualizar todo e impleméntelo con el instalador silencioso compatible del proveedor o con una acción Ejecutar Script.


Mensajes de error comunes

Error

Qué significa

Qué hacer

0x8A150010 — Ninguno de los instaladores es aplicable para el sistema actual

El paquete no proporciona un instalador elegible para este dispositivo y ámbito de máquina.

Pruebe el paquete con el comando de ámbito de máquina indicado anteriormente. Use un ID de paquete diferente o el instalador del proveedor si también falla allí. Exclúyalo de Actualizar todo si sigue siendo seleccionado.

0x8A150011 — El hash del archivo del instalador no coincide con el manifiesto

El manifiesto del catálogo y el instalador descargado ya no coinciden, generalmente porque el proveedor reemplazó el archivo antes de que se actualizara el catálogo.

Inténtelo más tarde. Si el error continúa, excluya el paquete hasta que se corrija su manifiesto upstream.

0x8A15005F — Se debe proporcionar la ubicación de instalación

El paquete requiere una ubicación de instalación que la acción desatendida no puede suministrar.

Use otro paquete o implemente el instalador del proveedor con un script que proporcione la ubicación requerida. Exclúyalo de Actualizar todo.

0x8A150030 — Error al ejecutar el comando de desinstalación, o 0x8A150114 — El instalador no admite la actualización de un paquete existente

La instalación actual del paquete no puede actualizarse a través de la ruta desatendida disponible.

Use el procedimiento de actualización compatible del proveedor o una automatización personalizada. Excluya el paquete de Actualizar todo para evitar fallos repetidos.

0x8A150006 — Error al ejecutar ShellExecute, o 0x8A150049 — Error al ejecutar la instalación MSI

El instalador del proveedor devolvió un error. Estos son errores generales, por lo que la causa exacta depende del paquete.

Revise la salida de la acción y los registros del instalador del proveedor. Cierre la aplicación o complete un reinicio pendiente cuando la salida indique que es necesario. Use un instalador silencioso compatible con el proveedor si el fallo se repite.

0x8A150102 — Ya hay otra instalación en curso

Windows Installer está ocupado con otro paquete o con una operación de Windows Update.

Espere a que finalice la otra instalación y vuelva a intentarlo. Evite programar las ventanas de instalación de Winget y Windows Update al mismo tiempo.


Excluir un paquete de las actualizaciones automáticas

La acción Actualizar paquete Winget acción tiene un Paquete(s) excluido(s) campo. Introduzca uno o más IDs de paquete allí y esos paquetes se omitirán durante la ejecución de la actualización, sin necesidad de anclar ni usar soluciones alternativas de línea de comandos.

Exclude Winget Package

Verificar si un paquete admite el ámbito de máquina

La verificación definitiva es el manifiesto del paquete en el repositorio winget-pkgs. Busque InstallerScope: machine en el manifiesto. Si está ausente o configurado como user, la acción de winget de Level no podrá instalarlo.

El atajo práctico: ejecute el winget install --scope machine comando anterior en una sesión de PowerShell con permisos de administrador. Si tiene éxito allí, funcionará en Level.


Preguntas frecuentes

  • ¿Level usa el winget estándar de Microsoft o su propia versión? Las acciones de paquetes de Level usan la API del Administrador de paquetes de Windows de Microsoft. La acción separada Instalar Winget instala la herramienta independiente winget.exe herramienta de línea de comandos. Ejecutar una acción de paquete no garantiza que winget.exe está disponible en el PATH.

  • No encuentro un ID de paquete. ¿Dónde busco? Busque en el repositorio winget-pkgs o ejecute winget search <name> en una sesión de PowerShell en un dispositivo donde está instalada la CLI independiente. El ID que encuentre es el que se introduce en la acción de Level.

  • ¿Puedo ejecutar comandos de winget directamente desde el terminal de Level? Sí, cuando winget.exe está instalado y disponible en el dispositivo. El terminal en segundo plano de Level se ejecuta como SYSTEM, por lo que las restricciones de ámbito de máquina y contexto SYSTEM también se aplican allí. Las acciones de paquetes usan la API del Administrador de paquetes de Windows en lugar del proceso de terminal, así que use comandos directos como diagnóstico en lugar de asumir que todos los resultados serán idénticos.

  • Un paquete fue agregado recientemente a winget-pkgs pero Level no lo muestra como disponible. Los datos del catálogo de Level pueden ir ligeramente por detrás del repositorio de la comunidad. Si un paquete muy reciente no aparece, compruebe si el ámbito de máquina ya está definido en el manifiesto.

¿Ha quedado contestada tu pregunta?