【发布时间】:2014-09-15 10:09:30
【问题描述】:
我正在使用 clickonce 部署在业务环境 (AD) 中部署 WPF 应用程序。该应用程序是使用 Visual Studio 2013 开发的,基于 .Net 4.5。部署仅针对 Windows 7 计算机。部署服务器使用 IIS 7.5 并在 Windows Server 2008 R2 上运行。
部署被配置为应用程序在应用程序启动之前检查更新。
部署至少在大多数情况下都能正常工作,但我最近在安装应用程序更新时在几台机器上遇到了随机问题。
用户收到以下错误消息:
应用程序无法启动。联系应用程序发布者。
无法启动应用程序。请联系应用程序供应商寻求帮助。
这个错误是MSDN, Troubleshooting Specific Errors in ClickOnce Deployments中的文档
这些是应用程序时发生的一般错误消息 无法启动,也找不到其他具体原因。
我设法收集了一个涵盖此错误的日志文件:
PLATFORM VERSION INFO
Windows : 6.1.7601.65536 (Win32NT)
Common Language Runtime : 4.0.30319.18444
System.Deployment.dll : 4.0.30319.18408 built by: FX451RTMGREL
clr.dll : 4.0.30319.18444 built by: FX451RTMGDR
dfdll.dll : 4.0.30319.18408 built by: FX451RTMGREL
dfshim.dll : 4.0.41209.0 (Main.041209-0000)
SOURCES
Deployment url: file:///C:/Users/ADUSERNAME/AppData/Roaming/Microsoft/Windows/Start%20Menu/Programs/Supply%20Chain%20Services%20-%20Systems%20and%20Processes/APPLICATIONNAME/APPLICATIONNAME%20Suite.appref-ms%7C
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Deployment Provider url: http://SERVERNAME:PORT/APPLICATIONNAME.application
Application url: http://SERVERNAME:PORT/Application%20Files/APPLICATIONNAME_1_0_3_9/APPLICATIONNAME.exe.manifest
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
IDENTITIES
Application Identity: APPLICATIONNAME.exe, Version=1.0.3.9, Culture=neutral, PublicKeyToken=XXXXXXXXXXXXXXXX, processorArchitecture=msil, 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\ADUSERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Supply Chain Services - Systems and Processes\APPLICATIONNAME\APPLICATIONNAME Suite.appref-ms| resulted in exception. Following failure messages were detected:
+ A device attached to the system is not functioning. (Exception from HRESULT: 0x8007001F)
COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.
WARNINGS
There were no warnings during this operation.
OPERATION PROGRESS STATUS
* [08/09/2014 09:25:02] : Activation of C:\Users\ADUSERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Supply Chain Services - Systems and Processes\APPLICATIONNAME\APPLICATIONNAME Suite.appref-ms| has started.
* [08/09/2014 09:25:04] : Performing necessary update check as specified by the deployment.
* [08/09/2014 09:25:07] : Consuming new update.
* [08/09/2014 09:25:09] : Installation of the application has started.
* [08/09/2014 09:25:10] : Processing of application manifest has successfully completed.
* [08/09/2014 09:25:10] : Found compatible runtime version 4.0.30319.
* [08/09/2014 09:25:10] : Request of trust and detection of platform is complete.
* [08/09/2014 09:25:18] : Downloading of subscription dependencies is complete.
* [08/09/2014 09:25:18] : Commit of the downloaded application has started.
ERROR DETAILS
Following errors were detected during this operation.
* [08/09/2014 09:25:22] System.Runtime.InteropServices.COMException
- A device attached to the system is not functioning. (Exception from HRESULT: 0x8007001F)
- Source: System.Deployment
- Stack trace:
at System.Deployment.Internal.Isolation.IStore.Transact(IntPtr cOperation, StoreTransactionOperation[] rgOperations, UInt32[] rgDispositions, Int32[] rgResults)
at System.Deployment.Application.ComponentStore.SubmitStoreTransaction(StoreTransactionContext storeTxn, SubscriptionState subState)
at System.Deployment.Application.ComponentStore.CommitApplication(SubscriptionState subState, CommitApplicationParams commitParams)
at System.Deployment.Application.SubscriptionStore.CommitApplication(SubscriptionState& subState, CommitApplicationParams commitParams)
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)
COMPONENT STORE TRANSACTION DETAILS
* Transaction at [08/09/2014 09:25:22]
+ System.Deployment.Internal.Isolation.StoreOperationStageComponent
- Status: Installed
- HRESULT: 0x0
- Manifest: ZJHPL38T.V57.application
+ System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata
- Status: Set
- HRESULT: 0x0
+ System.Deployment.Internal.Isolation.StoreOperationStageComponent
- Status: Installed
- HRESULT: 0x0
- Manifest: APPLICATIONNAME.exe.manifest
+ System.Deployment.Internal.Isolation.StoreOperationStageComponentFile
- Status: Installed
- HRESULT: 0x0
- File: APPLICATIONNAME.exe.config
!!! Removed 550 Lines !!!
+ System.Deployment.Internal.Isolation.StoreOperationInstallDeployment
- Status: Installed
- HRESULT: 0x0
- AppId: http://SERVERNAME:PORT/APPLICATIONNAME.application#APPLICATIONNAME.application, Version=1.0.3.9, Culture=neutral, PublicKeyToken=e5b020d18338a5ca, processorArchitecture=msil
+ System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata
- Status: Set
- HRESULT: 0x0
+ System.Deployment.Internal.Isolation.StoreOperationUninstallDeployment
- Status: Uninstalled
- HRESULT: 0x0
- AppId: http://SERVERNAME:PORT/APPLICATIONNAME.application#APPLICATIONNAME.application, Version=1.0.3.3, Culture=neutral, PublicKeyToken=e5b020d18338a5ca, processorArchitecture=msil
+ System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata
- Status: Set
- HRESULT: 0x0
+ System.Deployment.Internal.Isolation.StoreTransactionOperationType (27)
- HRESULT: 0x8007001f
我还为我的测试机器激活了详细日志记录 (using this guide),但我无法重现此错误或识别导致错误的模式。
该错误仅影响 5% 到 10% 的用户,卸载和重新安装是一种解决方法,但不是解决方案。
回复 Hans Passant:
该 |确实是一个奇怪的角色,我不知道它来自哪里,也不知道它在这种情况下代表什么。然而,部署 url(包括 | 符号)始终是相同的,并且在 90% 的情况下都有效。我不认为 |符号是问题的原因。不过,我会试着找出这个角色出现的原因,然后再回来找你。
卸载/重新安装解决了客户端的问题(相同的安装程序!)。因此,我们可以排除损坏的 .Net/VS 安装。
反恶意软件 (McAfee) 可能是一个问题,一旦我设法在我的一台测试机器上重现该错误,我将立即进行调查。
文件路径长度为 123 个字符;文件名有 21 个字符。文件路径 + 文件名 = 144 个字符
【问题讨论】:
标签: wpf deployment visual-studio-2013 clickonce