从VS 2012发布ClickOnce应用程序后下载先决条件时出错
问题描述:
我从Visual Studio 2012发布了ClickOnce应用程序,并选择了.NET 4.0运行时和Microsoft Report Viewer 2012作为先决条件。我还选择从供应商的网站下载先决条件。从VS 2012发布ClickOnce应用程序后下载先决条件时出错
当我尝试安装客户端PC上的应用程序,我收到以下错误:
Setup has detected that the file 'C:\Users\MyUsername\AppData\Local\Temp\VSD537C.tmp\DotNetFX40\dotNetFx40_Full_setup.exe' has changed since it was initially published.
日志没有提供其他细节。
如果我手动安装.NET运行时,那么当我再次运行Setup.exe时,我会收到报告查看器的相同错误。
导致此错误的原因是什么?如何防止它发生?
答
从Microsoft下载的文件的公钥与引导程序配置文件(Product.xml)中指定的公钥不同。至少其中一些已在VS 2012发布后发布,并且必须使用不同的密钥签名。我必须从数字签名证书中提取公钥并使用它来替换product.xml文件中指定的公钥。之后,它运行良好。
要提取公钥:
- 右键点击安装程序可执行文件并单击
Properties
。 - 单击
Digital Signatures
选项卡。 - 从列表中选择签名并单击
Details
按钮。 - 在
General
选项卡上,单击View Certificate
按钮。 - 在
Certificate
窗口中,单击Details
选项卡并找到名为Public Key
的字段。 - 突出显示并复制数据。您将需要运行查找/替换来删除空格。
- 将此密钥粘贴到此安装程序包的
Product.xml
文件的公钥属性中。
很高兴看到ClickOnce/ReportViewer在2013年仍然与我在2005年第一次使用它时一样。 – 2013-05-13 17:02:41
Argh,我仍然无法使它工作。我认为它也需要SQL CLR类型,但是go.microsoft.com DL链接是404. – 2013-05-13 17:29:48
@MarkSowul我也经历过同样的事情。我必须从另一个软件包下载SQL CLR Types安装文件。我完全忘记它是什么,但它是SQL服务器服务包或Visual Studio数据工具包。当然,我仍然需要执行下载后列出的步骤。 – NYSystemsAnalyst 2013-05-14 12:22:12