Skip to content

Support building a universal installer for Windows - #1434

Merged
hiroyuki-komatsu merged 1 commit into
google:masterfrom
ciceroaware:issue_1430
Mar 27, 2026
Merged

hiroyuki-komatsu merged 1 commit into
google:masterfrom
ciceroaware:issue_1430

Conversation

@yukawa

@yukawa yukawa commented Jan 26, 2026

Copy link
Copy Markdown
Collaborator

Description

As a short-term solution for ARM64 support on Windows, this commit adds a new option to build a special variant of the existing x64 installer, which can be installed on both x64 and ARM64 Windows systems.

Basically the idea is to rely on x64 emulation on ARM64 Windows whenever possible, while deploying mozc_tip64x.dll and mozc_tip64arm.dll as the minimum set of ARM64-native binaries. When installed on x64 Windows, we can register mozc_tip64.dll as the COM TIP module as usual. As for ARM64 Windows, on the other hand, we register mozc_tip64x.dll as the COM TIP module as we do so for ARM64 native installer. Other executables such as mozc_server.exe and mozc_renderer.exe can run in both x64 and ARM64 Windows as well as they are built as x64 binaries.

Of course, maintaining two separate installers (x64 and ARM64) is supposed to be the ideal solution in the long run, but this universal installer would help us deploy ARM64 support on Windows in a timely manner.

Note that ARM64 toolchains are not required unless you explicitly specify --config win_universal_installer build option.

Closes #1430

Issue IDs

Steps to test new behaviors (if any)

  • OS: Windows 11 25H2
  • Steps:
    1. Build Mozc64.msi
    2. Confirm that Mozc64.msi can be installed into both x64 and ARM64 Windows machines.
    3. Confirm that Mozc can be used in both x64 and ARM64 apps.

Comment thread src/win32/installer/build_installer.py Resolved
@yukawa
yukawa force-pushed the issue_1430 branch 2 times, most recently from 46d0a83 to 0128500 Compare January 27, 2026 04:37
@hiroyuki-komatsu

Copy link
Copy Markdown
Collaborator

Could you please resolve the conflicts? After that, I am going to merge your PR.
Thank you,

As a short-term solution for ARM64 support on Windows, this commit adds
a new option to build a special variant of the existing x64 installer,
which can be installed on both x64 and ARM64 Windows systems.

Basically the idea is to rely on x64 emulation on ARM64 Windows whenever
possible, while deploying "mozc_tip64x.dll" and "mozc_tip64arm.dll" as
the minimum set of ARM64-native binaries. When installed on x64 Windows,
we can register "mozc_tip64.dll" as the COM TIP module as usual. As for
ARM64 Windows, on the other hand, we register "mozc_tip64x.dll" as the
COM TIP module as we do so for ARM64 native installer. Other executables
such as "mozc_server.exe" and "mozc_renderer.exe" can run in both x64
and ARM64 Windows as well as they are built as x64 binaries.

Of course, maintaining two separate installers (x64 and ARM64) is
supposed to be the ideal solution in the long run, but this universal
installer would help us deploy ARM64 support on Windows in a timely
manner.

Note that ARM64 toolchains are not required unless you explicitly
specify "--config win_universal_installer" build option.

Closes google#1430
@yukawa

yukawa commented Mar 27, 2026

Copy link
Copy Markdown
Collaborator Author

Could you please resolve the conflicts? After that, I am going to merge your PR.

Done.

@hiroyuki-komatsu
hiroyuki-komatsu merged commit 96bab12 into google:master Mar 27, 2026
1 check passed
@hiroyuki-komatsu

Copy link
Copy Markdown
Collaborator

We have merged the PR. Thank you for your contribution!

@yukawa
yukawa deleted the issue_1430 branch March 27, 2026 03:38
hiroyuki-komatsu added a commit that referenced this pull request Jun 24, 2026
3.33.6133 → 3.33.6239

Conversion:

* Updated the OSS dictionary [975d7d6]
* Updated Zip code data as of 2026-04-03 [3e72fb3]
* Added the circled zero (⓪) to number conversion candidates (#1520) [b18e5de]
* Updated words for font names (#1449) [335c3c9]
* Removed trailing space after small final sigma symbol (#1450) [5154bd8]
* Android: Improved the word prediction feature [40dc336, c692321, cb87ab5]
* Android: Improted the user history prediction feature [7684d80, 3350a19, a8f29ae, c5dd76f]

Features:

* Added support for mathematical functions (sin, cos, etc.) in the calculator rewriter [27710f2]
* Added text sanitizer against ill-formed UTF-8 and ASCII control characters [fa11e0a, 61bdcfc]
* Windows: Supported DPI change in candidate/infolist window (#1481) [fafbde9]

Bug fix:

* Android: Fixed ClearHistory failing to delete candidates with leading spaces [a8f245e]
* Emacs: Fixed candidate overlay collapse when tab-line is enabled (#1507) [0c8acf4]
* Emacs: Fixed backward compatibility for candidate window display in mozc.el (#1427) [891e324]
* macOS: Fixed a failure of application launch [34c3187]
* macOS: Correctly set RGB values for footer border color [0b71173]

Code:

* Removed Singleton class usages (#1461, #1463, #1464, #1465, #1475, #1477, #1478, #1479, #1480, #1490, #1491, #1497, #1498, #1499, #1502, #1509, #1510, #1513, #1514, #1515, #1523)
* Avoided unnecessary string-resizes by using absl::StringResizeAndOverwrite (#1524, #1525) [ff20a11, 6fce2f3]
* Replaced const std::string& with absl::string_view across multiple modules [988fbca, a801e2f, edc7cd0, 99aa820, 8c82922, 7e648b2]
* Refactored candidate view design and renderer styling using RendererStyle and renderer_style.textproto [751df90, be6dd36, 67cede2, afbf1d0]
* Refactored FlatConcurrentCache memory footprint and insert API [c891133, 3a4130b]
* Refactored UserPos cost mapping to generate kPosTypeStringTable dynamically from user_pos.def [53de4e4, 8c190e5, a20e4c1, 70fdb7f]
* Decoupled ImmutableConverter and DictionaryInterface from ConversionRequest and extracted Options [2ee4da3, 6ba80c7, b30921c]
* Refactored ConfigDialog UI layouts and frame mechanisms [4638ce6, c79a760, 895652c, 3c327d8]
* Removed Lemon-based parser for CalculatorRewriter [cb95326, e96c1ba]
* Removed Breakpad integration [1078e63]
* Removed unused ServerLauncher::set_server_program (#1466) [a524a88]
* Removed --timeout/--restricted from renderer (#1494) [be0eb82]
* Removed an optional optimization for uniprocessor (#1501) [5381793]
* Removed zstring_view [61068fe]
* Fixed name shadowing in QtIpcServer constructor (#1486) [8cb8458]
* Used unique service names in renderer_server_test (#1433) [858f8c0]
* Made RendererStyleHandler platform-neutral (#1474) [e4cb300]
* Applied standard code formatter to mac/ and unix/ directories [3024194]
* Linux: Made the default Qt path relative to the workspace root [5d46097]
* Linux: Removed generation of IBus engine XML and moved IBus config textproto to a dedicated file [2c84656, fb22406, dacc0a4]
* macOS: Consolidated ios and macos selections into apple in mozc_select [96c86c0]
* macOS: Made MacStatsConfigUtilImpl stateless (#1496) [5fc301c]
* Windows: Simplified GetDPIScalingFactor for Windows (#1467) [04a1ed3]
* Windows: Always used "en-US" in HResult::ToString() (#1476) [7c1f61c]
* Windows: Fixed MSVC extension warnings in WinAPITestHelper (#1492) [8cb5cc3]
* Windows: Defined NO_SHLWAPI_STRFCNS to not define StrCat (#1508) [fdfcc30]
* Windows: Always evaluate ServerLauncher::server_program() (#1473) [45c33ae]

Build:

* Updated Bazel version to 9.0.2 [3ced4c8]
* Removed git submodules [32be060, 48bbbf7, efaae55]
* Moved src/data/version/mozc_version_template.bzl to src/version.bzl [68d04b2]
* Made //engine:data_loader_test deterministic (#1522) [9afbd98]
* Worked around QTBUG-145239 with a local patch (#1506) [9df9774]
* Removed redundant build options from instructions (#1489) [180ef9f]
* Android: Separated android_util into its own dedicated build target [060b96e]
* Bazel: Made build rules compatible with Bazel 8.6 / 9.0 and updated external dependencies (#1451, #1453, #1454) [6c19ff0, 7cad196, 684c1d4, 979a650]
* Windows: Allowed building Mozc with Visual Studio 2026 (#1495) [b940437]
* Windows: Updated minimum Windows version to 1809 (build 17763) [3792d79]
* Windows: Always used CustomAction to register COM DLLs (#1500) [82dca34]
* Windows: Introduced mozc_win32_resource alias and universal MSI installer build support (#1434) [ecf3825, bab1403, 96bab12]
* Windows: Used ARM64-native Ninja and LLVM binaries (#1382, #1460) [67e9d9e, 430ac03]
* Registered Mozc Starlark macros with build_cleaner [e3e467e]

PiperOrigin-RevId: 937168930
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.

Create a universal installer for both Windows x64 and ARM64

2 participants