Why does RAD Studio Seattle 10 install Windows 10 SDK? (and does it work with newer SDKs?)

Viewed 3432

At the end of C++Builder Seattle 10 Update 1 installation, Embarcadero's main setup starts an additional embedded setup program called Microsoft Windows 10 SDK Installer. This is what it looks like, in case you forgot:

enter image description here

This installer then starts installing the original RTM Windows 10 SDK as follows:

enter image description here

Why does C++Builder install this? How does C++Builder link with the SDK - what exactly is it using? If I install a newer Windows SDK (e.g. the one released Nov 2015) instead, will it work? (It's hard to imagine how, since everything is set up in the IDE to use files from C:\Program Files (x86)\Embarcadero\Studio\17.0\include\windows\sdk and these files include changes made by Embarcadero to the SDK, e.g. special bcc32 pragma statements.)

I have analyzed the installation files of RAD Studio to try to figure out what's going on, but I don't have a good answer for WHY they are doing what they do:

  • On your RAD Studio ISO, examine ``\Install\Setup.exe` in 7-Zip.
  • There is a setup.res file; open that inside 7-Zip also.
  • Inside setup.res you will find the MSSDKInstall.exe that you see in the first screenshot above. Open it inside 7-Zip.
  • You'll then see several files:
    • MSSDKInstall.msi: if you open this up with Orca you'll see that this is a very simple installer that installs some Bluetooth header files into the Embarcadero include directory.
    • OFFLINE directory: contains 8 different Windows SDK header files apparently used by the MSI: BluetoothAPIs.h, bluetoothleapis.h, bthdef.h, bthledef.h, bthsdpdef.h, no_sal2.h, winapifamily.h, ws2bth.h.

It additionally appears that this separate installer conflicts with the main RAD Studio installer. The main installer also installs these same header files. Then this installer is run, and replaces these files. Then it kicks off the official Microsoft Windows 10 SDK installer for some unknown reason. If you uninstall the Embarcadero SDK installer package, it deletes those 8 header files entirely (thus the conflict).

So: (1) why didn't they just include those 8 header files in the main installation - what was the point of all this, (2) why do they start the official Microsoft Windows 10 SDK installer, (3) is there some integration I'm not aware of?

The official docs are near useless: Installation Notes: Installing the Windows 10 SDK.

The installation wizard of RAD Studio Seattle allows you to install the Microsoft Windows 10 SDK, which adds headers for the Windows API.

Note: The Windows 10 SDK is only a requisite for C++Builder in order to support direct calls to the Bluetooth and the BluetoothLE Windows APIs.

But Microsoft's SDK installer does not put the headers into the Embarcadero include directory. It is, in fact, Embarcadero who does this by bundling the files in their own installer, as evidenced above.

2 Answers

As mentioned here You need to have the Windows 10 SDK on your development system, to create the .appx packages.

Related