Pagina 1 di 1

Utilizzo della classe WaptWUA in uno script

Pubblicato: 3 luglio 2026 - 11:26
di tux
Buongiorno,

Ho uno script di controllo che esegue una serie di operazioni durante un determinato intervallo di tempo, di notte.
Una parte di questo script gestisce gli aggiornamenti di Windows.

Abbiamo appena effettuato l'aggiornamento (versione 2.6.1.17384) e il mio script non funziona più.
L'obiettivo è ottenere lo stesso risultato di un "wapt-get waptwua-install" senza però utilizzare un'attività pianificata.

Ecco la porzione di codice che mi sta causando problemi:

Codice: Seleziona tutto

# -*- coding: utf-8 -*-
from setuphelpers import *
from waptwua.client import WaptWUA

def audit():
	with EnsureWUAUServRunning():
            wua_client = WaptWUA(WAPT)
            wua_client.install_updates()
Ecco l'errore che ricevo:

Codice: Seleziona tutto

2026-07-03 10:53:13,522 ERROR ERROR installing update: 0x800401f0 : CoInitialize n’a pas été appelé.
2026-07-03 10:53:13,768 CRITICAL Unable to build status data for key host_networking: x_wmi_uninitialised_thread("WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex]")
2026-07-03 10:53:13,773 CRITICAL WMI is broken on this computer. See https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-rebuilding-the-wmi-repository/ba-p/373846 : x_wmi_uninitialised_thread: <x_wmi: WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)>
[]
re-enabling wuauserv previous state: 0
2026-07-03 10:53:14,246 CRITICAL Fatal error in audit function: x_wmi_uninitialised_thread: <x_wmi: WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)>:
Potresti aiutarmi ad adattare questa sceneggiatura?

Oggetto: Utilizzo della classe WaptWUA in uno script

Pubblicato: 3 luglio 2026 - 16:35
di htouvet
Ah... forse una regressione

Puoi provare lo script aggiungendo pythoncom.CoInitialize()?

Codice: Seleziona tutto

# -*- coding: utf-8 -*-
from setuphelpers import *
from waptwua.client import WaptWUA
import pythoncom

def audit():
    try:
        pythoncom.CoInitialize()
    	with EnsureWUAUServRunning():
                wua_client = WaptWUA(WAPT)
                wua_client.install_updates()
    finally:
        pythoncom.CoUninitialize()

Oggetto: Utilizzo della classe WaptWUA in uno script

Pubblicato: 3 luglio 2026 - 17:03
di tux
Ho un errore diverso:

Codice: Seleziona tutto

Exception at 7343A590: EAccessViolation:
Access violation.

Oggetto: Utilizzo della classe WaptWUA in uno script

Pubblicato: 3 luglio 2026 - 18:59
di htouvet
Sei sicuro di avere la versione più recente, la 2.6.1.17834?
Ho eseguito un test ma non sono riuscito a riprodurre la violazione di accesso.
Tuttavia, questi errori di "Violazione di accesso" dipendono spesso dallo stato precedente della memoria.

Oggetto: Utilizzo della classe WaptWUA in uno script

Pubblicato: 6 luglio 2026 - 09:08
di tux
Buongiorno,

Sì, ho effettivamente la versione 2.6.1.17834, non ho ancora aggiornato la mia firma.
L'ho appena testato stamattina sul mio computer appena avviato e riscontro lo stesso problema.

La chiamata alla funzione pythoncom.CoUninitialize() può avere un impatto su PyScripter?

Codice: Seleziona tutto

Scanning with windows updates rules:
{
 "direct_download":false,
 "default_allow":false,
 "include_potentially_superseded_updates":false,
 "filter":"Type='Software' or Type='Driver'",
 "download_scheduling":"12h",
 "install_scheduling":"6h",
 "install_delay":null,
 "postboot_delay":"10m",
 "user_locale":1033
}
Bypassing scan, no change since last successful scan
Exception at 728BA590: EAccessViolation:
Access violation.
>>> 
*** Remote Interpreter Reinitialized ***
>>>