Repository navigation
installer: support Windows 11 ARM64 via ARM64X forwarder DLL - #965
Merged
Merged
Conversation
PCMan
force-pushed
the
feature-nsis-arm64x
branch
7 times, most recently
from
October 18, 2026 22:37
9737076 to
5045d10
Compare
PCMan
force-pushed
the
feature-nsis-arm64x
branch
from
October 19, 2026 04:11
5045d10 to
6d42ff1
Compare
PCMan
force-pushed
the
feature-nsis-arm64x
branch
5 times, most recently
from
October 19, 2026 08:40
c18eb73 to
04d9c9e
Compare
On Windows 11 on ARM64, native ARM64 and emulated x64 host processes share a single 64-bit InprocServer32 registry space. Registering either a pure ARM64 DLL or an x64 DLL causes applications of the other architecture to fail to load the text service. Deploy an ARM64X forwarder DLL as PIMETextService.dll to dynamically forward COM export calls to either PIMETextService_arm64.dll or PIMETextService_x64.dll depending on the calling process architecture: - Build native ARM64 binary as PIMETextService_arm64.dll and ARM64X forwarder as PIMETextService.dll in CMake. - Add PIMETextService_arm64x_arm64.def and PIMETextService_arm64x_x64.def module definitions for export forwarding. - Update libIME2 to support registering custom forwarder DLL paths, and strip the _arm64 suffix in DllRegisterServer on ARM64. - In installer.nsi, extract all three ARM64 DLLs and register only the ARM64X forwarder DLL. - In macros.nsh, add ARM64 binaries to CleanOldBinaries. - Update CI signing workflow to sign both PIMETextService_arm64.dll and PIMETextService.dll. Generated with assistance from Antigravity (Gemini 3.8 Flash).
PCMan
force-pushed
the
feature-nsis-arm64x
branch
from
October 19, 2026 08:43
04d9c9e to
36085a5
Compare
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.
On Windows 11 on ARM64, native ARM64 and emulated x64 host processes share a single 64-bit InprocServer32 registry space. Registering either a pure ARM64 DLL or an x64 DLL causes applications of the other architecture to fail to load the text service.
Deploy an ARM64X forwarder DLL as PIMETextService.dll to dynamically forward COM export calls to either PIMETextService_arm64.dll or PIMETextService_x64.dll depending on the calling process architecture:
PIMETextService_arm64.dlland ARM64X forwarder asPIMETextService.dllin CMake.PIMETextService_arm64x_arm64.defandPIMETextService_arm64x_x64.defmodule definitions for export forwarding._arm64suffix inDllRegisterServeron ARM64.installer/installer.nsi, extract all three ARM64 DLLs (PIMETextService.dll,PIMETextService_arm64.dll,PIMETextService_x64.dll) with directFilecommands and register/unregister only the ARM64X forwarder DLL.installer/macros.nsh, addPIMETextService_arm64.dllandPIMETextService_x64.dlltoCleanOldBinaries.PIMETextService_arm64.dllandPIMETextService.dll.Generated with assistance from Antigravity (Gemini 3.8 Flash).