# Windows application compatibility

Vuka uses Wine and native Linux alternatives; it does not contain Windows, Microsoft DLL bundles, product keys, installation media, or a Windows license. Compatibility is application-specific and must be recorded against an exact application and runner version.

## Included layers

- Wine 64-bit plus i386 Wine and Mesa/Vulkan libraries for WoW64 and older Win32 software.
- Wine Mono `9.4.0`, the version expected by the packaged Wine `10.0`, cached locally for new-prefix .NET Framework compatibility.
- Both Wine Gecko `2.47.4` architectures, cached locally for HTML/MSHTML support in 64-bit WoW64 prefixes.
- Winetricks `20260125`, installed from its exact tagged upstream script after SHA-256 verification, for explicit per-prefix component installation.
- Lutris for managed game/application runners.
- GameMode, MangoHud, OpenGL and Vulkan diagnostic tools.
- Remmina for connecting to a real Windows machine over RDP.
- Samba/SMB clients and NTFS read/write support for Windows-oriented storage and shares.

Vuka does not silently run downloaded `.exe` or `.msi` files. Opening one invokes `vuka-run-windows`, which displays the exact path, SHA-256 digest and isolated Wine prefix, then requires confirmation. Each unique file digest receives a prefix under:

```text
~/.local/share/vuka/windows-prefixes/<first-16-sha256-characters>
```

Execution logs are stored under `~/.local/state/vuka/windows/`. Use the **Windows Prefixes** launcher or `vuka-wine-prefixes --list` to inspect created prefixes.

Wine Mono and Gecko are not fetched during prefix creation. The exact WineHQ MSIs, URLs and SHA-256 values are pinned in `upstream/WINDOWS_RUNTIME.env`; preflight rejects a changed download and the image hook verifies the installed copy again. Wine finds them in its standard `/usr/share/wine/mono` and `/usr/share/wine/gecko` paths. These compatibility layers do not turn Wine into Windows and do not guarantee that every .NET or embedded-browser application works.

Fresh WoW64 prefixes are not considered ready merely because Wine has written `system.reg`. Vuka waits for both 64-bit and 32-bit `kernel32.dll` payloads and executes both the 64-bit and `syswow64` command processors before launching the requested file. The same repair check applies to an interrupted existing prefix. The readiness wait is bounded at ten minutes and fails visibly instead of racing incomplete setup on slow USB or virtual storage.

## Command-line use

```bash
vuka-run-windows ~/Downloads/application.exe
vuka-run-windows ~/Downloads/installer.msi
vuka-wine-prefixes --list
```

`--yes` exists for deliberate automation and bypasses only Vuka's confirmation dialog; it does not weaken Wine or grant root privileges. Never use it on an untrusted file.

## Compatibility expectations

Often workable:

- portable Win32 utilities;
- conventional MSI/EXE installers;
- many DirectX applications translated through Wine/Vulkan;
- applications already catalogued as working by WineHQ or Lutris.

Commonly unsupported or unreliable:

- kernel drivers, hardware vendor control panels and firmware flashers;
- Microsoft Store/UWP applications;
- kernel anti-cheat systems that reject Wine or virtualized environments;
- applications that require unsupported DRM;
- current Microsoft 365 desktop and Adobe Creative Cloud suites without application-specific workarounds.

Use Remmina/RDP or a Windows virtual machine for software that genuinely requires Windows. Vuka must never describe Wine compatibility as a guarantee.

## Release test matrix

Record application name/version, installer digest, runner, prefix, GPU/driver, result, limitations and date for each case:

1. simple 64-bit portable executable;
2. simple 32-bit executable;
3. MSI install, launch and uninstall;
4. .NET desktop application;
5. DirectX/Vulkan application through Lutris;
6. SMB share access and NTFS removable storage;
7. Remmina/RDP session to a Windows host.

The source-controlled acceptance fixtures live under `tests/windows/`. They compile into native 32-bit and 64-bit PE console programs, a Windows Forms .NET program, a Direct3D 9 program and a real x64 MSI. `scripts/guest-windows-acceptance.sh` verifies the generated fixture manifest, opt-in refusal, isolated prefixes and logs, Win32/WoW64 execution, Wine Mono, Direct3D, MSI install/launch/uninstall cleanup and Vulkan diagnostics in an installed Vuka VM. The generated binaries are evidence artifacts and are not committed or embedded in the ISO; each fixture build writes its exact `SHA256SUMS` because the MSI toolchain assigns a new package code.

SMB, NTFS and RDP require real peer devices or media. Their packages and configuration are present, but a VM-only run cannot truthfully replace a Windows host, SMB server or removable disk test.
