问题标签 [vcredist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-c++ - Visual C++ 2015-2019 Redistributable 何时导致 PC 重启
在某些安装 Visual C++ 2015-2019 Redistributable 的机器上,需要重启 PC。但是,如果我们
1)Install Redistributable
2)Reboot
3) Remove Redistributable
4) 尝试再次安装 它
不需要在第二次尝试安装时重新启动。此外,在某些情况下,即使第一次尝试安装它也不需要重新启动。看起来它不依赖于 Redistributable 本身,而是依赖于一些 KB 更新或类似的东西。
为安装程序调试目的重现“需要重新启动”环境对我来说非常重要。也许有人知道它是如何工作的,以及我如何重现“需要重新启动”的情况。
inno-setup - 如何检测安装 VC Redist 软件包后是否需要提示用户重新启动 PC
我昨天在某人的计算机上遇到问题,我的安装程序没有按预期完成。我连接到他们的电脑进行调查。
它与 VC Redist 文件有关。我的安装程序检测是否需要这些,如果需要,下载并安装它们。
我使用命令行开关,因此根本不会提示用户,并且我使用 /norestart 标志,因为我的安装程序必须完成。
问题是 VC Redist 需要他们重新启动 PC。我通过运行我的安装程序发现了这一点,它下载了 Redist 设置并尝试安装。我的设置中止了。所以我尝试手动运行 VC Redist 安装程序,这就是我看到它说电脑需要重新启动的地方。
那么,我该如何测试 Redist 是否需要重新启动电脑,然后让我的安装程序将其传达给用户,或者,如果任何一个 VC Redist 设置已经产生,我如何才能提示用户给用户?
我确实找到了这个:
https://johnkoerner.com/install/windows-installer-error-codes/
我注意到最后一个条目:
需要重新启动才能完成安装。此消息表示成功。这不包括运行 ForceReboot 操作的安装。
0xBC2 0x80070BC2
这就是我目前生成安装程序的方式:
c++ - 是否有小于 14 MB 的 Visual Studio 2015 C++ Redistributable (vcredist_x86.exe)?
我有一个使用 C 和 C++ 编写的 Visual Studio 2015 构建的 Windows x86 32 位桌面应用程序,使用 MFC 框架作为用户界面。对于安装程序,我使用带有 NSIS 脚本的 NSIS 编译器来生成用于安装应用程序的安装 .exe,该应用程序由构建创建的大约 10 个不同的组件、.exe 和 .dll 组成。
我的桌面应用程序是一个销售点应用程序,它在 32 位或 64 位版本的 POSReady 7 (Windows 7) 以及英特尔 x86/x64 兼容 CPU 上的 Windows 10 和 Windows 10 IoT Enterprise(不是 Windows IoT Core)下运行。
当我从 Visual Studio 2005 更改为 Visual Studio 2015 时,我对安装可执行文件的更大尺寸感到震惊,从大约 8 MB 的大小到 16 MB 的大小。大小差异似乎是由于我在桌面应用程序安装程序中包含的 Visual Studio 2015 C++ Redistributable。
NSIS 脚本有以下几行:
当我使用 Visual Studio 2015 编译桌面应用程序并使用包含注释掉的File
指令运行 NSIS 脚本时,生成的安装程序的大小为 2,220 KB。vcredist_x86.exe
当我取消注释File
包含 的指令vcredist_x86.exe
时,生成的安装程序的大小为 16,140 KB。
查看文件夹,C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\1033
我看到三个不同的可再发行组件:vcredist_arm.exe
大小 2,639 KB、vcredist_x64.exe
大小 14,957 KB 和vcredist_x86.exe
大小 14,130 KB。
是否有其他小于 14 MB 的 Visual Studio 2015 可再发行组件?
或者我可以使用其他方法来提供vcredist_x86.exe
不需要将其包含在我的应用程序安装程序中的位置?一种不同的方法需要与当前解决方案一样自动,即安装应用程序组件然后启动 Visual Studio 2015 可再发行安装程序。
笔记
这篇文章的答案是将特定的 Visual Studio DLL 包含到安装程序的组件列表中。 如何避免安装 Visual C++ Redistributable LARGE 文件?
由于版权问题,这似乎不是一个可行的选择。
以下是 Microsoft 文档Redistributing Visual C++ Files以及Determining which DLLS to Redistribute的链接,其中包括使用合并模块的替代方法,如通过使用合并模块重新分发组件中所述。但是合并模块上的页面说:
我们建议您不要使用合并模块,除非您不必为您的应用程序提供服务并且您不依赖多个版本的 DLL。同一 DLL 的不同版本的合并模块不能包含在一个安装程序中,合并模块使得独立于您的应用程序服务 DLL 变得困难。相反,我们建议您安装 Visual C++ Redistributable Package。
visual-c++ - 如何调试 vc_redist 引导程序的问题?
我有一个 Visual Studio 安装程序项目(一个 vdproj),它不会将 VC 可再发行组件安装为先决条件。我不知道为什么。
我正在使用带有安装程序项目扩展的 Visual Studio 2019 的最新更新。这是我的先决条件设置:
在安装时,我收到一条错误消息vc_redist.x64.exe has changed since it was initially published
。我在 C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\vcredist_x64 检查了引导程序,发现在那里找到了 URL(https://aka.ms/vs/16/release/14.26.55555/vc_redist. x64.exe ) 重定向到主要的 microsoft 主页并下载 HTML 而不是可执行文件。所以我更改了 URL,首先是https://aka.ms/vs/16/release/vc_redist.x64.exe,然后是https://aka.ms/vs/16/release/14.27.29016/vc_redist。 x64.exe。当您使用 Web 浏览器访问它们时,这两个 URL 都会下载 VC_redist.x64.exe 的副本,但它们都不能修复安装程序。
更改 URL 后我看到的唯一区别是,使用原始 URL,我在临时安装文件夹中获得了一个名为 vcredist_x64\vc_redist.x64.exe 的文件(但它是无效的,充满了 HTML),但是有了两个新 URL,vcredist_x64文件夹为空。
知道我需要做什么才能使其正常工作吗?
inno-setup - Inno Setup 和 VC Redistributable 并优雅地处理退出代码 3010
在我的CurStepChanged
过程中,我有一些安装 Visual Studio Redistributable 的代码(如果需要)。代码片段:
我有一个用户说我的软件安装程序失败了,所以我要求他们将他们的日志发送给我。在所有日志的末尾,它与此类似:
我注意到 redist 设置正在退出,结果为3010
. 我找不到任何有关 redist 退出代码的官方文档,但它似乎是软重启。无论如何,今天他们尝试了我的安装程序并且它工作了(因为他们昨晚切换了他们的 PC):
所以我假设 3010 确实意味着软重启?如果是这样,有没有更好的方法可以在我们的 Inno Setup 安装中处理这种情况?
wix - 在 MSI 中执行时,VC 可再发行组件安装失败
我有一个使用 WiX 制作的安装程序,其中包含并执行 VC 2019 可再发行安装程序。由于多个第三方二进制文件,我的应用程序依赖于 VC 2015、VC 2017 和 VC 2019。
我正在使用/install /passive /norestart
参数安装可再发行组件,并且在复制其余文件后完成。
我的问题是应用程序(安装的那个)无法启动,因为它找不到 msvcr140.dll 丢失(以及其他 2015 的运行时文件)。
如果我随后使用完全相同的参数手动启动 VC 可再发行组件(从命令行),那么应用程序将正确启动。
我在启动时提升了安装程序,我可以看到 vcredist 在我的 MSI 完成复制文件后启动。我错过了什么吗
注意:我还没有尝试过 Merge 模块,但我很好奇为什么 vcredist 安装程序不起作用。
我的 WXI 文件的简化版本是:
更新:vcredist_142_x86.exe
我在上述文件中提到的是https://aka.ms/vs/16/release/vc_redist.x86.exe的副本
windows-installer - 查找 vcredist_x86.exe 的合并模块
最新的 Visual Studio C++ Redistributable 位于此处。但问题是我想包含它来安装屏蔽安装,它需要合并模块而不是 exe 文件。
如何找到相应的合并模块(msm 文件)?有没有办法下载它以某种方式安装屏蔽?
c++ - 如何仅使用本地 CRT DLL 在 Windows 上运行?
我有一个旨在与所有 MSVC 依赖项并排部署的应用程序,以便不需要管理员访问权限来安装 MSVC 可再发行组件。它应该依赖的唯一系统范围的 DLL 是 .NET。我还没有想出一种方法来测试此功能,而无需将其安装在完全库存的机器上并在那里进行测试,这对于手动和自动 (CI) 测试都相当不方便。
Windows 中是否有一种相当简单的方法可以关闭或拦截某些 DLL 的 SxS 查找?