fix(desktop): ship the VC++ runtime the Windows voice wheels need
onnxruntime (wake word) and ctranslate2 (local speech-to-text) link against msvcp140.dll and msvcp140_1.dll, which the managed CPython does not ship. On Windows without the system VC++ Redistributable both imports failed with "DLL load failed: The specified module could not be found", so "Hey Hermes" and voice chat transcription never worked. - Bundle the Microsoft-signed VC143 CRT set (14.44.35211, matching the managed CPython's vcruntime140) as a Windows extra resource with a SHA-256 manifest. - Before every local backend start, copy missing or mismatching CRT files beside the managed python.exe (the process image directory, searched first), verifying digests; never overwrite the interpreter's own vcruntime and never block boot. Existing installs heal on their next launch. - Report an unloadable native voice wheel as a VC++ runtime problem in the wake-word requirements, local transcription and `hermes doctor`, instead of treating installed package metadata as proof the wheel loads. - Bump AITURK IDE to 1.0.0-beta.12. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9a1d831d4b
commit
233885d3a7
20 files changed
+684
-5
No files matched your search
+21
-1
@@ -1474,7 +1474,27 @@ def run_doctor(args):
|
||||
check_ok(name, "(optional)")
|
||||
except ImportError:
|
||||
check_warn(name, "(optional, not installed)")
|
||||
|
||||
|
||||
if sys.platform == "win32":
|
||||
# Voice wheels can be installed yet unloadable when the Microsoft VC++
|
||||
# runtime is missing; package presence alone hides that failure.
|
||||
from tools.windows_native_runtime import native_load_error
|
||||
|
||||
for module, name in (
|
||||
("onnxruntime", "ONNX Runtime (wake word)"),
|
||||
("ctranslate2", "CTranslate2 (local speech-to-text)"),
|
||||
):
|
||||
try:
|
||||
installed = importlib.util.find_spec(module) is not None
|
||||
except (ImportError, ValueError):
|
||||
installed = False
|
||||
if not installed:
|
||||
continue
|
||||
if native_load_error(module) is None:
|
||||
check_ok(name, "(native runtime loads)")
|
||||
else:
|
||||
check_warn(name, "(Microsoft VC++ runtime missing - restart AITURK IDE to restore it)")
|
||||
|
||||
_section("Configuration Files")
|
||||
# Managed scope (administrator-pinned config/env), when present.
|
||||
managed_scope_check()
|
||||
|
||||
Reference in new issue
Block a user