1

最新的 Visual Studio C++ Redistributable 位于此处。但问题是我想包含它来安装屏蔽安装,它需要合并模块而不是 exe 文件。

如何找到相应的合并模块(msm 文件)?有没有办法下载它以某种方式安装屏蔽?

4

2 回答 2

1

Visual C++ 运行时依赖于通用 CRT,您不能通过合并模块在最终用户的计算机上安装通用 CRT(Windows XP 除外)。合并模块在 Vista/7/8/8.1/10 上完全没有任何作用。

请参阅 Daniel Griffing对此 Visual Studio 错误报告的评论。

三种解决方案:

  1. 需要 Windows 10。它在操作系统中内置了 UCRT;它会一直存在。
  2. 要求 Windows <10 用户在安装应用程序之前安装Windows 更新KB2999226 。
  3. 手动分发 UCRT 作为应用程序目录中的文件。这既麻烦又危险,因为它们不会收到安全更新,但很多应用程序都会这样做。

每个使用动态 CRT 并使用 Windows 10 SDK(Visual Studio 2015、2017 或 2019)构建的程序都需要 KB2999226 或 UCRT 文件的副本才能在 Windows <10 上运行,否则将失败丢失api-ms-win-crt-runtime-l1-1-0-dll. 这些程序根本不需要在 Windows 10 上运行。

由于知识库文章中的下载链接已失效,您可能希望将您的用户指向:

于 2020-10-13T13:29:37.790 回答
1

总结:使用 Installshield通过“套件项目”(使用启动器安装的设置链)安装VC++ 运行时的可执行文件,或者在安装了 Visual Studio 的系统上找到磁盘上的合并模块,并将相关项目复制到 Installshield 可再发行文件夹。

记住要好好测试,并在安装后执行Windows 更新以检查是否有待处理的安全修复程序(您的合并模块可能不是最新的)。如果您发现问题,请尝试更新 Visual Studio - 或手动安装最新的 SDK 并查找更新版本的合并模块。


Redistributables View没有显示任何要下载的内容?另外请阅读这篇文章,了解为什么应该使用可执行文件而不是合并模块。高端的、较新版本的 Installshield 允许您创建套件项目(有关详细信息,请参见链接,这里是屏幕截图):

在此处输入图像描述

您还应该在磁盘上有合并模块,只需进行搜索(如果您在该框中安装了 Visual Studio)。类似的东西:C:\Program Files (x86)\Microsoft Visual Studio\2017\[EditionHere]\VC\Redist\MSVC\[VersionHere]\MergeModules

但是,上面提到的套件项目应该允许您运行可执行版本,但如果您使用的是较旧的 Installshield 版本,则不允许。

于 2020-09-30T10:03:55.997 回答