22

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

每次我运行安装程序时,我都会弹出“以下组件将安装在您的机器上”。“Visual C++ 2010 运行时库 (x86)”。第一次按预期安装。第二次和随后的时间它询问我是否修复或删除 VC++ 2010。

这个弹出窗口应该只显示一次,第一次发现没有安装 VC++ redistributable。

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

解决方案:

我接受的答案给了我解决问题所需的东西。以下是我为解决此问题所做的详细信息,实际上这非常简单。我编辑了文件:

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

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

<InstallChecks>
    <MsiProductCheck Property="VCRedistInstalled" Product="{6EE91C1A-A2E7-38CD-AEBB-3B900A4D8868}"/>
</InstallChecks>

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

<InstallChecks>
    <MsiProductCheck Property="VCRedistInstalled" Product="{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}"/>
</InstallChecks>

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

4

1 回答 1

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\

然后,您可以在设置项目属性页面中选择先决条件。

于 2011-10-17T06:24:30.320 回答