首页 > 解决方案 > 如何防止 vc_redist.x##.exe (VS2017) 由于挂起的重新启动而出现模棱两可的失败?

问题描述

TL;DRvc_redist在多个安装程序链中调用 VS 2017 时,自动调用 VS 2017 的明智方法是什么?


MS 为 VS 15.x(VS 2017)提供的Visual C++ Redistributable Installer ,即两者(14.15.26706 - VS 15.8.4)):

作为我们完整产品安装的一部分,我必须静默运行几个vcredist 安装程序(也是旧版本)。

现在的问题是,如果重新启动未决(例如) ,这些安装程序将拒绝安装"HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" - PendingFileRenameOperations

当使用 调用这些安装程序时vc_redist /q,它们甚至会立即触发系统重启。这可以通过调用它们来解决/q /norestart,但是:

调用时,如果在此安装程序之前vc_redist /q /norestart重启等待,它将返回 MSI 退出代码,指示需要重启。3010

但是,AFAIK,此退出代码表明,此设置需要重新启动才能完成。

实际问题

因此,我无法区分此安装程序是否成功并且只需要在我的安装序列的最后重新启动(我确实在之前和之后安装了 otehr 东西) -或者安装程序是否实际上拒绝执行任何操作并且我需要重新启动系统并再次启动此安装程序!

如何在不同的第三方安装程序链中调用此 vc_redist 和


一些额外的信息,fwiw:

不确定这些对问题有帮助,但为了完整起见。

弹出框

“没有采取任何行动,因为需要重新启动系统。”

摘要/关闭/重启

正如你从这个序列中看到的那样,每次 vcredist 之后重新启动都会很疯狂,幸运的是,到目前为止,似乎只有 2017 年的 redist 表现出这种不幸的行为。

注意:我的开发机器上运行的试用版都是从“步骤 0”处已经挂起的重新启动开始的,即使重新启动在手之前等待重新启动,VC2005 和 VC2010 安装程序都运行良好(通过它们的 GUI 进度验证。如果重新启动未决,则 VC2017 安装程序拒绝执行任何操作。

标签: visual-studio-2017windows-installervcredistvisual-c++-2017

解决方案


严格来说,error 3010 是成功的结果。这意味着安装已完成,但需要重新启动。我不知道有任何迹象表明这意味着安装根本没有开始。典型的“如果重新启动挂起将不会安装”是使用基于 MsiSystemRebootPending 属性的启动条件的结果。由于此启动条件导致的失败不会返回 3010 结果 - 它们通常会返回 1602 错误作为一种“用户取消”错误。


推荐阅读