TL;DRvc_redist
在多个安装程序链中调用 VS 2017 时,自动调用 VS 2017 的明智方法是什么?
MS 为 VS 15.x(VS 2017)提供的Visual C++ Redistributable Installer ,即两者(14.15.26706 - VS 15.8.4)):
vc_redist.x86.exe
vc_redist.x64.exe
作为我们完整产品安装的一部分,我必须静默运行几个vcredist 安装程序(也是旧版本)。
现在的问题是,如果重新启动未决(例如) ,这些安装程序将拒绝安装"HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" - PendingFileRenameOperations
。
当使用 调用这些安装程序时vc_redist /q
,它们甚至会立即触发系统重启。这可以通过调用它们来解决/q /norestart
,但是:
调用时,如果在此安装程序之前vc_redist /q /norestart
重启等待,它将返回 MSI 退出代码,指示需要重启。3010
但是,AFAIK,此退出代码还表明,此设置需要重新启动才能完成。
实际问题
因此,我无法区分此安装程序是否成功并且只需要在我的安装序列的最后重新启动(我确实在之前和之后安装了 otehr 东西) -或者安装程序是否实际上拒绝执行任何操作并且我需要重新启动系统并再次启动此安装程序!
如何在不同的第三方安装程序链中调用此 vc_redist 和
- 理想情况下,最后只需要重新启动一次
- 至少,确定它是否安装成功。
一些额外的信息,fwiw:
不确定这些对问题有帮助,但为了完整起见。
- 安装程序 GUI 清楚地指示正在发生的事情:(抱歉,德语 Windows)
“没有采取任何行动,因为需要重新启动系统。”
这是我们的“产品套件”的 InnoSetup 内置安装程序,将供客户使用,安装顺序如下:
- 运行 MSVC 2005 (VC8) 32 位 vcredist
- 运行 MSVC 2010 (VC10) 32 位 vcredist
- 运行 MSVC 2017 (VC141) 64 位 vcredist
- 运行 MSVC 2017 (VC141) 32 位 vcredist
- 运行其他一些第三方依赖/库安装程序
- 安装实际的应用程序文件(通过 InnoSetup)
- 重新启动(询问)是否有任何安装程序指示需要重新启动。
正如你从这个序列中看到的那样,每次 vcredist 之后重新启动都会很疯狂,幸运的是,到目前为止,似乎只有 2017 年的 redist 表现出这种不幸的行为。
注意:我的开发机器上运行的试用版都是从“步骤 0”处已经挂起的重新启动开始的,即使重新启动在手之前等待重新启动,VC2005 和 VC2010 安装程序都运行良好(通过它们的 GUI 进度验证)。如果重新启动未决,则 VC2017 安装程序拒绝执行任何操作。