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 de usuario y aplica el ámbito de equipo 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 reportados.


Cómo Level ejecuta Winget

Dos aspectos son siempre ciertos para cada acción de winget en Level:

  1. Se ejecuta como SYSTEM: Level ejecuta winget bajo el SYSTEM cuenta, no como un usuario con sesión iniciada 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 el ámbito de equipo: Level agrega --scope machine a todas las operaciones de winget. Solo los paquetes con un ámbito de equipo definido en su manifiesto pueden instalarse o actualizarse a través de Level.

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


Problemas comunes

El paquete se instala mediante PowerShell pero no mediante Level

Si puedes instalar un paquete como el usuario actualmente conectado pero la acción de Level falla, la diferencia es el contexto de usuario. Level se ejecuta como SYSTEM, que tiene un entorno y registro diferente al de un usuario con sesión iniciada. 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, considera 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 equipo. Un paquete puede instalarse correctamente como administrador sin --scope machine pero fallan cuando se requiere el ámbito de equipo.

Pruébalo directamente para confirmarlo:

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

Si esto falla en una sesión de PowerShell como administrador, el paquete no proporciona un instalador con ámbito de equipo. 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 equipo, 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 agrega --scope machine a los análisis de actualización, por lo que solo las instalaciones con ámbito de equipo aparecen en la lista de actualizaciones.

Puedes verificarlo ejecutando el comando equivalente tú mismo:

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 del paquete agota el tiempo de espera en Level pero funciona mediante PowerShell como administrador

Esto es poco frecuente. Ocurre cuando el instalador del paquete no maneja correctamente el modo silencioso/desatendido y espera una interacción del usuario que nunca puede llegar, ya que Level se ejecuta como SYSTEM sin interfaz de usuario. No hay solución alternativa para esto: el problema está en el propio instalador. Consulta los problemas abiertos del paquete en el repositorio winget-pkgs.


Excluir un paquete de las actualizaciones automáticas

La acción Actualizar paquete de Winget la acción tiene un campo Paquete(s) excluido(s) campo. Introduce uno o más IDs de paquete allí y esos paquetes se omitirán durante la ejecución de la actualización: no se necesitan anclas ni soluciones alternativas por línea de comandos.

Exclude Winget Package

Verificar si un paquete admite el ámbito de equipo

La verificación definitiva es el manifiesto del paquete en el repositorio winget-pkgs. Busca 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: ejecuta el winget install --scope machine comando anterior en una sesión de PowerShell como administrador. Si tiene éxito allí, funcionará en Level.


Preguntas frecuentes

  • ¿Level usa el winget estándar de Microsoft o su propia versión? Level instala y administra su propia implementación de winget. La acción Instalar Winget acción (o cualquier otra acción de winget, que lo instala automáticamente) configura la versión administrada por Level. Esto garantiza un comportamiento coherente en todos tus dispositivos, independientemente de la versión de winget (si la hay) que ya estuviera presente.

  • No encuentro un ID de paquete. ¿Dónde lo busco? Busca en el repositorio winget-pkgs o ejecuta winget search <name> en una sesión de PowerShell en un dispositivo donde el winget de Level está instalado. El ID que encuentres es el que se introduce en la acción de Level.

  • ¿Puedo ejecutar comandos de winget directamente desde el terminal de Level? Sí. El terminal en segundo plano de Level se ejecuta como SYSTEM, por lo que las restricciones de ámbito de equipo y contexto SYSTEM también aplican allí. Prueba los comandos en el terminal primero antes de incorporarlos a una automatización.

  • Un paquete fue añadido recientemente a winget-pkgs pero Level no lo muestra como disponible. La implementación de winget de Level puede estar ligeramente por detrás del repositorio de la comunidad. Si un paquete muy reciente no aparece, verifica si el --scope machine el ámbito está definido en el manifiesto aún.

¿Ha quedado contestada tu pregunta?