Обновление вручную для подписанного приложения ClickOnce вызывает исключение TrustNotGrantedException

У меня есть развертывание ClickOnce, подписанное сертификатом, полученным от Symantec. В предупреждении системы безопасности после запуска установки отображается имя издателя. Так что ему доверяют. Но при звонке

ApplicationDeployment.CurrentDeployment.CheckForDetailedUpdate()

Я получаю TrustNotGrantedException - пользователь отказался предоставить приложению необходимые разрешения.

Если я добавляю свой сертификат в хранилище доверенных издателей на моем компьютере, исключение не создается, и в хранилище также добавляется ЦС Symantec. Но, очевидно, я не могу добавить сертификат в Магазин доверенных издателей наших клиентов, которые используют приложение.

Приложение сначала устанавливается с диска и при каждом запуске проверяет URL-адрес онлайн-обновления. И если я удалю сертификаты из магазина доверенных издателей впоследствии, ручное обновление все равно будет работать, если я попробую еще раз. Эта информация также хранится в другом месте?

Если я не подписываю опубликованное приложение ClickOnce, ручное обновление работает. Если я подпишу опубликованное приложение ClickOnce с помощью самозаверяющего сертификата, созданного с помощью makecert, обновление будет выполняться вручную. Так что, вероятно, проблема с сертификатом?

Как я могу определить, существует ли проблема с сертификатом, и какие действия мне следует предпринять дальше?


person frichter    schedule 08.01.2019    source источник


Ответы (1)


Мы используем Класс InPlaceHostingManager прямо сейчас. Он предназначен для установки или обновления развертывания ClickOnce. GetManifestAsync() запускает событие GetManifestCompleted, которое дает вам номер версии. Затем вы можете вызвать DownloadApplicationAsync() и обработать событие DownloadApplicationCompleted. Пока это работает, и исключение TrustNotGrantedException не создается.

person frichter    schedule 26.02.2019