如何正确发布我的应用?

我正在使用visual studio来创建我的第一个Windows桌面c#wpf应用程序。

我正处于我想要发布/部署/构建它的阶段。

在Visual Studio Express 2013中,我右键单击我的项目并单击“发布”,然后单击“下一步”并保留发布位置的默认值,因为我不知道应该放置什么,接下来我选择让用户从cd-rom / dvd安装并告诉它不检查更新,然后单击完成。

然后它在我的桌面上创建一个“clickonce”应用程序。 所以我上传了一个Web服务器,下载它,然后尝试运行它。

它失败。

它说:

Cannot download the application. The application is missing required files. Contact application vendor for assistance. 

如果我点击详细信息,我会得到更详细的信息

 PLATFORM VERSION INFO Windows : 6.2.9200.0 (Win32NT) Common Language Runtime : 4.0.30319.18449 System.Deployment.dll : 4.0.30319.17929 built by: FX45RTMREL clr.dll : 4.0.30319.18449 built by: FX451RTMGDR dfdll.dll : 4.0.30319.17929 built by: FX45RTMREL dfshim.dll : 4.0.41209.0 (Main.041209-0000) SOURCES Deployment url : file:///C:/Users/Lanboy/Downloads/Bingo%20Game.application IDENTITIES Deployment Identity : Bingo Game.application, Version=1.0.0.1, Culture=neutral, PublicKeyToken=a82aa93ff33fa9be, processorArchitecture=msil APPLICATION SUMMARY * Installable application. ERROR SUMMARY Below is a summary of the errors, details of these errors are listed later in the log. * Activation of C:\Users\Lanboy\Downloads\Bingo Game.application resulted in exception. Following failure messages were detected: + Downloading file:///C:/Users/Lanboy/Downloads/Application Files/Bingo Game_1_0_0_1/Bingo Game.exe.manifest did not succeed. + Could not find a part of the path 'C:\Users\Lanboy\Downloads\Application Files\Bingo Game_1_0_0_1\Bingo Game.exe.manifest'. + Could not find a part of the path 'C:\Users\Lanboy\Downloads\Application Files\Bingo Game_1_0_0_1\Bingo Game.exe.manifest'. + Could not find a part of the path 'C:\Users\Lanboy\Downloads\Application Files\Bingo Game_1_0_0_1\Bingo Game.exe.manifest'. COMPONENT STORE TRANSACTION FAILURE SUMMARY No transaction error was detected. WARNINGS There were no warnings during this operation. OPERATION PROGRESS STATUS * [24/06/2014 19:49:15] : Activation of C:\Users\Lanboy\Downloads\Bingo Game.application has started. * [24/06/2014 19:49:15] : Processing of deployment manifest has successfully completed. * [24/06/2014 19:49:15] : Installation of the application has started. ERROR DETAILS Following errors were detected during this operation. * [24/06/2014 19:49:15] System.Deployment.Application.DeploymentDownloadException (Unknown subtype) - Downloading file:///C:/Users/Lanboy/Downloads/Application Files/Bingo Game_1_0_0_1/Bingo Game.exe.manifest 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.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath) at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, Uri& appSourceUri, String& appManifestPath) 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.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 - Could not find a part of the path 'C:\Users\Lanboy\Downloads\Application Files\Bingo Game_1_0_0_1\Bingo Game.exe.manifest'. - Source: System - Stack trace: at System.Net.FileWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.FileWebRequest.GetResponse() at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) --- Inner Exception --- System.Net.WebException - Could not find a part of the path 'C:\Users\Lanboy\Downloads\Application Files\Bingo Game_1_0_0_1\Bingo Game.exe.manifest'. - Source: System - Stack trace: at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint) at System.Net.FileWebRequest.GetResponseCallback(Object state) --- Inner Exception --- System.IO.DirectoryNotFoundException - Could not find a part of the path 'C:\Users\Lanboy\Downloads\Application Files\Bingo Game_1_0_0_1\Bingo Game.exe.manifest'. - Source: mscorlib - Stack trace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync) at System.Net.FileWebStream..ctor(FileWebRequest request, String path, FileMode mode, FileAccess access, FileShare sharing, Int32 length, Boolean async) at System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint) COMPONENT STORE TRANSACTION DETAILS No transaction information is available. 

我究竟做错了什么? 我错过了关键的一步吗? 我是否需要在我的服务器上托管清单文件并以某种方式指向它?

任何帮助是极大的赞赏。

更新根据评论和回答,我决定将所有提供给我的文件发布并压缩。 zip文件夹中的文件包括:

 Bingo Game.application Bingo Game.exe.config.deploy Bingo Game.exe.deploy Bingo Game.exe.manifest 

然后我重新上传到服务器,下载,解压缩并单击Bingo Game.application,它失败并出现与上面完全相同的错误。

有几件事需要检查; 首先,您在发布应用程序时是否看到以下目录结构(如果没有,那么这是您可能想要的结构):

 BingoGame Application Files Bingo Game_1_0_0_0 *.deploy Bingo.Game.exe.manifest Bingo Game_1_0_0_1 *.deploy Bingo.Game.exe.manifest Bingo.Game.Application setup.exe 

这些文件应该在您正在下载的服务器上(它确实看起来像清单一样)。

同样重要的是,自构建以来,没有任何文件发生过变化; 如果他们有,你不想或不能重建,看看法师 。

您似乎只上传了部分文件。 您可以从下图中看到ClickOnce进程生成多个文件。 看起来您没有复制.manifest文件,因此ClickOnce应用程序无法validation程序是否已损坏。

MS网站

来源: http : //msdn.microsoft.com/en-us/library/ff699352.aspx

按照前面的答案指示确保您的清单文件位于带有安装文件的Web服务器上之后,您需要确保IIS正在提供“.manifest”文件。 我相信IIS 7默认允许这样做,但是如果您使用的是旧版本的IIS,则可能是问题所在。

查看将清单扩展添加到IIS上的MIME类型