Page 1 of 1

Using the WaptWUA class in a script

Published: July 3, 2026 - 11:26 AM
by tux
Good morning,

I have an audit script that performs a number of operations during a time range, at night.
Part of this script manages Windows updates.

We have just performed the update (version 2.6.1.17384) and my script no longer works.
The goal is to do the same thing as a "wapt-get waptwua-install" without a scheduled task.

Here is the section of code that is causing me problems:

Code: Select all

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

def audit():
	with EnsureWUAUServRunning():
            wua_client = WaptWUA(WAPT)
            wua_client.install_updates()
Here is the error I am getting:

Code: Select all

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)>:
Can you help me adapt this script?

Re: Using the WaptWUA class in a script

Published: July 3, 2026 - 4:35 PM
by htouvet
Ah... maybe a regression

Can you try the script by adding a pythoncom.CoInitialize()?

Code: Select all

# -*- 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()

Re: Using the WaptWUA class in a script

Published: July 3, 2026 - 5:03 PM
by tux
I have a different error:

Code: Select all

Exception at 7343A590: EAccessViolation:
Access violation.

Re: Using the WaptWUA class in a script

Published: July 3, 2026 - 6:59 PM
by htouvet
Are you sure you're on the latest version, 2.6.1.17834?
I ran a test but couldn't reproduce the access violation.
However, these "Access violation" errors are often dependent on the previous memory state.

Re: Using the WaptWUA class in a script

Published: July 6, 2026 - 9:08 AM
by tux
Good morning,

Yes, I am indeed on version 2.6.1.17834, I have not yet updated my signature.
I just tested it this morning on my newly started machine, and I'm getting the same problem.

Can calling the pythoncom.CoUninitialize() function have an impact on PyScripter?

Code: Select all

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 ***
>>>