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:
This installer then starts installing the original RTM Windows 10 SDK as follows:
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 theMSSDKInstall.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 Embarcaderoinclude
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.