Skip to content

installer: support Windows 11 ARM64 via ARM64X forwarder DLL - #965

Merged
PCMan merged 1 commit into
masterfrom
feature-nsis-arm64x
Oct 19, 2026
Merged

PCMan merged 1 commit into
masterfrom
feature-nsis-arm64x

Conversation

@PCMan

@PCMan PCMan commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

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/installer.nsi, extract all three ARM64 DLLs (PIMETextService.dll, PIMETextService_arm64.dll, PIMETextService_x64.dll) with direct File commands and register/unregister only the ARM64X forwarder DLL.
  • In installer/macros.nsh, add PIMETextService_arm64.dll and PIMETextService_x64.dll 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
PCMan force-pushed the feature-nsis-arm64x branch 7 times, most recently from 9737076 to 5045d10 Compare October 18, 2026 22:37
@PCMan PCMan changed the title installer: support ARM64X forwarding in NSIS installer installer: support Windows 11 ARM64 via ARM64X forwarder DLL Oct 18, 2026
@PCMan
PCMan force-pushed the feature-nsis-arm64x branch from 5045d10 to 6d42ff1 Compare October 19, 2026 04:11
@PCMan
PCMan force-pushed the feature-nsis-arm64x branch 5 times, most recently from c18eb73 to 04d9c9e Compare October 19, 2026 08:40
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
PCMan force-pushed the feature-nsis-arm64x branch from 04d9c9e to 36085a5 Compare October 19, 2026 08:43
@PCMan PCMan self-assigned this Oct 19, 2026
@PCMan
PCMan merged commit 1458cea into master Oct 19, 2026
4 of 6 checks passed
@PCMan
PCMan deleted the feature-nsis-arm64x branch October 19, 2026 08:51
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.

1 participant