MSVC 2015通用CRT适用于应用程序本地部署

12
宣布通用CRT将成为可重新分配的动态链接库,这样应用程序本地部署仍然是可能的。
我安装了Visual Studio 2015 Express Edition,并在SDK目录中寻找ucrtbase.dll,但没有找到任何内容。我查找的目录是“C:\ Program Files(x86)\ Microsoft SDKs \ Windows Kits \ 10”,但只有“Microsoft.UniversalCRT.Debug”下的CRT调试版本。
我更喜欢不从系统中复制任何DLL,我总是只打包“Redist”目录中的文件。因此,例如(与以前的MSVC版本一样),我使用我的应用程序的x86版本重新分发来自“C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ redist \ x86 \ Microsoft.VC140.CRT”的文件。
是否有一个包含ucrtbase.dll的可下载软件包,或者是Visual Studio或SDK更新?
同时我还不确定此时仅ucrtbase.dll是否足够,因为似乎应用程序链接到存根DLL api-*.dll,我不确定那些DLL是否也需要重新分发。

1
ucrtbase.dll是Win10中的系统组件。随着Windows更新将其提供给旧版本的Windows。您不应该自行分发它。 - Hans Passant
2
除了微软改变主意并正式支持DLL的重新分发外,这是正确的。请参见被接受答案中的链接。 - Filip Konvička
1
嗯,不完全是这样,他们非常清楚他们的一些客户不使用Windows Update。应用本地部署并不是同一件事,在实际启用了WU的计算机上会有害。这样的客户应该自己带来。 - Hans Passant
1
我的问题是关于应用程序本地部署的,现在这是一个受支持的场景之一(尽管不一定是首选或宣传的)。最初,微软的计划是根本不支持此功能。 - Filip Konvička
api-* 依赖项是虚假的: https://ofekshilon.com/2016/03/27/on-api-ms-win-xxxxx-dll-and-other-dependency-walker-glitches/ - Ofek Shilon
2个回答

9
在“分发使用通用CRT的软件”部分中,这篇博客文章详细描述了所有情况,并在涉及应用程序本地部署的大红更新通知中提到:

更新于2015年9月11日:支持应用程序本地部署通用CRT。要获取用于应用程序本地部署的二进制文件,请安装适用于Windows 10的Windows软件开发工具包(SDK)。这些二进制文件将安装到C:\Program Files (x86)\Windows Kits\10\Redist\ucrt。您需要将所有DLL与您的应用程序一起复制(请注意,在不同版本的Windows上,必要的DLL集合是不同的,因此您必须包括所有DLL,以便您的程序在所有支持的Windows版本上运行)


2
谢谢。我发誓我已经多次访问了那篇博客文章,但显然不够近。而且我之前安装SDK失败的问题现在似乎已经解决了,我可以看到所需的(41!)DLL文件。我想知道为什么他们不能让它变成42... - Filip Konvička

1
你可以从Microsoft Download Center下载UCRT。UCRT现在是操作系统的一部分,对于Vista SP2 / 7/8 / 8.1,它由更新中心分发。

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