fix(ci): bundle MSVC x64 CRT so nightly runs without VC++ Redistributable - #118
Merged
Merged
Conversation
…able The shipped x64 exe links the MSVC runtime dynamically (Release|x64 = /MD), so it needs vcruntime140.dll, vcruntime140_1.dll and msvcp140.dll at runtime. Only third-party libs (SDL, zlib, ...) were bundled, so on a fresh machine without the VC++ Redistributable installed the game failed with missing DLLs. Copy the CRT app-local next to the exe in the publish job (MS-sanctioned redistribution) and add an x64-zip regression guard. UCRT (ucrtbase.dll) ships with Windows 10+ so it is not bundled. WinXP (static) and Linux/macOS (own runtime) are unaffected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
NonPolynomialTim
enabled auto-merge (squash)
August 1, 2026 13:31
Collaborator
|
For a moment, I thought I had broken something while working on the macOS build 😅 |
Collaborator
Author
|
Hahaha nope, you're good, this was pre-existing, but was only an issue on brand new machines that had never installed the C++ redistributable before which is why I never caught it in any of my tests |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Player report: a nightly build "requires C++ Redistributable since DLL are missing... tried to install on a fresh machine".
The shipped x64 exe links the MSVC runtime dynamically (
OpenXcom.2010.vcxprojRelease|x64=MultiThreadedDLL, i.e./MD), so at runtime it needsvcruntime140.dll,vcruntime140_1.dllandmsvcp140.dll. CI only bundled the third-party libs (deps\lib\x64\*.dll— SDL, zlib, libsodium, …), never the MSVC runtime. On a fresh Windows machine without the VC++ Redistributable installed, the game fails to start with missing DLLs.Only the x64 MSVC build is affected — the WinXP build is MinGW
*.static(self-contained) and Linux/macOS bundle their own runtime.Fix (option A: app-local CRT deploy)
publishstep locates the MSVC x64 CRT viavswhereand copies the three DLLs intobin\x64\Releasebefore packaging (thePackagestep already globsbin\x64\Release\*.dllinto the zip). App-local deployment of the CRT is Microsoft-sanctioned.ucrtbase.dll) ships with Windows 10+, so it is deliberately not bundled.Fails loudly if
vswhere/ the redist dir / any DLL is not found, so a broken runtime layout can't silently ship.🤖 Generated with Claude Code