如果选中“检查更新”,ClickOnce应用程序将失败

问题描述:

以下是我正在做的事情。我在Visual Studio 2010下创建了简单的空白WPF应用程序。我启用ClickOnce部署,设置签名,安全性等,并发布到本地的实例IIS。我启动浏览器,点击publish.htm页面,并正确安装。然后点击属性 - >属性 - >按钮上的'更新...'按钮,发布页面。我点击“应用程序应该检查更新”复选框并选择“应用程序启动之前”的单选按钮。我单击确定,再次将其发布到本地IIS,然后点击publish.htm页面。当我点击'安装'虽然,我得到一个错误,'无法下载应用程序。该应用程序缺少必需的文件。联系应用程序供应商寻求帮助。'。如果选中“检查更新”,ClickOnce应用程序将失败

我发现的唯一参考文件是application.manifest文件中列出的文件丢失,但我似乎无法确定它是什么。如果有人甚至可以简单地将我指向正确的方向,我会很感激。

这绝对是404 Not Found错误,但我不知道它指的是什么文件。这里是'详细信息'页面 -

PLATFORM VERSION INFO 
    Windows    : 6.1.7600.0 (Win32NT) 
    Common Language Runtime  : 4.0.30319.1 
    System.Deployment.dll  : 4.0.30319.1 (RTMRel.030319-0100) 
    clr.dll    : 4.0.30319.1 (RTMRel.030319-0100) 
    dfdll.dll   : 4.0.30319.1 (RTMRel.030319-0100) 
    dfshim.dll   : 4.0.31106.0 (Main.031106-0000) 

SOURCES 
    Deployment url   : http://localhost/WpfApplication1/WpfApplication1.application 
         Server  : Microsoft-IIS/7.5 
         X-Powered-By : ASP.NET 
    Deployment Provider url  : http://jerrydev/WpfApplication1/WpfApplication1.application 

ERROR SUMMARY 
    Below is a summary of the errors, details of these errors are listed later in the log. 
    * Activation of http://localhost/WpfApplication1/WpfApplication1.application resulted in exception. Following failure messages were detected: 
     + Downloading http://jerrydev/WpfApplication1/WpfApplication1.application did not succeed. 
     + The remote server returned an error: (404) Not Found. 

COMPONENT STORE TRANSACTION FAILURE SUMMARY 
    No transaction error was detected. 

WARNINGS 
    There were no warnings during this operation. 

OPERATION PROGRESS STATUS 
    * [1/13/2011 11:05:50 AM] : Activation of http://localhost/WpfApplication1/WpfApplication1.application has started. 

ERROR DETAILS 
    Following errors were detected during this operation. 
    * [1/13/2011 11:05:50 AM] System.Deployment.Application.DeploymentDownloadException (Unknown subtype) 
     - Downloading http://jerrydev/WpfApplication1/WpfApplication1.application did not succeed. 
     - Source: System.Deployment 
     - Stack trace: 
      at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) 
      at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() 
      at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState) 
      at System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) 
      at System.Deployment.Application.DownloadManager.DownloadManifest(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ManifestType manifestType, ServerInformation& serverInformation) 
      at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirect(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) 
      at System.Deployment.Application.DownloadManager.FollowDeploymentProviderUri(SubscriptionStore subStore, AssemblyManifest& deployment, Uri& sourceUri, TempFile& tempFile, IDownloadNotification notification, DownloadOptions options) 
      at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options) 
      at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) 
      at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) 
     --- Inner Exception --- 
     System.Net.WebException 
     - The remote server returned an error: (404) Not Found. 
     - Source: System 
     - Stack trace: 
      at System.Net.HttpWebRequest.GetResponse() 
      at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) 

COMPONENT STORE TRANSACTION DETAILS 
    No transaction information is available. 

您是否正在发布到本地主机并将它安装在同一台机器上?我问,因为它在URL中有localhost。您是否在更新对话框中填写UpdateURL,或将其留空?如果它应该与安装URL相同,请将其留空。

你的安装URL是什么样的?

我在万维网的URL(发布,安装,更新)中使用本地主机;我发现在'localhost'的情况下,发布过程将在清单中使用机器名称。我的问题实际上源于没有更新我的Hosts.etc文件以将我的机器名映射到'localhost'。解决这个问题,解决了我在安装我的clickonce应用程序时遇到的所有问题,以及在安装后能够更新它。