admin管理员组

文章数量:1594217

文章目录

    • vs - 在win10中安装vs2013update5
    • 概述
    • 笔记
    • 直接安装vs2013-update5报错
    • 先安装vs2013原版
    • 安装 vs2013 update5
    • 测试
    • 备注
    • END

vs - 在win10中安装vs2013update5

概述

用VS2019写的程序,在早期windows(e.g. win7, win8.1)上安装时,需要UCRT。
UCRT是操作系统的一部分,如果不是最新的早期windows, 必须安装补丁。
这让用户就很不爽了。
软件说明书要在安装这块写很多关于各种早期windows安装时,如何安装补丁的说明。

查了一下, UCRT是VS2015引入的。
如果想避免UCRT安装的问题, 程序就只能用VS2013写。
下载了 cn_visual_studio_ultimate_2013_rc_x86_dvd_2760148.iso, mu_visual_studio_2013_update_5_x86_dvd_6815499.iso
尝试装一下。
如果能装上,以后不是非必须VS2019, 那就用VS2013写。

笔记

直接安装vs2013-update5报错

开始直接装 mu_visual_studio_2013_update_5_x86_dvd_6815499.iso,装不了,报错如下。

查了资料, 有同学提到这个问题,没说咋解决。
点击报错框的日志,看看可能是啥原因?

[20350:20328][2024-06-01T11:24:29]i052: Condition 'NOT (CurrentOperation = "Uninstall")' evaluates to true.
[20350:20328][2024-06-01T11:24:29]i052: Condition 'NOT (CurrentOperation = "Uninstall")' evaluates to true.
[20350:20328][2024-06-01T11:24:29]i052: Condition 'NOT (CurrentOperation = "Uninstall")' evaluates to true.
[20350:20328][2024-06-01T11:24:29]i052: Condition 'NOT (CurrentOperation = "Uninstall")' evaluates to true.
[20350:20328][2024-06-01T11:24:29]i052: Condition 'NOT (CurrentOperation = "Uninstall")' evaluates to true.
[20350:20328][2024-06-01T11:24:29]i052: Condition 'NOT (CurrentOperation = "Uninstall")' evaluates to true.
[20350:20328][2024-06-01T11:24:29]i052: Condition '(CurrentOperation = "Install") OR (CurrentOperation = "Repair")' evaluates to true.
[20350:20328][2024-06-01T11:24:29]i000: MUX:  Stop Block: NoApplicableUpdates : Update 5 does not apply, or is blocked by another condition on your computer.
[20350:20328][2024-06-01T11:24:29]i000: MUX:  Detect Completed
[20350:20328][2024-06-01T11:24:29]i000: MUX:  Wait for View to be loaded
[20350:2044C][2024-06-01T11:24:29]i000: MUX:  Detect Completed, now create view
[20350:20328][2024-06-01T11:24:29]i000: MUX:  View loaded
[20350:20328][2024-06-01T11:24:29]i000: MUX:  Go to Blocker page.
[20350:20328][2024-06-01T11:24:29]i199: Detect complete, result: 0x0

看到日志说:

  • Condition ‘(CurrentOperation = “Install”) OR (CurrentOperation = “Repair”)’ evaluates to true.
  • 没有应用可以升级 “NoApplicableUpdates : Update 5 does not apply”

这就大概能猜出来了,必须要先安装vs2013原版,再安装vs2013-update5才行。

先安装vs2013原版

cn_visual_studio_ultimate_2013_rc_x86_dvd_2760148.iso
用win10资源管理器打开cn_visual_studio_ultimate_2013_rc_x86_dvd_2760148.iso
在光驱中运行 vs_ultimate.exe
默认安装路径为 C:\Program Files (x86)\Microsoft Visual Studio 12.0

默认安装选项中空出的那2项,确实不需要。
杀毒软件会拦截VS2013的安装过程,需要人看着允许安装。
正常安装完。
启动了一下,说是发行预览版,要升级。
要不就是要登录,要不就是要升级,没有输入密钥的地方。
点击退出VS2013RC版。

安装 vs2013 update5

mu_visual_studio_2013_update_5_x86_dvd_6815499.iso
用win10资源管理器打开mu_visual_studio_2013_update_5_x86_dvd_6815499.iso
运行光驱中的VS2013.5.exe
勾选"同意", 然后安装
正常安装完成.
启动VS2013-update5
VS2013启动后,显示正在更新新闻,然后就自动退出了…

应该是 mu_visual_studio_2013_update_5_x86_dvd_6815499.iso 这个安装程序不对。
下载了一个 cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso, 这个应该直接可以安装(不需要vs2013原版)。
我就不卸载已经安装的vs2013, 直接安装 cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso。
用win10资源管理器打开cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso,运行光驱中的vs_ultimate.exe

确实,这个版本是自带vs2013 + update5的,一个安装包就搞定。
那我先卸载了已经安装的vs2013,将前2个没用的vs2013的iso删掉。
卸载的时候显示一直在创建还原点,特别的慢。
取消卸载,关闭计算机,呆一会开机,重新卸载,这时卸载的快多了。
等待卸载完成。
用win10资源管理器打开cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso,运行光驱中的vs_ultimate.exe
默认的安装路径 为 C:\Program Files (x86)\Microsoft Visual Studio 12.0
安装组件和VS2013原版一样,都是默认没勾那2项。
等待安装完成。
安装完成,点击启动按钮。
VS2013update5正常启动,不会自己退出。


官方的url应该是变了,产品视频和公告是空的。
找前排同学留下的密钥,输入好使。
安装完成。

测试

新建一个 x64 MFC dlg 工程,确认编译选项,编译成x64-release版。
打开vmware中的win7x64镜像,回到快照win7-7600, 这是原始版本,没打SP1补丁。
拷贝release.exe到win7-7600,运行,提示少mfc120u.dll
拷贝 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x64\Microsoft.VC120.MFC 中的2个dll到测试环境

再运行,提示少 MSVCR120.dll
拷贝 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x64\Microsoft.VC120.CRT 中的3个dll到测试环境

再运行,可以正常运行了。
那VS2013update5环境就好了。

备注

微软官方光想着自己爽了,到了VS2015之后,程序中必然会用到UCRT, 但是UCRT是操作系统的一部分,无法通过打包来解决。

如果用户环境没打补丁(e.g. win7必须是win7SP1), 必须打补丁,3个补丁, 其中 windows6.1-kb976932-x64_74865ef2562006e51d7f9333b4a8d45b7a749dab.exe 是900+MB.

另外的2个补丁虽然不大(windows6.1-kb2533552-x64_0ba5ac38d4e1c9588a1e53ad390d23c1e4ecd04d.msu, Windows6.1-KB2999226-x64.msu),在安装程序中也不好判断,也需要手工来装。

如果不是必须,如果有可能,还是用VS2013来写工程,对于程序员来说,VS2019/VS2022和VS2013区别不大。
看资料时,看到前排同学的笔记,他们是因为一个第三方库使用VS2015编译的,他们那个工程打包才开始包含VS2015的DLL。

UCRT对于MS倒是方便了,对于程序员来说挺恶心的。

END

本文标签: