feat: Add Win64x as an independent installation target#181
Conversation
|
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? |
3408467 to
aa76398
Compare
| else | ||
| AInstallationElem.Properties.Add('Target', AInstallation.Target.VersionNumberStr); | ||
| end; | ||
| AInstallationElem.Properties.Add('Target', AInstallation.Target.VersionNumberStr + '_' + AInstallation.GetPlatformStr); |
There was a problem hiding this comment.
This changes the previous behavior where there was a suffix ONLY for bpWin64 and will most likely break something down the line.
There was a problem hiding this comment.
I searched the JCL library, and this XML file, after being saved, has never been loaded or used anywhere. Am I missing something?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
aa76398 to
7fb9958
Compare
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:
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
TPageControltabs 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
JclIDEUtilsrely on the current DCC to determine which registry key value to delete:defaultorx64). Since this fix involves platform detection, it has been included in this PR.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).