Обновление вручную для подписанного приложения ClickOnce создает исключение TrustNotGrantedException - PullRequest
0 голосов
/ 08 января 2019

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

ApplicationDeployment.CurrentDeployment.CheckForDetailedUpdate()

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

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

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

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

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

1 Ответ

0 голосов
/ 26 февраля 2019

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

...