Развертывание ClickOnce CheckForDetailedUpdate вызывает исключение - PullRequest
4 голосов
/ 07 марта 2012

У меня есть приложение, которое работает 24/7 без участия.Он развертывается через ClickOnce и должен самостоятельно проверять и загружать обновления.Проверяет наличие обновлений при запуске приложения и в назначенное время ночью.Когда он делает это при запуске, он работает отлично.

Однако, когда он делает это в запланированное время, он падает.В обоих случаях используется один и тот же кусок кода.Он работает под Windows 7 и может иметь отношение к UAC .Я думаю, что, возможно, он не может получить доступ к файловой системе, когда компьютер находится в режиме ожидания?Мне действительно нужно это исправить.Вот подробности исключения:

Сообщение:

Привилегия, необходимая для правильной работы службы, не существует в конфигурации учетной записи службы.Вы можете использовать оснастку «Служба Microsoft Management Console (MMC)» (services.msc) и оснастку «Локальные параметры безопасности» (secpol.msc) для просмотра конфигурации службы и конфигурации учетной записи.(Исключение из HRESULT: 0x80070511)

Трассировка стека:

at System.Deployment.Internal.Isolation.IStore.GetAssemblyInformation(UInt32 Flags, IDefinitionIdentity DefinitionIdentity, Guid& riid)
at System.Deployment.Internal.Isolation.Store.GetAssemblyManifest(UInt32 Flags, IDefinitionIdentity DefinitionIdentity)
   at System.Deployment.Application.ComponentStore.GetAssemblyManifest(DefinitionIdentity asmId)
   at System.Deployment.Application.ComponentStore.GetSubscriptionStateInternal(DefinitionIdentity subId)
   at System.Deployment.Application.SubscriptionStore.GetSubscriptionStateInternal(SubscriptionState subState)
   at System.Deployment.Application.DeploymentManager.BindCoreWithAppId(Boolean blocking, FileStream& refTransaction, String& productName)
   at System.Deployment.Application.DeploymentManager.BindCore(Boolean blocking, TempFile& tempDeploy, TempDirectory& tempAppDir, FileStream& refTransaction, String& productName)
   at System.Deployment.Application.DeploymentManager.Bind()
   at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate(Boolean persistUpdateCheckResult)
   at AdvancedKiosks.Utils.Updating.Updater.get_UpdateAvailabilityStatus()
   at AdvancedKiosks.Utils.Updating.Updater.get_CanUpdate()
   at AdvancedKiosks.DKMS.ViewModel.MainViewModel.<.ctor>b__6()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

РЕДАКТИРОВАТЬ: Я думаю, что причиной может быть то, что жесткий диск отключается через некоторое время системыбездействоватьЕсть ли способ программно включить жесткий диск перед проверкой обновлений (используя C #)?

1 Ответ

4 голосов
/ 05 декабря 2012

Я поставлю эту ссылку здесь только для записи: ссылка на форум MSDN . Согласно этому, это внутренняя ошибка ClickOnce, из-за которой эта ошибка появляется после определенного количества вызовов функции CheckForDetailedUpdate ().

...