Posts Tagged ‘VS’

不要从安装媒体修复VS2008 SP1

近来想添加几个VS2008的组件,通常的做法,便是启动原始的安装程序,然后进入选择修复安装。在没装SP1之前,这个方法是可以的。但如果装了SP1,这样便行不通了。程序可以启动,只是在加载组件的时候便会遇到个错误,提示:

A problem has been encountered while loading the setup components. Canceling setup.

然后要求cancel,进而整个过程退出。

想当然的拷贝了这个提示至Google,查看了很多结果,发现的竟是些牛头不对马嘴的解决方法。无奈,静下来思考思考,认为问题还是应该与SP1的安装有关,于是进一步搜索,发现了一篇Visual Studio 2008 Service Pack 1 (SP1) 自述文件。打开查看,窃喜,问题得到解决。考虑到这个问题应该很常见,但正确的答案却不容易找到,有点让人惊愕。如今在互联网上查资料,犹如沙里淘金,若不多多思考,先寻一些关键的关键词,便很容易被带带的团团转,这也算信息泛滥的恶果吧,不知道这个问题有没有的解决。闲话不多说,摘录部分重点,希望后来人能第一时间发现这里:

2.1.13 安装 SP1 后,不应从媒体运行 Visual Studio 修复

安装 Visual Studio SP1 后,请不要从原始发行版本 (RTM) 安装媒体运行 Visual Studio 修复。 随 Visual Studio 2008 SP1 安装的程序包较新,由于它们在原始发行版本安装媒体上不存在,因此只能使用“添加或删除程序”来修复。

解决此问题的方法:

修复 Visual Studio 2008 SP1:

  1. 从控制面板中打开“添加或删除程序”。
  2. 选择“Visual Studio 2008”,单击“更改”。
  3. 在维护窗口中选择“修复 Visual Studio”。

里面对于问题的原因描述的不是很详细,这里再解释下,翻译自Do not repair VS 2008 SP1 from installation media

Visual Studio 实际上集合了很多不同的程序安装包,VS2008 SP1 也是如此。VS2008 SP1 在进行各种次要或重大的升级时替换了原先的一些程序包,同时也可能为其他产品打上一些补丁。这样在安装了SP1后,原先安装的产品信息,如产品号,或者产 品版本号便被更改了。进而影响了setup.exe在安装修复或卸载产品时用于决定该做什么的检测逻辑。

这些产品信息共同存储在安装文件和硬盘上的目标安装目录。由于各种原因,如安装程序通常都是写保护的等,更新后的信息只能被存储在硬盘驱动器上。因此,一旦安装了SP1,安装程序和硬盘驱动器上的检测和安装包信息就不会同步,此时只有硬盘驱动器中的副本才含有正确的信息。