IDE/记录VS2015WinSDK安装过程中增删的系统组件和环境变量

news2024/11/24 22:58:03

文章目录

  • 概述
  • 看看"干净OS环境"
  • 安装VS软件后
    • 系统目录变化
    • 环境变量变化
    • 新增的组件程序
  • Qt及其VS插件安装后
  • 安装WinSDK后
    • 安装Win10SDK前
    • 安装WinSDK后
  • 卸载VS2015
  • 其他软件的影响

概述

本文旨在,通过记录干净OS环境下 VS2015、Qt、WinSDK 软件安装前后,对系统环境变量、系统目录、系统安装程序和组件列表等带来了哪些变化,结合曾经在 “不干净的OS下” 安装或使用VS时的失败经验,分析在 “不干净的OS” 下,VS2015安装或使用异常的原因。主要围绕着VS2015或WinSDK的安装和卸载前后,在操作系统下增加和删除了哪些组件、如何修改了环境变量等问题展开。

近半年撞上两次 VS2015安装问题,耗费了不少时间。不很清晰地推测了这些奇怪问题背后的原因:其中一次可能是,PC安装过VS2019,卸载后再尝试安装 VS2015 ;另一次可能是,新入职用了一台别人的电脑,此电脑可能装载过VS或微软的其他产品,后来又卸载过,导致系统注册表、环境变量、系统目录等不是那么干净。
一切似乎都指向 “安装软件的OS环境” 被污染啦,而又 “很难” 清理干净。前几日干脆重装了系统,本文观察记录了下安装VS相关产品前后,关于系统目录、环境变量、控制面板程序列表等方面的变化,以便再出现开发环境安装问题时能有个参考。

看看"干净OS环境"

2022年6月9号,重装了操作系统,系统版本Win10-1909,非系统盘格式化。

重装使用的操作系统版本重装后控制面板/程序和功能列表
在这里插入图片描述在这里插入图片描述

如上,在VS安装前,OS已经安装了大量的微软组件,它们大多应该是不同VS版本的运行时库。我们插进来看看安装VS后,使用相同按名称排序时,系统内的相关组件安装情况:
在这里插入图片描述

系统新重装后,初始的系统环境变量(PATH):
请添加图片描述

系统重装后,初始的系统盘目录情况(Windows开头的):
在这里插入图片描述
重点关注,在此"纯净的"OS环境下,上述 Program Files (x86) 及 Program Files 目录下并没有 windows Kits 目录。

安装VS软件后

本节不具体关注VS安装方法。主要是观察在纯OS下的安装VS后,环境变量、系统目录等情况的变化,以对比先前或未来遇到的相关异常,为其提供有力的分析依据。本次安装后提示:
请添加图片描述
上图是在纯净OS环境下安装的结果,安装过程中并未出现其他的告警或异常。在非纯净(安装过VS或微软的其他产品,后又卸载过)环境下,(相同的安装包) 安装过程中还出现了其他的告警,如找不到JavaScript_LanguageService.msi等(该现象表明,问题在很大的程度可能是待安装环境导致的,而不是安装包本身导致的)。

上图中提示 Microsoft Visual C++ 2015 Redistributable (x64/x86)已安装这个产品的另一个版本;结合下图中的 Microsoft Visual C++ 2015-2019 Redistributable (x64/x86)(是在OS安装后,VS安装前就有了);那么此现象就不足为奇啦。
已安装这个产品的另一个版本”,是常见现象,尤其是在高版本的OS下,安装相对低版本的VS软件时。另外,OS的Update过程,也会持续更新相关产品的版本,如:
在这里插入图片描述
可以看到上述选中行,20号这天,系统更新自动的给我安装了一个 Microsoft Visual C++ 2013 Redistributable(x86) - 12.0.21005,但是这个东西我其实在6月10日这天,装VS软件的时候就有了,而且版本、大小完全一致。

Redistributable 含义为 “可再发行的”。控制面板-卸载或更改程序窗口中,所有的 Redistributable*相关的产品,它们应该是些运行时组件,是在未安装 Visual Studio xxxx 的计算机上运行使用 Visual Studio 开发的应用程序所必需的(这些组件是可以单独下载package进行安装的-当然现在安装OS时基本都带全了)。

系统目录变化

请添加图片描述
上图是按照安装时间排序了 Program Files (x86) 下的目录,上图中的全部目录,均是在VS安装后新增加出来的目录(不排除有极少文件夹只是修改,不是新增,当时没有仔细留意)。上图,与IDE密切相关的文件夹应该是:Windows Kits 和 Microsoft SDKs目录。Here,我们重点关注目录 C:\Program Files (x86)\Windows Kits,发现其下已经包含了 8.1/10/NETFXSDK目录,其中:
Windows Kits\8.1\Lib\winv6.3 仅包含一个um文件夹,查看其x64目录为例,其中包含齐全的lib系列文件(也即是可以用以开发的)。
Windows Kits\10\Lib\10.0.10150.0 仅包含一个ucrt目录,查看其x64目录为例,其中仅包含ucrt.lib*系列文件(不可以用以开发调试的)。

环境变量变化

请添加图片描述
安装VS后的环境变量,相比安装前的环境变量,在PATH设置上多出来C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit; C:\Program Files\Microsoft SQL Server\120\Tools\Binn;两个路径。

新增的组件程序

在这里插入图片描述
如上图,是按照安装时间的筛选结果,它们全是VS安装完成后新增加的程序组件。好多啊,是不是!

Qt及其VS插件安装后

安装Qt软件、VS的Qt插件的安装等请参见 《IDE/在VS2015中集成Qt开发环境》。

Qt软件无外置环境变量
Qt软件安装完成后,PATH环境变量并未发生任何变化。在qmake等运行时,其会设置临时环境变量,请参考其他文章。

本次先安装了VS2015,又安装了Qt5.12,在安装了VS的Qt插件,没有进行过任何的其他配置操作,直接新建Qt Widget 项目,可以编译成功并运行。我们再倒回重装OS前,那时是在 "不干净"的OS下,先装了Qt,再装的 VS 和 Qt 插件,当时新建项目后,直接无法通过编译,不但找不到Qt的lib库,修正后,继续提示找不到 shell32.lib 等问题(当时我安装了Win10的SDK后,此问题才消失。现在回想起来,怀疑原因可能是环境变量中配置了Win10的SDK路径,但是系统盘下却根本没有这个SDK的东西)。

安装WinSDK后

好久以前用到SDK包是为了在QtCreator下能使用CDB调试。近期再次安装WinSDK包,是在VS中编译Qt最简单的项目都提示缺失shell32.lib等连接库(结合当前的实际问题,我安装了win10的SDK后,问题还真解决了)。在重装Win10系统,新装VS2015,新装Qt5.12,新装VSQt插件等一系列过程后,并没有再遇到类似问题。
但是我这里还是选择要安装下SDK,不为别的,就是看看它会给系统环境变量、系统盘目录,VS的相关配置项等带来什么变化,以便今后能识别出这种情况导致的IDE异常。最主要的,我就是想看看,在我安装Win10的SDK包后,系统环境变量的PATH中,C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit 路径会不会自动的被修改成 C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit ?

回想之前,若环境变量设置的是C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit,但实际上系统盘中压根就没有此目录(可能以前有,但是被卸载或删除了),能不带来问题吗?

安装Win10SDK前

注意环境变量下的路径,如下截图中8.1目录下,是VS2015原配的SDK开发库版本。至于目录10下压根没有 Windows Performance Toolkit 目录,我猜此目录仅仅是VS2015为了配合Win10操作系统而生成的一个运行时库,上文中也证实了,在该目录下的确不存在任何的WinSDK开发库文件。分别大略看下其目录结构:
请添加图片描述

请添加图片描述

安装WinSDK后

本小节内容是在编写 <<IDE/在QtCreator使用VS2015编译器+CDB调试器>> “安装WinSDK-CDB” 小节时实践总结出来的。本小节的前提是,为QtCreator安装CDB调试器,在安装(多个)WinSDK包时,一开始均仅选择了 Debugging Tools for Windows 安装项,此时并没有在VS具体项目属性 -> 常规 -> 目标平台版本选择项中,发现新装的WinSDK…

其原因可能是没有识别到?是我安装的SDK版本太高?
为了做进一步验证,我又下载并安装了14393版本的SDK(在官网下载页面,它已经没有iso版本,其中的"安装模拟器"是指支持移动设备体验开发和 UX 测试的仿真器版本,这里我们选择点击"安装SDK",下载下一个sdksetup.exe文件,1.12M大小)…
双击运行它后,初始弹出的安装界面与iso版一致,安装过程也与iso版本一致,没有再提示我进行在线下载什么的。安装完成后,也没有想象中的那样,能在everything中再收到新增4个cdb.exe文件。只是,在搜索14393时,可以在如下路径C:\Program Files (x86)\Windows Kits\10\Licenses 找到10.0.14393.0 和 10.0.19041.0 目录)…
为了保证可靠性,我还重启了电脑,新建了VS2015项目,再去查看项目属性,依然没有看到多出来的平台选择项和调试器选择项…

难道是安装路径或系统环境变量的问题? 先看看环境变量:
在环境变量里查看到如下相关路径
C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit
在C:\Program Files (x86)\Windows Kits\10 文件夹下,确实没有Windows Performance Toolkit
为此我们将尝试安装 Debugging Tools for Windows 外的组件
我们在返回到WinSDK的安装界面(之前我们仅选择了Debugging Tools For Windows 一个选项)…
在这里插入图片描述
(重新安装某个版本的WinSDK前要先去控制面板里卸载之前的安装)我们也看到了一个与环境变量中提及的 Windows Performance Toolkit 重名的安装项,这次除了 Debugging Tools For Windows 我们也勾选上Windows Performance Toolkit 安装项,重新安装…
在这里插入图片描述
上述安装过程可能包含部分在线下载过程,这个我不确定,毕竟安装包才1.12M,这两个安装项总共好几百M大小,但是,我的手机热点流量显示只消耗了40M左右…
Windows Performance Toolkit 组件安装完成后
环境变量中多出来C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\ 配置,原先的C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\ 配置依然存在…
打开VS2015的目标平台选择,依然只有8.1一个选项…
不服了…
再次卸载14393,然后重新安装,这次把Windows SoftWare Development kit 安装项也一并选择上(大小在1.7G左右)…
果然,皇天不负有心人…
在这里插入图片描述
选择安装Windows SoftWare Development kit 项目后,VS目标平台版本的选择项中终于有了想看到的新选项。

注意,通过VS2015的开发工具(包括调试器、编译器等)去调用Win10的SDK开发包,是否合适?难道不是VS2015原配的8.1版本,不是更加合适吗?而且作为程序的发布者,能使用低版本便不去追寻更高版本,应该是明智的。

卸载VS2015

在准确安装VS2017的时候,我执行了对VS2015的卸载。卸载前,我对系统内发布者是MicroSoft 的所有程序和组件列表进行了快照,通过对比卸载后的列表,可以发现只有红色框标记的部分被移除了。而VS2015安装时,增加的那两个环境变量依然存在,并没有被移除,这可能是出于对系统的保护吧,因为VS并不确定这个路径只有它自己在用。
在这里插入图片描述
仅做记录,不做细致追究。

其他软件的影响

由于之前见过有人说,Visio的安装和卸载,可能对VS的开发环境造成一定的影响,如果visio的卸载可能会意外的干掉一些开发依赖的库。因此本次安装visio的时候,特别关注了下。安装完成后,控制面板程序和功能中只是增加了 Microsoft Visio Professional 2013这一个程序,并没有其他增加;系统环境变量PATH无变化。可以肯定的是,visio是依赖.NET框架,和VS的运行库的,因为它与其他office软件一样,都是微软的产品,都是可以支持编程的。
另外,之前不止一次的遇到过,在Visio软件开启状态下,QtCreator软件使用异常的情况。具体原因并未搞清楚。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用mount临时挂载出现mount error(13): Permission denied

问题报错 mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) //报错信息&#xff0c;提示账号密码错误&#xff0c;其实并不是 添加secntlmssp参数即可&#xff1b;中途可能需要等一些时间 mount -t cifs -o usernamelisi,p…

在低配Windows上部署原版llama.cpp

现在大语言模型的部署&#xff0c;通常都需要大的GPU才能实现&#xff0c;如果是仅仅想研究一下&#xff0c;大语言模型的算法&#xff0c;我们是很想能够直接在我们的工作电脑上就能直接运行的&#xff0c;llama.cpp就是很好的实现。 LLaMa.cpp使用int4这种数值格式&#xff…

【js步骤引导】基于jquery实现步骤引导进度条效果(附源码)

【写在前面】 步骤引导条这个功能其实在我们很多业务系统中是最常见的&#xff0c;尤其是快递订单、审批流程、上传资源等涉及步骤操作的业务中广泛应用&#xff0c;因此今天我也详细的和大家讲讲如何基于jquery去实现步骤引导效果&#xff0c;支持上一步下一步的切换。 【涉…

【云计算】HBase表操作

文章目录 前言一、shell创建二、操作 前言 HBase是一个分布式、可扩展的、非关系型的NoSQL数据库。它是建立在Hadoop HDFS上的一个开源的数据库管理系统。HBase的设计目标是提供高可靠性、高可扩展性、高性能、高延迟、高容错性和高可用性。 HBase是一种面向列的数据库&#…

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning 本文提出了一个自主分组机制&#xff0c;这种机制具有 选举指挥官&#xff08;CE&#xff09; 和 消息总结&#xff08;MS&#xff09; 的功能。 在 CE 中&#xff0c;每隔 T个时间步…

【无标题】机器学习——朴素贝叶斯

朴素贝叶斯&#xff08;Naive Bayesian algorithm&#xff09;是有监督学习的一种分类算法&#xff0c;它基于“贝叶斯定理”实现&#xff0c;该原理的提出人是英国著名数学家托马斯贝叶斯。 一、贝叶斯定理 P(A) 这是概率中最基本的符号&#xff0c;表示 A 出现的概率。比如在…

Spark 4/5

4. 启动Spark Shell编程 4.1 什么是Spark Shell spark shell是spark中的交互式命令行客户端&#xff0c;可以在spark shell中使用scala编写spark程序&#xff0c;启动后默认已经创建了SparkContext&#xff0c;别名为sc 4.2 启动Spark Shell Shell /opt/apps/spark-3.2.3-bi…

实战深入了解redis+消息队列如何实现秒杀

SpringBoot Redis RabbitMQ 实现高并发限时秒杀 所谓秒杀&#xff0c;从业务角度看&#xff0c;是短时间内多个用户“争抢”资源&#xff0c;这里的资源在大部分秒杀场景里是商品&#xff1b;将业务抽象&#xff0c;技术角度看&#xff0c;秒杀就是多个线程对资源进行操作&…

配置NIS服务器及客户端

在服务端安装所需软件包 设置主机名和NIS域名 编辑 NIS服务器主配置文件 最下面编辑访问控制 建立测试用户 配置NFS&#xff0c;否则客户端切换用户时&#xff0c;用户没有家目录 安装NFS所需软件包 Nfs-utils 给两个共享目录权限&#xff0c;编辑NFS配制文件 共享两个目录 重…

12.JavaWeb-Spring Boot + 物业管理项目

1.Spring Boot 概念 自动处理应用程序幕后的各种杂事&#xff08;Spring框架的应用程序的配置和部署过程&#xff09;&#xff0c;让你专注于做那些使应用程序独特的工作 1.1 Spring Boot的核心功能 1.1.1 自动配置 Spring Boot根据应用程序的依赖和配置信息&#xff0…

计算机网络——自顶向下方法(第二章学习记录)

本章学习应用层 网络应用是计算机网络存在的理由。 网络应用程序体系结构 现代网络应用程序有两种主流体系结构&#xff1a;客户—服务器体系结构和对等(P2P)体系结构 客户—服务器体系结构&#xff08;client-server )&#xff0c;在这个结构中&#xff0c;有一个总是打开的…

SAP CAP篇五:为CAP添加Fiori Elements程序(2)

本文目录 本系列之前的文章新建Fiori Elements Application选择Application TypeData SourceEntity SelectionProject InformationLaunchpad Setting 修改manage-books文件夹子文件夹 webapp重命名 annotations.cds更新fiori-service.cdsmanifest.json 添加services.cds到app文…

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析

哈工大计算机网络课程传输层协议之&#xff1a;拥塞控制原理剖析 文章目录 哈工大计算机网络课程传输层协议之&#xff1a;拥塞控制原理剖析拥塞成因和代价&#xff1a;场景1拥塞成因和代价&#xff1a;场景2拥塞成因和代价&#xff1a;场景3如何进行拥塞控制拥塞控制的方法TCP…

哈工大计算机网络课程网络层协议之:网络层服务概述

哈工大计算机网络课程网络层协议之&#xff1a;网络层服务概述 文章目录 哈工大计算机网络课程网络层协议之&#xff1a;网络层服务概述网络层概述网络层核心功能—转发与路由网络层核心功能—连接建立网络层服务模型虚电路网络与数据报网络虚电路网络虚电路(VC)的具体实现VC转…

Web 渗透测试攻防之浅述信息收集

前言 众所周知渗透测试的本质是信息收集&#xff0c;在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息&#xff0c;收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…

【前端布局篇】响应式布局 Bootstrap 移动端布局

前言 1. 布局介绍 布局:layout 对事物的全面规划和安排 页面布局&#xff1a;对页面的文字、图形或表格进行格式设置。包括字体、字号、颜色纸张大小和方向以及页边距等。 网页布局&#xff1a;利用html搭建结构与内容&#xff0c;使用CSS添加装饰 网页布局有很多种方式&a…

Flink 学习七 Flink 状态(flink state)

Flink 学习七 Flink 状态(flink state) 1.状态简介 流式计算逻辑中,比如sum,max; 需要记录和后面计算使用到一些历史的累计数据, 状态就是:用户在程序逻辑中用于记录信息的变量 在Flink 中 ,状态state 不仅仅是要记录状态;在程序运行中如果失败,是需要重新恢复,所以这个状态…

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略-计算机毕设 附源码87656

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略 摘 要 疫情之下&#xff0c;实体经济面临下行压力。2019年以来&#xff0c;新冠肺炎疫情卷土而来&#xff0c;各地地疫情防控形势严峻&#xff0c;许多中小微企业经营发展屡次遭受打击。面对疫情常态化的社会现实&#x…

[学习笔记] [机器学习] 13. 集成学习进阶(XGBoost、OTTO案例实现、LightGBM、PUBG玩家排名预测)

视频链接数据集下载地址&#xff1a;无需下载 学习目标&#xff1a; 知道 XGBoost 算法原理知道 otto 案例通过 XGBoost 实现流程知道 LightGBM 算法原理知道 PUBG 案例通过 LightGBM 实现流程知道 Stacking 算法原理知道住房月租金预测通过 Stacking 实现流程 1. XGBoost 算…