Visual C++ 2010运行时库先决条件不断弹出VS 2010创建的安装程序

Ela*_*lan 22 setup-project visual-studio-2010 bootstrapper visual-c++

我使用Visual Studio 2010版本10.0.40.219.1 SP1 Rel创建了一个安装程序.我的应用程序是为x86构建/编译的,需要VC++运行时库.因此,安装项目配置为VC++运行时库作为先决条件.

每次运行安装程序时,我都会弹出"您的计算机上将安装以下组件"."Visual C++ 2010运行时库(x86)".它是第一次按预期安装.第二次及以后,它会询问我是否修复或删除VC++ 2010.

此弹出窗口应该只显示一次,第一次发现未安装VC++可再发行组件.

有没有人见过这个?有谁知道如何解决这个问题?

解:

我接受的答案给了我解决问题所需要的东西.以下是我为解决这个问题所做的工作的细节,事实上这非常简单.我编辑了文件:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86\product.xml
Run Code Online (Sandbox Code Playgroud)

在此文件中,您将找到以下内容:

<InstallChecks>
    <MsiProductCheck Property="VCRedistInstalled" Product="{6EE91C1A-A2E7-38CD-AEBB-3B900A4D8868}"/>
</InstallChecks>
Run Code Online (Sandbox Code Playgroud)

以上包含不正确的产品代码.将以上内容替换为Visual C++ 2010 SP1可再发行组件的正确产品代码,如下所示:

<InstallChecks>
    <MsiProductCheck Property="VCRedistInstalled" Product="{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}"/>
</InstallChecks>
Run Code Online (Sandbox Code Playgroud)

此处的链接显示各种VC++ 2010 Redistributables的正确产品代码.

Cos*_*rvu 14

发生这种情况是因为先决条件检测标准不正确.

解决方案是使用正确的条件创建自己的自定义先决条件.也许这篇文章会有所帮助:http: //blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx

Visual Studio安装项目不支持此功能.但可以通过手动生成所需的清单来完成.

你可以在这里找到清单结构:http://msdn.microsoft.com/en-us/library/ms229223(VS.80).aspx

使用Bootstrapper Manifest Generator工具可以自动生成这些清单.

生成包清单后,您可以将所有这些文件(包括包)添加到Visual Studio先决条件文件夹中的单独文件夹中,例如:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\
Run Code Online (Sandbox Code Playgroud)

然后,您可以在安装项目属性页面中选择先决条件.