Inno 安装 "Source file C:\Windows\System32\vcruntime140_1.dll does not exist" 错误

Inno Setup "Source file C:\Windows\System32\vcruntime140_1.dll does not exist" error

我正在尝试使用 Inno Setup 在来宾计算机上安装一些 Visual Studio dll。这是我脚本的 [Files] 部分:

[Files]
Source: ...
...
Source: "C:\Windows\System32\msvcp140.dll"; DestDir: "{app}"
Source: "C:\Windows\System32\vcruntime140.dll"; DestDir: "{app}"
Source: "C:\Windows\System32\vcruntime140_1.dll"; DestDir: "{app}"

它在最后一行给我一个错误,说它找不到源文件,尽管它在那里。跟Inno Setup的_有特效有关系吗?

在我的 64 位系统上,vcruntime140_1.dll 是真正的 64 位 C:\Windows\System32。 Inno Setup 编译器是一个 32 位应用程序。由于 WOW64 file system redirection,当 32 位应用程序尝试访问 C:\Windows\System32 时,它会被重定向到 32 位系统文件所在的 C:\Windows\SysWOW64。没有vcruntime140_1.dll.

正如其他人评论的那样,这也表明您的方法存在弱点。您可能甚至没有意识到 DLL 有多个版本。如果您使用官方 Visual C++ Redistributable installer,它将负责将正确的版本安装到正确的位置。而你不会。你不应该弄乱 System32 文件夹。

一些例子:

  • How to install Microsoft VC++ redistributables silently in Inno Setup?
  • How to make vcredist_x86 reinstall only if not yet installed?