Исключение FileNotFoundException во время установки ClickOnce, отсутствует HKCU Software Classes Software

#c# #clickonce

#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, Guidamp; 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, Stringamp; errorPageUrl)    at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
  

Но ни одно из традиционных решений не сработало. Мы пытались:

  1. Удаление папок и файлов в манифесте, связанных с приложением
  2. Удалить папку 2.0
  3. Удалить папку приложения
  4. Запустите mage -cc
  5. Убить 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. Что вы имеете в виду, когда говорите, что опубликовали приложение в .NET 3.5 и .NET 4.0 и скопировали папку publish на его компьютер? Какой URL-адрес установки для вашего приложения? Поскольку копирование его на компьютер не будет работать, если он настроен на его установку из другого места — он будет искать в этом месте.

Ответ №1:

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

В любом случае:
1) Попробуйте восстановить систему, посмотрите, сможете ли вы найти состояние, в котором существует этот куст реестра, возможно, вам придется вернуться на много недель назад.
2) Попробуйте экспортировать этот куст реестра со своего компьютера и импортировать его на клиентский компьютер. Посмотрите, исчезнет ли ошибка или если она жалуется на другой куст — возможно, реестр поврежден, а также отсутствуют другие кусты…
3) Если эти два не устраняют проблему, тогда вам лучше выполнить чистую установку (это будет быстрее, чем искать точную причину проблемы, и вы можете быть уверены, что все будет исправлено)
4) Наконец, удалите любое программное обеспечение для очистки реестра или настройки ПК. Известно, что они вызывают проблемы, одной из которых является повреждение реестра. Также проверьте наличие аппаратных проблем, возможно, на жестком диске возникли неисправные блоки или, возможно, неисправна оперативная память (запустите MemTest для 3 проходов, чтобы убедиться)…

Ответ №2:

Попробуйте удалить его, а затем переустановите! Я уверен, что это должно сработать.

Ответ №3:

Попробуйте удалить папки в:

 C:UsersusernameAppDataLocalApps2.0
  

Кроме Data папки.

Вам также следует удалить временные файлы .NET Framework:

 C:WINDOWSMicrosoft.NETFramework<version>Temporary ASP.NET Files
  

Ответ №4:

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