c# - ClickOnce 无法在 Windows Vista SP2 上安装 LocalDB 2012

标签 c# winforms clickonce windows-vista localdb

我开发了一个基于 Microsoft .NET 4.5 框架的 winforms 应用程序。该应用程序使用 ClickOnce 发布方法进行部署。我还投入了大量时间来设置我的程序集和 ClickOnce 的安装程序的签名。签名有效。我的应用程序的先决条件之一是 LocalDB (2012),如果用户计算机上不存在,ClickOnce 会安装它。

.NET 框架的规范指出,支持的操作系统是:

  • Windows Vista SP2
  • Windows 7 SP1
  • Windows 8
  • Windows 8.1

我尝试在所有这些设备上安装我的应用程序,它按预期工作,但 Windows Vista SP2 除外。

在下载和安装其他先决条件时,无法安装其中一个。错误消息说:

Setup has detected that the publisher of file '...\AppData\Local\Temp\VSD56A2.tmp\SqlLocalDB2012\x86\sqlcmdlnutils.msi' cannot be verified. Click OK to retry the download, or Cancel to exit setup.

enter image description here

单击“确定”只会关闭窗口并再次发出相同的错误。

我尝试在另一台装有 Vista SP2 的计算机上安装我的应用程序 - 同样的问题。有谁知道为什么会出现此错误以及如何解决?尝试在网上搜索类似问题,但没有找到任何内容。

更新 #1: 正如 Krzysztof Kozielczyk 所建议的,我尝试手动安装有问题的 MSI 包。从 Microsoft 下载并安装 sqlncli.msiSqlCmdLnUtils.msi 成功解决了前两个错误。

但是,ClickOnce 很快会为 SqlLocalDB.msi 发出相同类型的警告。正如我对其他两个先决条件所做的那样,我从 Microsoft 下载了 MSI 并手动安装了 LocalDB,但这次 ClickOnce 无法识别它并仍然尝试安装它,但失败了。

更新#2:进一步检查表明,问题出在 clickonce 尝试下载的 MSI-s 的过期数字签名上。

enter image description here

我还向 Microsoft Connect 报告了这个错误.

有问题的 MSI 应该重新签名。我可以期望 Microsoft 解决这个问题吗?

最佳答案

ClickOnce 安装程序从 Microsoft 下载站点提取的 SqlCmdLnUtils.msi 包有问题。要么是包坏了(上传错误,CDN 上损坏的二进制文件,随便你怎么说),要么 FWLink 坏了。

在生成的 ClickOnce 包中,您应该能够找到用于下载二进制文件的链接。它看起来类似于 http://go.microsoft.com/fwlink/?linkld=012345。只需将其粘贴到您的浏览器,看看会发生什么。如果链接断开,将显示错误页面。如果该链接有效,它将下载 ClickOnce 正在尝试使用的确切 包,希望您能够使用它来确定它出了什么问题。

在这两种情况下,您都可能需要将问题告知 Microsoft,也许可以提交 connect项目。

关于c# - ClickOnce 无法在 Windows Vista SP2 上安装 LocalDB 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852132/

相关文章:

.net - 在 winform 应用程序中模拟 ajax 加载器

c# - 运行 WPF 应用程序的 ClickOnce 部署版本时出现奇怪的行为

c# - 我如何摆脱点击一次?

c# - 绑定(bind)空数据表时的 DetailsView 错误?

c# - Windows 窗体应用程序中窗体加载期间触发的 SelectedValueChange() 事件

c# - Windows 服务器服务总线。请求 URI 格式不正确

c# - DesignerAttribute 用法

c# - 在 ClickOnce 应用程序中使用 EventLog

c# - 混合模式程序集是针对运行时版本 'v2.0.50727' 构建的,无法在 4.0 运行时中加载

c# - .NET 中的 HTML 布局