Skip to content

installer: remove obsolete VCRedist bootstrap and inetc (#966) - #976

Merged
PCMan merged 2 commits into
EasyIME:masterfrom
asdf80730:fix/966-remove-vcredist
Oct 24, 2026
Merged

PCMan merged 2 commits into
EasyIME:masterfrom
asdf80730:fix/966-remove-vcredist

Conversation

@asdf80730

@asdf80730 asdf80730 commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Draft: depends on #975. Do not mark ready or merge before #975 lands.

Summary

 installer/installer.nsi
-  Function ensureVCRedist            # 47 lines
-  Call ensureVCRedist                # TODO + comment + call
-  !addplugindir ... inetc            # 3 lines
 installer/macros.nsh
-  DownloadAndInstallVCRedist macro   # 40 lines
 installer/locale/{English,SimpChinese,TradChinese}.nsh
-  DOWNLOAD_VCREDIST_QUESTION / DOWNLOAD_VCREDIST_FAILED_MESSAGE / INST_VCREDIST_FAILED_MESSAGE
 installer/inetc/**                   # 39 vendored files

The check was a Windows 7/8.1 relic. Windows 10 is the minimum supported OS,
so ucrtbase.dll is in-box. After the launcher links the MSVC CRT statically
(#975), no shipped binary imports a redistributable DLL: the only
vcruntime140.dll is python\python3\vcruntime140.dll, which the interpreter
loads from its own directory. The check tested msvcp140.dll, which no shipped
binary imports, and its download prompt aborted offline installations before
anything was copied.

inetc had no caller outside the deleted macro, so the plugin and its
!addplugindir line go too. StdUtils is a separate plugin and stays.

Depends on #975. Without it, removing this check leaves the launcher without
VCRUNTIME140.dll on a clean machine. Merge #975 first.

Closes #966.

Verification

Fork CI run 39446806581:
build.bat, the launcher dependency gate and makensis all pass. Static
checks: git grep -E 'VCREDIST|vc_redist' -- installer and
git grep inetc -- installer return nothing.

Generated with assistance from omp (DeepSeek V4.1 Flash).

PIMELauncher.exe imports VCRUNTIME140.dll: Rust links the MSVC CRT
dynamically by default, so the /MT policy in the root CMakeLists.txt does
not cover it. The installer is about to drop its VC++ redistributable
bootstrap (EasyIME#966), and the tree ships no vcruntime140.dll outside
python\python3, which is not on the launcher's DLL search path.

Pass +crt-static through Corrosion and fail the Windows build if
dumpbin still reports VCRUNTIME140 or MSVCP140 for the launcher.

Generated with assistance from omp (DeepSeek V4.1 Flash).
Windows 10 is the minimum supported OS, so the UCRT is in-box. After the
launcher links the MSVC CRT statically (052467d), no shipped binary needs a
redistributable DLL: the only vcruntime140.dll is the copy inside
python\python3, which the interpreter loads itself. The check tested
msvcp140.dll, which no shipped binary imports, and its download aborted
offline installs.

inetc had no other caller, so drop the plugin and its vendored files along
with the function, call site, macro and locale strings.

Generated with assistance from omp (DeepSeek V4.1 Flash).
@asdf80730 asdf80730 changed the title Fix/966 remove vcredist installer: remove obsolete VCRedist bootstrap and inetc (#966) installer: remove obsolete VCRedist bootstrap and inetc (#966) Oct 21, 2026
@asdf80730

Copy link
Copy Markdown
Contributor Author

This is stacked on #975: removing the redistributable bootstrap only holds once the
launcher no longer imports VCRUNTIME140.dll. #983 reproduces the failure mode on Windows
11 ARM64 today — the x86 launcher loads an ARM64 vcruntime140.dll from PATH and dies
with 0xc000007b, and the installer never placed the x86 runtime there.

@PCMan

PCMan commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

This is the correct architectural fix for #966. Since Windows 10 is the minimum supported OS (Universal CRT is in-box), all native binaries link statically with /MT (and #975 links the launcher), the entire Win7/8-era ensureVCRedist check, translation strings, and the 39 vendored inetc files can be safely deleted. Ready to land once #975 is merged. LGTM!

(Review comment generated with assistance from Antigravity + Gemini 3.8 Flash)

@PCMan
PCMan marked this pull request as ready for review October 24, 2026 22:29
@PCMan
PCMan merged commit 3dbea11 into EasyIME:master Oct 24, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

installer: remove obsolete ensureVCRedist check and VC++ redistributable download

2 participants