Skip to content

JclIDEUtils: Add IDEUpdateNumber property to get RAD Studio update info#175

Merged
obones merged 1 commit intoproject-jedi:masterfrom
Delphier:MainProductUpdate
Apr 11, 2026
Merged

JclIDEUtils: Add IDEUpdateNumber property to get RAD Studio update info#175
obones merged 1 commit intoproject-jedi:masterfrom
Delphier:MainProductUpdate

Conversation

@Delphier
Copy link
Copy Markdown
Contributor

@Delphier Delphier commented Mar 25, 2026

There is currently no way to check if the current IDE version is RAD Studio 13.1 or later.
After this PR is merged, the following approach will be available: IDEVersionNumber >= 37 and IDEUpdateNumber >= 1.

The implementation reads the InstalledUpdates\Main Product Update registry key. This information is also displayed in the IDE's About dialog. I checked the registry and this appears to be the only way to retrieve it.

image image

@obones
Copy link
Copy Markdown
Member

obones commented Mar 25, 2026

The JCL has never distinguished product patches, why should it start now?
Yes, I know of the 10.x range of products but these were different versions with no DCU compatibility, wrongly named by Embarcadero.

@Delphier
Copy link
Copy Markdown
Contributor Author

Delphier commented Mar 25, 2026

@obones RAD Studio currently adds new features in some minor versions. Some features can be checked through other means to determine whether the current IDE supports them, such as 64-bit IDE in 12.3 and Arm64EC in 13.1.

However, for some new features, the only way to check whether the current IDE supports them seems to be by checking the IDE version number, such as LSIF newly added in version 13.1. The main purpose of this PR is to obtain the minor version number for version checking.

@obones
Copy link
Copy Markdown
Member

obones commented Mar 25, 2026

They are product patches, not fully fledge releases, as told by Embarcadero themselves and as shown by the fact that they keep the same compiler and DCU versions

The JCL has always insisted that users install the latest patches for the library to work properly. For instance, in the Delphi 7 ear, the JCL was not installable if you did not apply all the patches.
It's the same today, the users have to install the latest patches for any given version, we won't support, say, a Delphi 12 without the x64 installer.

@Delphier
Copy link
Copy Markdown
Contributor Author

Delphi 13.1 introduced the LSIF feature for generating index files for DelphiLSP. These files can be generated by passing the --lsif option to the compiler. This feature is only supported by the 13.1 compiler. Passing this parameter to version 13.0 or earlier compilers will result in an error.
Therefore, it is necessary to check the minor version number to determine whether to pass this parameter. There is currently no way to do this check — at least I haven't found one — hence this PR was submitted.

@Delphier
Copy link
Copy Markdown
Contributor Author

The JCL has always insisted that users install the latest patches for the library to work properly. For instance, in the Delphi 7 ear, the JCL was not installable if you did not apply all the patches. It's the same today, the users have to install the latest patches for any given version, we won't support, say, a Delphi 12 without the x64 installer.

I get it. But I feel like this needs to change.Versions like 12.3 or 13.1 aren't just simple patches.

@ronaldhoek
Copy link
Copy Markdown
Contributor

ronaldhoek commented Mar 30, 2026

But I feel like this needs to change.Versions like 12.3 or 13.1 aren't just simple patches.

Why do you feel this needs to change?

Because you can only install different 'main' versions side by side, not different 'minor' versions.
And I know the 'upgrades' are not just patches, but always using the latest version does not look like an issue to me.
So I don't see any reason to have the same codebase support the different 'minor' versions.

@Delphier
Copy link
Copy Markdown
Contributor Author

but always using the latest version does not looks like an issue to me. So I don't see any reason to have the same coebase subbort the different 'minor' versions.

RAD Studio is subscription-based — what about users who have to stick with older versions because they've let their subscription lapse?

I'm aware that 13 and 13.1 are binary compatible and cannot be installed side by side. But versions like 12.3 and 13.1 have added a substantial number of core features, and Embarcadero no longer classifies these releases as "patch versions."

@Delphier
Copy link
Copy Markdown
Contributor Author

It's the same today, the users have to install the latest patches for any given version, we won't support, say, a Delphi 12 without the x64 installer.

During the RAD Studio 12.3 installation process, the 64-bit IDE itself is offered as an optional component — and one that is unchecked by default, no less. Forcing users to install it is a questionable policy in and of itself.

@ronaldhoek
Copy link
Copy Markdown
Contributor

RAD Studio is subscription-based — what about users who have to stick with older versions because they've let their subscription lapse?

Don't know how the subscription works anymore (because we stopped it years ago - still on Delphi XE2).
But aren't minor updates/patches always available?

If not, I do see a valid point for implementing the 'minor' version support.

@Delphier Delphier force-pushed the MainProductUpdate branch from 810c57b to 4ab9bb7 Compare March 30, 2026 10:54
@Delphier Delphier changed the title JclIDEUtils: add MainProductUpdate property to get RAD Studio update info JclIDEUtils: Add IDEUpdateNumber property to get RAD Studio update info Mar 30, 2026
@Delphier
Copy link
Copy Markdown
Contributor Author

But aren't minor updates/patches always available?

Can I obtain updates and hotfixes without a subscription?
An active update subscription is the only way to obtain updates and hotfixes.

from https://www.embarcadero.com/update-subscription

@ronaldhoek
Copy link
Copy Markdown
Contributor

@obones It's your call now.

@obones
Copy link
Copy Markdown
Member

obones commented Apr 9, 2026

What do you think @ahausladen ?

@ahausladen
Copy link
Copy Markdown
Contributor

Because the JclIDEUtils.pas‎ unit is not only for the installer, but also for "user" code, adding an IDEUpdateNumber property would make the class more complete. The registry key and value name also seems to be used by Embarcadero for a long time.

And the PR doesn't change existing code. So from my standpoint it could be merged.

@obones obones merged commit 1f16d17 into project-jedi:master Apr 11, 2026
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.

4 participants