FileNotFoundException при установке ClickOnce, отсутствует HKCU\Software\Classes\Software

У одного из наших пользователей есть очень серьезная проблема с 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
  • Удалить папку приложения
  • Выполнить mage -cc
  • Убейте dfsvc.exe и повторите попытку (dfsvc получает каждый раз при загрузке)

Я опубликовал приложение helloworld в .NET 3.5 и .NET 4.0 и скопировал всю папку \publish на свою машину. Это также не устанавливалось, давая ту же ошибку. Наконец, я пошел в реестр, чтобы попытаться добавить расширенные протоколирования на RobinDotNet и понял, что HKCU\Software\Classes\Software полностью отсутствует. После нескольких потоков я пошел и переименовал UsrClass.dat. Однако после выхода из системы и входа в систему это не было восстановлено. Я подозреваю, что это может быть проблема. Любые мысли о том, как заставить ClickOnce работать снова?

Это достаточно новая установка Windows 7 Professional.

Обновить Вот еще один ключ. Мы можем переименовать UsrClass.dat на что угодно или удалить его без какой-либо жалобы из Windows, поэтому он не загружается. На моей машине он жалуется, что он используется.

Ответ 1

Я бы сказал, забыл о ClickOnce и выяснил, что этот реестр. Вероятно, это не правильная тема для StackOverflow, более похожая на SuperUser.com...

В любом случае:
1) Попробуйте восстановить систему, посмотрите, можете ли вы найти состояние, в котором существует этот куст реестра, возможно, вам придется вернуться много недель. 2) Попробуйте экспортировать этот куст реестра с вашего устройства и импортировать его в клиентскую машину. Посмотрите, исчезла ли ошибка или если она жалуется на другой улей - возможно, что реестр поврежден, а также отсутствуют другие ульи... 3) Если эти две проблемы не устраняют проблему, тогда вам лучше сделать чистую установку (она будет быстрее, чем поиск точной причины проблемы, и вы можете быть уверены, что все будет исправлено)
4) Наконец, удалите любое средство для очистки реестра или программное обеспечение для настройки ПК. Они, как известно, вызывают проблемы, коррупция реестра является одним из них. Также проверьте наличие проблем с оборудованием, на жестком диске может возникнуть поврежденный блок или оперативная память, возможно, неисправная (запустите 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

Попробуйте инструмент для очистки реестра. Я никогда не испытывал этого, но я думаю, что это не связано с вашим приложением или манифестом, проверьте программное обеспечение или инструмент, которые могут вызвать эту проблему на этом компьютере пользователя.