Ir al contenido principal

Solución de problemas de Winget

Resuelva problemas comunes con Level y winget.

Actualizado hoy

Las acciones de Winget de Level se ejecutan como el usuario SYSTEM e imponen el alcance de la máquina en todas las operaciones. La mayoría de los errores de instalación y actualización se remontan a una de estas dos restricciones. Comprenderlas de antemano resuelve la mayoría de los problemas reportados.


Cómo Level ejecuta Winget

Dos cosas son siempre verdaderas para cada acción de Winget de Level:

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

  2. Impone el alcance de la máquina: Level agrega --scope machine a todas las operaciones de Winget. Solo los paquetes con un alcance de máquina definido en su manifiesto pueden instalarse o actualizarse a través de Level.

Estas dos restricciones explican casi todos los informes "funciona en PowerShell pero no en Level".


Problemas comunes

El paquete se instala a través de PowerShell pero no a través de Level

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

No hay solución para 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 ejecute en un contexto de usuario específico.


El paquete se instala como administrador pero no a través de Level

Level impone el alcance de la máquina. Un paquete puede instalarse correctamente como administrador sin --scope machine pero falla cuando se requiere el alcance de la máquina.

Pruébelo directamente para confirmar:

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 de alcance de máquina. Level no puede instalarlo a través de la acción de Winget. Las únicas opciones son encontrar un ID de paquete alternativo que admita el alcance de máquina, o instalarlo a través de una acción Ejecutar script con un instalador diferente.


La acción de actualización muestra menos paquetes de lo esperado

Level agrega --scope machine a los escaneos de actualización, por lo que solo las instalaciones con alcance de máquina aparecen en la lista de actualización.

Puede verificar ejecutando el comando equivalente usted mismo:

winget upgrade --scope machine --all

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


La instalación del paquete agota el tiempo en Level pero funciona a través de PowerShell de administrador

Esto es raro. Sucede cuando el instalador del paquete no maneja correctamente el modo silencioso/quieto y espera una interacción del usuario que nunca puede llegar, ya que Level se ejecuta como SYSTEM sin interfaz. No hay solución para esto: el problema está con el instalador en sí. Consulte 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 tiene un campo integrado Paquete(s) excluido(s). Ingrese uno o más ID de paquete allí y esos paquetes se omitirán durante la ejecución de la actualización — no se necesita fijación ni soluciones de línea de comandos.

Excluir paquete de Winget

Verificar si un paquete admite el alcance de la máquina

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

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


Preguntas frecuentes

  • ¿Level utiliza el Winget estándar de Microsoft o su propia versión? Level instala y gestiona su propia implementación de Winget. La acción Instalar Winget (o cualquier otra acción de Winget, que la instala automáticamente) configura la versión gestionada de Level. Esto garantiza un comportamiento consistente en todos sus dispositivos, independientemente de qué versión de Winget (si la hay) ya estaba presente.

  • No puedo encontrar un ID de paquete. ¿Dónde debo buscar? Busque en el repositorio winget-pkgs o ejecute winget search <name> en una sesión de PowerShell en un dispositivo donde esté instalado Winget de Level. El ID que encuentre es lo que ingresa en la acción de Level.

  • ¿Puedo ejecutar comandos de Winget directamente desde la terminal de Level? Sí. La terminal de fondo de Level se ejecuta como SYSTEM, por lo que las restricciones de alcance de máquina y contexto de SYSTEM también se aplican allí. Pruebe primero los comandos en la terminal antes de integrarlos en una automatización.

  • Un paquete se agregó recientemente a winget-pkgs pero Level no lo muestra como disponible. La implementación de Winget de Level puede estar ligeramente retrasada con respecto al repositorio de la comunidad. Si un paquete muy reciente no aparece, verifique si el alcance --scope machine aún no se define en el manifiesto.

¿Ha quedado contestada tu pregunta?