C# Windows Forms Application Update on Application Startup
My application has been successfully updating for ages, and I've been making changes, releasing new builds etc every day for the past few months, but now, when the application starts (it checks for updates on startup), it begins downloading the updated version from the server, and then fails 3-quarters of the way through with the following message:
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 : file:///C:/Users/Jason/Desktop/OOM.appref-ms%7C Server : Microsoft-IIS/7.0 X-Powered-By : ASP.NET Deployment Provider url : http://www.website.net.au/software/updates/something/OOM.application Application url : http://www.website.net.au/software/updates/something/jusername/Application%20Files/OOM_2_0_0_8/OOM.exe.manifest Server : Microsoft-IIS/7.0 X-Powered-By : ASP.NET
IDENTITIES Application Identity : OOM.exe, Version=2.0.0.8, Culture=neutral, PublicKeyToken=38928ec70a12c5e6, processorArchitecture=x86, type=win32
ERROR SUMMARY Below is a summary of the errors, details of these errors are listed later in the log. * Activation of C:\Users\Jason\Desktop\One Stop Management.appref-ms| resulted in exception. Following failure messages were detected: + Downloading http://www.website.net.au/software/updates/something/jusername/Application 开发者_如何学编程 Files/OOM_2_0_0_8/One Stop Management.exe.config 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 * [18/02/2011 5:55:50 PM] : Activation of C:\Users\Jason\Desktop\One Stop Management.appref-ms| has started. * [18/02/2011 5:55:50 PM] : Performing necessary update check as specified by the deployment. * [18/02/2011 5:55:51 PM] : Consuming new update. * [18/02/2011 5:55:52 PM] : Installation of the application has started. * [18/02/2011 5:55:53 PM] : Processing of application manifest has successfully completed. * [18/02/2011 5:55:53 PM] : Found compatible runtime version 4.0.30319. * [18/02/2011 5:55:53 PM] : Request of trust and detection of platform is complete.
ERROR DETAILS Following errors were detected during this operation. * [18/02/2011 5:55:54 PM] System.Deployment.Application.DeploymentDownloadException (Unknown subtype) - Downloading http://www.website.net.au/software/updates/something/jusername/Application Files/OOM_2_0_0_8/One Stop Management.exe.config 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.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options) at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp) at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc) at System.Deployment.Application.ApplicationActivator.ConsumeUpdatedDeployment(SubscriptionState& subState, ActivationDescription actDesc) at System.Deployment.Application.ApplicationActivator.PerformDeploymentUpdate(SubscriptionState& subState, String& errorPageUrl) at System.Deployment.Application.ApplicationActivator.ProcessOrFollowShortcut(String shortcutFile, String& errorPageUrl, TempFile& deployFile) 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.
Okay, so that tells me that there is a file that was not found. But I have double-checked, several times, and the file is there.
Anybody know what causes this?
Any help at all is appreciated!
IIS won't serve up *.config files by default to protect web.config and various other ASP configuration files which usually contain connection strings and other sensitive information involved in running the site. To get around this for Click-Once deployments all files get a .deploy added to the end so a *.config would be automatically renamed *.config.deploy when published. Did you manually add One Stop Management.exe.config or something? You might add a .deploy on the end as a temp workaround but in reality this should have been done for you at publish time. You DON'T want enable configs to download from IIS as this will present a security hole with your site.
I recently solved this exact same problem.
We had an application that was at a x.y.z.14 version and we kept making tons of modifications to it to the point where it got up to x.y.z.33 before we released it to our end users. After releasing the live version a handful were unable to upgrade from x.y.z.14 because we had removed the folder for it in the Application Files directory in the ClickOnce deploy.
After using fiddler to see exactly what the HTTP requests were saying I realized that yes indeed the 404 not found error was created because that folder that people needed to update through to the x.y.z.33 and beyond version just wasn't there. The manifest file that is.
If this happens to you, hopefully you have a rollback that you can use to add the most recent base version of your application to 'jump start' to the new version.
精彩评论