为什么RAD Studio Seattle 10会安装Windows 10 SDK?(它能与更新的SDK一起使用吗?)

7
在C++Builder Seattle 10 Update 1安装完成后,Embarcadero的主安装程序会启动一个额外的嵌入式安装程序,名为Microsoft Windows 10 SDK Installer。如果您忘记了它的样子,可以看下面的图片:

enter image description here

这个安装程序然后开始按照以下步骤安装原版的RTM Windows 10 SDK:

enter image description here

为什么C++Builder会安装这个?C++Builder如何与SDK链接,它到底使用了什么?如果我安装一个更新的Windows SDK(例如2015年11月发布的SDK),它会工作吗?很难想象,因为IDE中的所有设置都是使用来自C:\Program Files (x86)\Embarcadero\Studio\17.0\include\windows\sdk的文件,而这些文件包括Embarcadero对SDK所做的更改,例如特殊的bcc32 pragma语句。

我已经分析了RAD Studio的安装文件,试图找出其中的原因,但我没有一个好的答案来解释他们为什么这样做:

  • 在您的RAD Studio ISO上,使用7-Zip查看“\Install\Setup.exe”。
  • 有一个setup.res文件; 也在7-Zip中打开它。
  • setup.res内,您将找到第一张截图中看到的MSSDKInstall.exe。在7-Zip中打开它。
  • 然后,您会看到几个文件:
    • MSSDKInstall.msi:如果您使用Orca打开此文件,您将看到这是一个非常简单的安装程序,它将一些蓝牙头文件安装到Embarcadero include目录中。
    • OFFLINE目录:包含8个不同的Windows SDK头文件,显然由MSI使用:BluetoothAPIs.hbluetoothleapis.hbthdef.hbthledef.hbthsdpdef.hno_sal2.hwinapifamily.hws2bth.h
此外,似乎这个独立安装程序与主RAD Studio安装程序发生了冲突。主安装程序也会安装这些相同的头文件。然后运行此安装程序,并替换这些文件。然后它会出于某种未知原因启动官方的Microsoft Windows 10 SDK安装程序。如果卸载Embarcadero SDK安装程序包,则会完全删除这8个头文件(因此产生冲突)。
所以:(1)为什么他们没有在主安装中包含这8个头文件-这一切的意义是什么,(2)为什么他们要启动官方的Microsoft Windows 10 SDK安装程序,(3)是否有我不知道的某种集成?
官方文档几乎没用:安装说明:安装Windows 10 SDK

RAD Studio Seattle的安装向导允许您安装Microsoft Windows 10 SDK,该SDK添加了用于Windows API的头文件。

注意:Windows 10 SDK仅对C++Builder是必需的,以支持对蓝牙和蓝牙LE Windows API的直接调用。

但是微软的SDK安装程序并没有将头文件放入Embarcadero的include目录中。实际上,正是Embarcadero通过在他们自己的安装程序中捆绑这些文件来完成这个过程,正如上面所证明的那样。

1
  1. SDK的安装是可选的;在配置安装时,您可以选择不安装它。
  2. 包含文件不能放置在EMBT包含文件夹中,因为它们是SDK的一部分,而不是BDS。
  3. 只有当您计划使用直接调用BT和BTLE WinAPI调用时,才需要安装SDK(如您在报价中所示)。
  4. EMBT无法控制SDK使用哪个安装程序;安装程序由MS提供。使用不同的安装程序会违反MS的TOU。如果它没有按您想要的方式工作,您需要联系MS进行修改。
- Ken White
@KenWhite:关于问题1,你所说的"SDK install"是指Embarcadero SDK安装程序还是官方的Microsoft安装程序?关于问题2,Embarcadero SDK安装程序确实能够完全做到这一点;我通过比对Embarcadero安装过程中MSSDKInstall.exe安装设置前后的差异进行了验证。 - James Johnston
#1 指通过 Rad Studio 安装程序安装 SDK,这是可选的。您可以选择不安装它。如果您选择让 RAD Studio 安装程序也安装 SDK,则使用 MS SDK 安装程序进行安装。2)包含文件未放入我的 RDS 包含文件夹中;MSSDK 文件夹已添加到 INCLUDE 环境变量中。我在 $(BDSINCLUDE) 文件夹中没有任何文件。 - Ken White
2个回答

9

安装Windows 10 SDK只是Embarcadero满足Microsoft的要求,对您的RAD Studio安装没有影响。换句话说:如果您取消该安装,不会造成任何损害。


1
哇 - 有趣的说法 - 你知道可能是什么要求吗?也许可以提供一个参考链接? - James Johnston
3
如果我没记错的话,Marco Cantù在一个网络研讨会上提到过这个问题。Seattle Update 1安装程序存在问题,会删除该SDK,进而删除一些必要的文件(参见https://community.embarcadero.com/blogs/entry/pay-attention-with-windows-10-sdk-installer-when-upgrading-10-seattle)。这个错误之前一直没有被发现,因为一开始就没有人安装那个SDK。 - Uwe Raabe

1

此处所述,您需要在开发系统上安装Windows 10 SDK才能创建.appx包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接