【问题标题】:ClickOnce Installer Prerequisites: How to auto-detect required version of Visual C++ RuntimeClickOnce 安装程序先决条件:如何自动检测所需的 Visual C++ 运行时版本
【发布时间】:2012-05-20 14:22:18
【问题描述】:

我编写了一个需要安装 Visual C++ 2010 可再发行组件的 C# 应用程序,并且我正在使用 Visual Studio 中内置的“发布”机制来分发该应用程序——它使用 Microsoft 的“ClickOnce”安装程序技术.

我发现我需要点击发布页面上的“先决条件”按钮,但出现了问题。

不知道用户是 x86 还是 64 位,我必须选中可再发行组件的 x86 和 x64 版本。

但如果 x86 用户安装它,他们会收到错误消息:“系统组件 Visual C++ 2010 运行时库 (x64) 的先决条件检查失败,并显示以下错误消息:“支持安装 Visual C++ 2010 运行时库 (x64)仅在 x64 机器上。”

但如果我不包含 x64 版本,那么 64 位用户就无法使用安装程序。

另一个问题是,一些用户收到错误“已在机器上检测到更新版本的 Microsoft Visual C++ 2010 Redistributable”,安装程序失败。

这整件事看起来像是一团糟。 ClickOnce 安装程序技术是否不够智能,无法确定用户需要 x86 还是 64 位版本的 C++ 可再发行组件?如果安装了较新的版本,那真的是个噱头吗?

这一切看起来都很脆弱,似乎应该有一个非常简单的修复方法。

【问题讨论】:

    标签: c# clickonce publish prerequisites redistributable


    【解决方案1】:

    ClickOnce 是应用程序的实际部署,而不是引导程序。发布 ClickOnce 应用程序将创建一个 setup.exe,它是为您安装先决条件的引导程序。你的问题是先决条件。

    您可以使用引导程序清单生成器(或记事本)创建所需的 XML 包信息,以使 C++ 可重新分发到您可以从 Visual Studio/Publish/Prerequisites 对话框中选择的必备包中。我建议您以这种方式设置先决条件,并查看 Bootstrapper 文件夹中的其他一些包(如 SQLExpress),看看它们是如何做到的。

    【讨论】:

      最近更新 更多