Bundle Visual C++ Redistributable in Windows NSIS installer#11060
Open
JosephMcEvoy wants to merge 1 commit intoEugeny:masterfrom
Open
Bundle Visual C++ Redistributable in Windows NSIS installer#11060JosephMcEvoy wants to merge 1 commit intoEugeny:masterfrom
JosephMcEvoy wants to merge 1 commit intoEugeny:masterfrom
Conversation
On fresh Windows installations without the VC++ Redistributable, Tabby shows the splash screen but the terminal never loads because native modules (node-pty) require vcruntime140.dll and msvcp140.dll. The NSIS installer now checks for vcruntime140.dll at install time and silently installs the VC++ Redistributable if missing. The CI workflow downloads the appropriate redistributable (x64 or arm64) before building. Fixes Eugeny#10734, Eugeny#10782, Eugeny#10450, Eugeny#10284
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.
Summary
On fresh Windows installations without the Visual C++ Redistributable, Tabby shows the splash screen but the terminal never loads. This is because native modules (
node-pty) requirevcruntime140.dllandmsvcp140.dll, which are not bundled with Tabby and not installed by the NSIS installer.Changes
build/installer.nsh— Added acustomInstallmacro that:vcruntime140.dllexists in the system directoryDetailPrint.github/workflows/build.yml— Added a CI step to download the correct VC++ Redistributable (x64 or arm64 based on build matrix) into thebuild/directory before packaging. This makes it available to the NSIS${BUILD_RESOURCES_DIR}at installer build time.How it works
${BUILD_RESOURCES_DIR}pointing to thebuild/directorycustomInstallmacro uses the NSISFiledirective to embedvc_redist.exefrom that directory into the installervcruntime140.dllis already present, the step is skipped entirely (no extraction, no execution)$PLUGINSDIR(temp) and run with/install /quiet /norestartImpact
Test results
All tests run on fresh Windows 11 VMs (Vagrant + Hyper-V,
gusztavvargadr/windows-11box) with no prior software installed.Baseline: official v1.0.230 on fresh Windows 11
The official installer does not install the VC++ Redistributable. On a fresh Windows 11 VM, Electron starts and discovers all 12 plugins, but three plugins with native module dependencies fail to load:
Without the
electronandsshplugins, the terminal cannot function. Tabby remains stuck on the splash screen indefinitely:All processes alive but no window title — splash screen only, no terminal.
With this PR: custom build on fresh Windows 11
The NSIS macro detected the missing VC++ runtime, installed it silently during setup, and Tabby launched successfully.
Test checklist
vc_redist.exeis embedded (installer size increased from ~127MB to ~152MB)Related issues
Fixes #10734, #10782, #10450, #10284