Symptom: jarvis-app.exe failed to start with a MessageBox saying "Точка входа в процедуру TaskDialogIndirect не найдена в библиотеке DLL ... jarvis-app.exe". Loader phase, no log lines ever written. Cause: tray-icon 0.21 / winit 0.30 transitive Win32 imports include TaskDialogIndirect from comctl32.dll, which is a Common-Controls v6 API. Without a side-by-side manifest declaring a dependency on Microsoft.Windows.Common-Controls v6.0.0.0, Windows loads the legacy v5 comctl32 (which does not export TaskDialogIndirect) and the loader rejects the exe before main(). jarvis-gui does not hit this because tauri-build embeds its own manifest as part of the Tauri compile step. jarvis-app had no manifest at all. Fix: - app.manifest: Common-Controls v6 dependency, supportedOS for Win7..Win11, PerMonitorV2 DPI awareness, UTF-8 active code page, asInvoker execution level. - app.manifest.rc: 3-line .rc that embeds the manifest with CREATEPROCESS_MANIFEST_RESOURCE_ID (1) and RT_MANIFEST (24). - build.rs: on cfg(windows), embed_resource::compile() compiles the .rc and links the resulting .res into the exe. rerun-if-changed on the manifest sources. - Cargo.toml: target-windows build-dependency on embed-resource 3. Verified: jarvis-app.exe now runs cleanly through all init steps: commands parsed, audio init, recorder init found "Микрофон (5- Fifine Microphone)", IPC server up on ws://127.0.0.1:9712, VAD already flushing frames. UTF-8 active code page in the manifest also helps russian-character fidelity when win32 APIs are invoked from PowerShell helpers.
37 lines
No EOL
902 B
TOML
37 lines
No EOL
902 B
TOML
[package]
|
|
name = "jarvis-app"
|
|
version.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
edition.workspace = true
|
|
|
|
[dependencies]
|
|
jarvis-core = { path = "../jarvis-core", features = ["intent"] }
|
|
once_cell.workspace = true
|
|
log.workspace = true
|
|
simple-log = "2.4"
|
|
dotenvy.workspace = true
|
|
tray-icon = "0.21"
|
|
winit = "0.30"
|
|
image.workspace = true
|
|
platform-dirs.workspace = true
|
|
rand.workspace = true
|
|
parking_lot.workspace = true
|
|
|
|
tokio = { version = "1", features = ["rt-multi-thread"] }
|
|
|
|
[target.'cfg(windows)'.dependencies.winit]
|
|
version = "0.30"
|
|
features = []
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
winapi = { version = "0.3", features = ["winuser"] }
|
|
winrt-notification.workspace = true
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
gtk = "0.18"
|
|
glib = "0.21.5"
|
|
|
|
[target.'cfg(target_os = "windows")'.build-dependencies]
|
|
embed-resource = "3" |