[Windows][P2] Visual C++-runtime wordt niet meegeleverd; de rookproef kan dat niet zien #2630

Closed
opened 2026-10-28 16:31:45 +00:00 by brenno · 0 comments
Owner

Symptoom

Op een (vrijwel) schone Windows 10/11-installatie start OciDeck niet, met een melding als "MSVCP140.dll / VCRUNTIME140_1.dll ontbreekt", of zonder zichtbare melding als een plugin-DLL niet laadt.

Oorzaak

Flutter-apps voor Windows en hun native plugins (o.a. flutter_webrtc, pdfrx/PDFium, dartcv4/OpenCV, video_player) zijn met MSVC gebouwd en hebben de Visual C++-runtime nodig. Flutter levert die niet mee; de documentatie vraagt msvcp140.dll, vcruntime140.dll en vcruntime140_1.dll naast de .exe te zetten of de redistributable te installeren.

  • windows/CMakeLists.txt:75-108 installeert alleen app, Flutter-engine, plugins en native assets;
  • packaging/windows/ocideck.iss ([Files]) pakt exact die bundel in; er is geen redist-stap;
  • de zip-distributie heeft hetzelfde gat.

Op veel machines staat de runtime er al (meegebracht door andere software), daarom valt het niet bij iedereen op.

De rookproef kan dit niet zien: de Windows-release (.github/workflows/release.yml, smoke-test vanaf regel 223) draait op windows-latest, waar Visual Studio — en dus de runtime — al is geïnstalleerd. Ook toetst die proef alleen dat het proces na 15 s nog leeft (regel 265-269), niet dat er een venster of eerste frame kwam.

Voorgestelde oplossing

  1. De drie runtime-DLL's app-lokaal meeleveren: in windows/CMakeLists.txt include(InstallRequiredSystemLibraries) met de installatiebestemming naast ocideck.exe (zelfde map als flutter_windows.dll). Geldt dan voor zip én installer. Licentie: de VC++-redistributable mag met een app worden meegeleverd; vermelden in THIRD_PARTY_NOTICES.md.
  2. Rookproef uitbreiden: eisen dat de runtime-DLL's in de bundel staan, en (met #2618) dat de mijlpaal "eerste frame" in het log staat. Ideaal: de installer ook eens draaien in een Windows-container/Sandbox zonder Visual Studio.

Toets

foreach ($f in @('msvcp140.dll','vcruntime140.dll','vcruntime140_1.dll')) in de bestaande payloadcontrole van de rookproef.

Onderdeel van de prestatie- en stabiliteitsinspectie van 28-10-2026 (EPIC #2637).

## Symptoom Op een (vrijwel) schone Windows 10/11-installatie start OciDeck niet, met een melding als "MSVCP140.dll / VCRUNTIME140_1.dll ontbreekt", of zonder zichtbare melding als een plugin-DLL niet laadt. ## Oorzaak Flutter-apps voor Windows en hun native plugins (o.a. `flutter_webrtc`, `pdfrx`/PDFium, `dartcv4`/OpenCV, `video_player`) zijn met MSVC gebouwd en hebben de Visual C++-runtime nodig. Flutter levert die niet mee; de documentatie vraagt `msvcp140.dll`, `vcruntime140.dll` en `vcruntime140_1.dll` naast de `.exe` te zetten of de redistributable te installeren. - `windows/CMakeLists.txt:75-108` installeert alleen app, Flutter-engine, plugins en native assets; - `packaging/windows/ocideck.iss` (`[Files]`) pakt exact die bundel in; er is geen redist-stap; - de zip-distributie heeft hetzelfde gat. Op veel machines staat de runtime er al (meegebracht door andere software), daarom valt het niet bij iedereen op. **De rookproef kan dit niet zien**: de Windows-release (`.github/workflows/release.yml`, smoke-test vanaf regel 223) draait op `windows-latest`, waar Visual Studio — en dus de runtime — al is geïnstalleerd. Ook toetst die proef alleen dat het proces na 15 s nog leeft (regel 265-269), niet dat er een venster of eerste frame kwam. ## Voorgestelde oplossing 1. De drie runtime-DLL's app-lokaal meeleveren: in `windows/CMakeLists.txt` `include(InstallRequiredSystemLibraries)` met de installatiebestemming naast `ocideck.exe` (zelfde map als `flutter_windows.dll`). Geldt dan voor zip én installer. Licentie: de VC++-redistributable mag met een app worden meegeleverd; vermelden in `THIRD_PARTY_NOTICES.md`. 2. Rookproef uitbreiden: eisen dat de runtime-DLL's in de bundel staan, en (met #2618) dat de mijlpaal "eerste frame" in het log staat. Ideaal: de installer ook eens draaien in een Windows-container/Sandbox zonder Visual Studio. ## Toets `foreach ($f in @('msvcp140.dll','vcruntime140.dll','vcruntime140_1.dll'))` in de bestaande payloadcontrole van de rookproef. Onderdeel van de prestatie- en stabiliteitsinspectie van 28-10-2026 (EPIC #2637).
brenno 2026-10-29 12:20:01 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2630
No description provided.