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 aplicar el ámbito de máquina en todas las operaciones. La mayoría de los fallos de instalación y actualización se deben a una de estas dos restricciones. Comprenderlas de antemano resuelve la gran mayoría de los problemas notificados.


Cómo ejecuta Level Winget

Dos cosas son siempre ciertas 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 máquina: Level añade --scope machine a todas las operaciones de winget. Solo los paquetes con un ámbito de máquina definido en su manifiesto 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 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 un registro distintos a los 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 inexistente.

No hay solución alternativa para los paquetes que requieren fundamentalmente 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 máquina. Un paquete puede instalarse correctamente como administrador sin --scope machine pero fallan cuando se requiere el ámbito de máquina.

Pruébalo directamente para confirmarlo:

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

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

Puedes verificarlo ejecutando tú 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 del paquete agota el tiempo de espera en Level pero funciona mediante PowerShell de administrador

Esto es poco frecuente. Ocurre cuando el instalador del paquete no gestiona 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 Upgrade Winget Package acción tiene un campo incorporado Paquete(s) excluido(s) campo. Introduce uno o más ID de paquete allí y esos paquetes se omiten durante la ejecución de la actualización — no se necesitan bloqueos ni soluciones alternativas en la línea de comandos.

Exclude Winget Package

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

La comprobació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 de administrador. Si funciona allí, funcionará en Level.


Preguntas frecuentes

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

  • No encuentro el ID de un 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 está instalado el winget de Level. El ID que encuentres es el que debes introducir 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 máquina y contexto SYSTEM también se aplican allí. Prueba los comandos en el terminal primero antes de integrarlos en 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 ir ligeramente por detrás del repositorio de la comunidad. Si un paquete muy reciente no aparece, comprueba si el --scope machine ámbito aún no está definido en el manifiesto.

¿Ha quedado contestada tu pregunta?