我有一个c#解决方案,其中包含一个作为COM对象访问的c ++项目。我在VS 2010中构建它,并创建了一个Windows Installer来安装该程序。该应用程序是64位,并在大多数机器上运行良好。但是,我想添加“Visual C ++ 2010 Runtime Libraries(x64)”作为先决条件,因此我可以确保系统上可以使用所需的所有内容。
如果我进行更改,每次我尝试在我的测试系统上安装它之前的工作时,我都被告知需要安装Visual C ++。我单击“安装”按钮,对UAC说“是”,并收到错误消息“已在计算机上检测到更新版本的Microsoft Visual C ++ 2010 Redistributable。”然后,我收到一条消息“安装系统组件时出错...在成功安装所有系统组件之前,安装程序无法继续。”
Component Visual C++ 2010 Runtime Libraries (x64) has failed to install with the following error message:
"Asia"
The following components failed to install:
- Visual C++ 2010 Runtime Libraries (x64)
如果计算机上已有更新版本的C ++,我发现无法安装应用程序,这很奇怪。
另外一点信息:要让msi文件与64位安装一起使用,我需要使用Orca编辑它,转到二进制 - > InstallUtil _>并将该字段更改为64位版本的installUtilLib.dll。由于在exe文件中进行了先决条件检查,因此在加载msi之前,我认为这不会产生影响,但我认为我会将其添加进去。如果我没有进行更改,安装程序会立即崩溃。
如果有人知道我需要做什么才能安装最新版本的Visual C ++,或者接受更高版本以满足要求,我将非常感谢指导。
目前正在Windows 7 x64系统上进行测试。
答案 0 :(得分:1)
可以找到解决此问题的步骤here,并且可以找到产品值here。
以下是我遵循的基本步骤:
编辑
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x64\product.xml
查找
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{6EE91C1A-A2E7-38CD-AEBB-3B900A4D8868}"/>
</InstallChecks>
更改为
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{1D8E6291-B0D5-35EC-8441-6616F567A0F7}"/>
</InstallChecks>
答案 1 :(得分:0)
解决方案
此问题无法解决,因为它是Microsoft的限制 安装程序遇到相同运行时的较新版本时 库。