ClickOnce - возможно ли добавить сертификат подписи кода в существующее развертывание? - PullRequest
2 голосов
/ 05 октября 2009

Допустим, у нас развернуто приложение версии 2.0, на котором уже работает около 3000 пользователей.

Пока что приложение не подписано (подписано каким-то автоматически сгенерированным сертификатом из VS).

Пользователи используют .NET 2.0.

Теперь мы хотели бы развернуть новую версию, которая будет подписана с использованием сертификата от tucows. Один из приведенных ниже ответов указывает на то, что в случае, когда мы ориентируемся на .NET Framework 2.0, изменение сертификата для подписи кода «нарушит» идентичность приложения. Что это значит?

Как добавить новый сертификат подписи кода в существующее развертывание?

Уведомление всех пользователей о переустановке приложения с нуля (или с нового URL) невозможно.

( РЕДАКТИРОВАТЬ: это было предыдущее требование, сейчас не действует:

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

Ответы [ 3 ]

1 голос
/ 16 октября 2009

Я только что нашел отличный пост, подробно объясняющий проблему:

Это относится как к изменению сертификата с временного на доверенного поставщика сертификатов, так и к сертификатам с истекшим сроком действия.

Они могут получить следующую ошибку: + Идентификатор развертывания не соответствует подписке.

Решение также состоит в том, чтобы позволить пользователям .NET 2.0 переустанавливать все приложение clickonce, что невозможно. Другое решение заключается в том, чтобы выдвинуть предварительную версию .NET 3.5 с пакетом обновления 1 (SP1), что в любом случае вызывает переустановку и требует огромной загрузки.

Ссылка: http://social.msdn.microsoft.com/Forums/en/winformssetup/thread/1217520d-6dc4-4fb1-83d1-0fa148d60e5d

Разрыв приложения в случае .NET 2.0 означает, что существующие пользователи получат ошибку при установке обновления или не увидят обновление вообще.

Он ссылается на пост с исходным кодом, который может исправить приложение для пользователей .NET 2.0: http://robindotnet.wordpress.com/2009/03/30/clickonce-and-expiring-certificates/

Процесс обновления заключается в повторной подписи промежуточного обновления сертификатом с тем же ключом, что и у истекающего сертификата, публикации промежуточного обновления, которое удаляет приложение, и форсировании установки новой версии.

Очень больно!

0 голосов
/ 09 октября 2009

Как сказал Кайл, это сработает, если вы будете осторожны. (и конечно же опубликовать точно такую ​​же версию)

Предупреждение: существующие пользователи должны иметь как минимум .NET 3.0 SP2 ИЛИ .NET 3.5 SP1.

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

Но, пожалуйста, попробуйте сами, это легко сделать с помощью мини-проекта, который вы просто продолжаете публиковать в общий ресурс на своем компьютере и попробуйте подписывать и т. Д. Между выпусками.

0 голосов
/ 05 октября 2009

Да, это будет работать на 100%. Новая подпись, конечно, вступит в силу, если программа будет загружена снова. Однако подпись не должна затрагивать пользователей с текущей версией, только если программа загружена / обновлена.

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

...