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

标签 c# clickonce

我们的一位用户对 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)

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

  1. 删除 list 中与应用程序相关的文件夹和文件
  2. 删除 2.0 文件夹
  3. 删除应用文件夹
  4. 运行 mage -cc
  5. 杀死 dfsvc.exe 并重试(每次失败时都会加载 dfsvc)

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

这是相当新鲜的 Windows 7 Professional 安装。

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

最佳答案

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

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

关于c# - ClickOnce 安装期间出现 FileNotFoundException,缺少 HKCU\Software\Classes\Software,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779043/

相关文章:

c# - 在 Entity Framework 中批量插入

c# - 如何在 C# 中使用多个事件处理程序 text_changed?

c# - 通过 clickonce 发布时如何更改 Setup.exe 图标

clickonce - ClickOnce 如何将 app.config 从开发更改为部署一?

c# - 将 TextBox 绑定(bind)到 ObservableCollection.Count WPF?

c# - 检测 OpenFileDialog

c# - 托管具有模板支持的 REST Web 服务器

c# - 如何在包含第三方 DLL 文件的同时部署 C# 应用程序?

c# - 如何发布项目中包含一些必要文件的文件夹

fonts - 如何在 clickOnce 安装中包含字体