MrDeej Ответов: 2

Ошибка обновления Clickonce


- Привет!

У меня есть приложение, которое в прошлом месяце получило ошибку, которую я не смог решить.

Приложение представляет собой складское / производственное приложение WPF и публикуется в локальной сети без подключения к Интернету с примерно 100 компьютерами с Windows 7. Приложение находится в быстром цикле разработки и имеет до 100 обновлений в год. В приложении также есть фоновая программа обновления, которая обновляет приложение и уведомляет пользователя о завершении с помощью запроса на перезапуск. Приложение развертывается в общей сетевой папке, в которой для папки установки и обновления указан полный путь. Однако пользователь может выбрать установку приложения с сетевой станции в своем файловом проводнике, поскольку тот же общий ресурс также отображается как этот. Это не должно вызывать беспокойства, если установлено местоположение обновления.

Ошибка заключается в том, что при проверке обновленной версии мы получаем сообщение "пользователь отказался предоставить необходимые разрешения на доступ к приложению". Мы пробовали как фоновое, так и переднее обновление, и мы также недавно попробовали это:

ApplicationDeployment deployment = ApplicationDeployment.CurrentDeployment;

               var appId = new ApplicationIdentity(deployment.UpdatedApplicationFullName);
               var unrestrictedPerms = new PermissionSet(PermissionState.Unrestricted);
               var appTrust = new ApplicationTrust(appId)
               {
                   DefaultGrantSet = new PolicyStatement(unrestrictedPerms),
                   IsApplicationTrustedToRun = true,
                   Persist = true
               };

               ApplicationSecurityManager.UserApplicationTrusts.Add(appTrust);


без успеха.


Наш код обновления таков:
 if (ApplicationDeployment.IsNetworkDeployed)
            {

                ApplicationDeployment deployment = ApplicationDeployment.CurrentDeployment;

                var appId = new ApplicationIdentity(deployment.UpdatedApplicationFullName);
                var unrestrictedPerms = new PermissionSet(PermissionState.Unrestricted);
                var appTrust = new ApplicationTrust(appId)
                {
                    DefaultGrantSet = new PolicyStatement(unrestrictedPerms),
                    IsApplicationTrustedToRun = true,
                    Persist = true
                };

                ApplicationSecurityManager.UserApplicationTrusts.Add(appTrust);

                try
                {
                    info = deployment.CheckForDetailedUpdate();

                }
......


и он всегда терпит неудачу с TrustNotGrantedException и приведенным выше сообщением. Даже если я опубликую обновление без изменений в кодовой базе.

johannesnestler

значит, сначала это сработало? через некоторое время процесс обновления вызвал ошибку? Можете ли вы "сказать", с какой версии он больше не работал?
Я подозреваю, что некоторые изменения в ИТ-инфраструктуре или изменения в вашем коде развертывания / конфигурации...

MrDeej

Около месяца назад, кажется, что до сих пор некоторые компьютеры не затронуты. У меня есть подозрение насчет обновления Windows.
Но у нас есть приложение Winforms, также опубликованное в той же среде, и оно отлично работает с тем же кодом обновления.


Наш код был неизменен и работал уже некоторое время, когда он внезапно сломался.

Joan Magnet

Мы обнаружили большую проблему с одним обновлением win в этом месяце, связанным с разрешениями ключа реестра, в библиотеках Net Framwork (2 & 4.5).

2 Ответов

Рейтинг:
0

TheCrazyTim

Проверьте этот поток из mate, он объясняет причину исключения TrustNotGrantedException:

Приложение ClickOnce с полным доверием обновление не с TrustNotGrantedException на Windows 8[^]


Dave Kreskowiak

Спустя полтора года я всерьез надеюсь, что ОП все еще не ищет ответа.