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

时间:2015-01-09 00:40:40

标签: c# winforms clickonce windows-vista localdb

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

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

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

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

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

  

安装程序检测到无法验证文件'... \ AppData \ Local \ Temp \ VSD56A2.tmp \ SqlLocalDB2012 \ x86 \ sqlcmdlnutils.msi'的发布者。单击“确定”重试下载,或单击“取消”退出设置。

enter image description here

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

我尝试在使用V​​ista 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-s应该再次签名。我可以期待微软解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

ClickOnce安装程序从Microsoft下载站点提取的SqlCmdLnUtils.msi包有问题。包都坏了(上传错误,CDN上的损坏二进制文件,你给它命名),或者FWLink坏了。

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

在这两种情况下,您可能需要通知Microsoft此问题,可能会提交connect项。