ClickOnce 安装期间出现 FileNotFoundException,缺少 HKCU\Software\Classes\Software

Posted

技术标签:

【中文标题】ClickOnce 安装期间出现 FileNotFoundException,缺少 HKCU\\Software\\Classes\\Software【英文标题】:FileNotFoundException during ClickOnce Install, missing HKCU\Software\Classes\SoftwareClickOnce 安装期间出现 FileNotFoundException,缺少 HKCU\Software\Classes\Software 【发布时间】:2011-10-15 16:21:27 【问题描述】:

我们的一位用户在使用 ClickOnce 时遇到了非常严重的问题。这个错误很经典:

     Following errors were detected during this operation.  * [14/10/2011 01:40:25] System.IO.FileNotFoundException
      - The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
      - Source: System.Deployment
      - Stack trace:    
at System.Deployment.Internal.Isolation.IsolationInterop.GetUserStore(UInt32 Flags, IntPtr hToken, Guid& riid)    
at System.Deployment.Internal.Isolation.IsolationInterop.GetUserStore()   
at System.Deployment.Application.ComponentStore..ctor(ComponentStoreType storeType, SubscriptionStore subStore)    
at System.Deployment.Application.SubscriptionStore..ctor(String deployPath, String tempPath, ComponentStoreType storeType)    
at System.Deployment.Application.SubscriptionStore.get_CurrentUser()    
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)

但是传统的解决方案都不起作用。我们试过了:

    删除清单中与应用程序相关的文件夹和文件 删除 2.0 文件夹 删除应用文件夹 运行法师-cc 杀死 dfsvc.exe 并重试(每次失败时都会加载 dfsvc)

我在 .NET 3.5 和 .NET 4.0 中发布了一个 helloworld 应用程序,并将整个 \publish 文件夹复制到他的机器上。这也没有安装,给出了同样的错误。最后,我去注册表尝试为每个 RobinDotNet 添加增强的日志记录,并意识到 HKCU\Software\Classes\Software 完全丢失了。在更多线程之后,我将其重命名为 UsrClass.dat。但是,注销并登录后,并没有重建。我怀疑这可能是问题所在。关于如何让 ClickOnce 再次工作有什么想法吗?

这是一个相当新的 Windows 7 专业版安装。

更新这是另一个线索。我们可以将 UsrClass.dat 重命名为任何内容或将其删除,而不会受到 Windows 的任何投诉 - 因此它不会被加载。在我的机器上,它抱怨它正在使用中。

【问题讨论】:

当您说您在 .NET 3.5 和 .NET 4.0 中发布了应用程序并将 \publish 文件夹复制到他的机器上时,您是什么意思?您的应用程序的安装 URL 是什么?因为如果将其设置为从其他地方安装它,则将其复制到机器将不起作用——它会在该位置查找。 【参考方案1】:

我会说忘记 ClickOnce 并整理注册表。这可能不是 *** 的正确主题,更像是 SuperUser.com...

无论如何: 1) 尝试系统还原,看看您是否可以找到该注册表配置单元存在的状态,您可能需要返回数周。 2) 尝试从您的机器中导出该注册表配置单元并将其导入客户端机器。查看错误是否消失或者它是否抱怨不同的配置单元 - 注册表可能已损坏并且还缺少其他配置单元... 3)如果这两个都不能解决问题,那么您最好进行全新安装(这比查找问题的确切原因要快,并且您可以确定一切都会得到解决) 4) 最后卸载任何注册表清理器或 pc 调整软件。众所周知,它们会导致问题,注册表损坏就是其中之一。还要检查硬件问题,HDD 可能已经开发了一个坏块或 RAM 可能有故障(运行 MemTest 3 次以上以确保)...

【讨论】:

【参考方案2】:

尝试卸载它然后重新安装它!我相信它应该可以工作。

【讨论】:

【参考方案3】:

尝试删除以下文件夹:

C:\Users\username\AppData\Local\Apps\2.0\

Data 文件夹除外。

您也应该删除 .NET Framework 临时文件:

C:\WINDOWS\Microsoft.NET\Framework\<version>\Temporary ASP.NET Files

【讨论】:

【参考方案4】:

尝试使用清理注册表的工具。我从未遇到过,但我认为与您的应用程序或清单无关,请检查可能导致该用户计算机出现此问题的软件或工具。

【讨论】:

以上是关于ClickOnce 安装期间出现 FileNotFoundException,缺少 HKCU\Software\Classes\Software的主要内容,如果未能解决你的问题,请参考以下文章

C# clickonce用处

[ClickOnce] - Win10 管理员模式下无法安装 ClickOnce 之解决

快速创建软件安装包-ClickOnce

ClickOnce 先决条件 - 如何管理先决条件的安装顺序?

.NET ClickOnce 没有安装必备文件?

ClickOnce 安装程序无法安装 SQLLocalDb2012,因为 sqlcmdnutils.msi 自最初发布以来已更改