Skip to content

feat: Add Win64x as an independent installation target#181

Open
Delphier wants to merge 1 commit into
project-jedi:masterfrom
Delphier:win64x-install-target
Open

feat: Add Win64x as an independent installation target#181
Delphier wants to merge 1 commit into
project-jedi:masterfrom
Delphier:win64x-install-target

Conversation

@Delphier

@Delphier Delphier commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Problem

  • JCL currently supports only Win32 and Win64 as target platforms in the installer UI. Win64x is installed alongside Win64, with its output directory determined by the following code:

    class function TJclBorRADToolInstallation.AdjustPathForWin64X(const Path: string): string;
    begin
      Result := StringReplace(Path, '\win64', '\win64x', [rfIgnoreCase]);
    end;

    This is a simple string replacement. Since the Win64 output directory is user-customizable in the installer, if any part of the user-selected path contains the string "Win64", or if it contains no "Win64" at all, serious issues will arise. This is a bug.

  • Win64x is currently the default and primary platform in C++Builder. It is a fully independent target platform, on equal footing with Win32, Win64, and WinARM64EC (not yet supported by JCL). Treating it as a sub-platform of Win64 is incorrect.

What This PR Does

  • Adds Win64x as a new installation wizard page
    Just like Win32 and Win64, users can now specify installation options and an output directory for Win64x independently, completely decoupled from Win64.

  • Renames platform display labels in the installer UI
    Previously shown as RAD Studio 32 bit / RAD Studio 64 bit, these have been renamed to RAD Studio Win32, Win64, and Win64x, aligning with the platform identifiers used in the IDE and avoiding confusion with 32-bit IDE / 64-bit IDE.

  • Increases the default width of the installer main window
    The added width ensures that, when installing for at least one IDE, the TPageControl tabs do not wrap to a second line, improving UI usability.

  • Fixes Expert package not being properly uninstalled from the 64-bit IDE
    The current JCL version uninstalls cleanly from the 32-bit IDE, but the Expert package fails to uninstall correctly from the 64-bit IDE. This is because the uninstall process does not specify the DCC in use (the unregistration functions in JclIDEUtils rely on the current DCC to determine which registry key value to delete: default or x64). Since this fix involves platform detection, it has been included in this PR.

image

Impact

By treating Win64x as a fully independent platform, the codebase is actually simplified rather than made more complex. As evident from the changed files, most modifications consist of removing conditional checks rather than adding new ones.

This PR does not break any existing code in JCL.

Tested successfully on RAD Studio 11.3 32-bit IDE (Win32, Win64) and RAD Studio 13.1 32-bit and 64-bit IDE (Win32, Win64, Win64x).

@obones

obones commented May 6, 2026

Copy link
Copy Markdown
Member

Well, when win64x was introduced, it was an experimental feature without any possibilities to specify anything in the installer, hence the "shortcuts" that were taken.

Also, could you please rebase this branch onto master and see if there are any conflicts?

@Delphier Delphier force-pushed the win64x-install-target branch 2 times, most recently from 3408467 to aa76398 Compare May 18, 2026 11:08
else
AInstallationElem.Properties.Add('Target', AInstallation.Target.VersionNumberStr);
end;
AInstallationElem.Properties.Add('Target', AInstallation.Target.VersionNumberStr + '_' + AInstallation.GetPlatformStr);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the previous behavior where there was a suffix ONLY for bpWin64 and will most likely break something down the line.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I searched the JCL library, and this XML file, after being saved, has never been loaded or used anywhere. Am I missing something?

@Delphier Delphier May 20, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does have an impact on external users. How about keeping the original suffix format, with Win64x using the win64x suffix?

I still prefer using Win32, Win64, Win64x suffixes, as they provide better consistency.

I searched again and it appears that https://github.com/project-jedi/tools uses this XML file — could this project be updated accordingly?

You decide.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Target attribute is only used for sorting, not for detection, so this change appears to have no impact on the tools project: https://github.com/project-jedi/tools/blob/320bd17bd2b1d683b5db8875df3b1258b9a8f6af/build_results/common.js#L31

@Delphier Delphier force-pushed the win64x-install-target branch from aa76398 to 7fb9958 Compare May 20, 2026 07:57
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.

2 participants