c# - ClickOnce 安装程序先决条件 : How to auto-detect required version of Visual C++ Runtime

标签 c# clickonce publish prerequisites redistributable

我编写了一个需要安装 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++ 可再发行组件?如果安装了更新的版本,那真的是一个表演障碍吗?

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

最佳答案

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

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

关于c# - ClickOnce 安装程序先决条件 : How to auto-detect required version of Visual C++ Runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10560653/

相关文章:

时间:2019-03-17 标签:c#currencycombobox

c# - 将 ASP .NET MVC ActionResult 呈现为字符串

c# - 有没有办法更改 'Add or Remove Programs' 中 ClickOnce 应用程序的图标?

visual-studio-2010 - VS 2010 ClickOnce - 指定离线安装的 URL?

visual-studio-2013 - 如何从发布中排除 .less 文件?

c# - 如何将 C# 变量添加到 html 模态

c# - 在 session 或替代解决方案中存储 linq-to-sql 对象

wpf - UI 选项卡控制调试和部署版本之间的可见性变化

C# 程序更新

scala - SBT如何发布从运行命令生成的工件