Пользовательские настройки потерялись во время обновления ClickOnce после того, как я обновил наш сертификат для подписи кода - PullRequest
2 голосов
/ 28 марта 2012

Срок действия нашего сертификата для подписи кода истек, поэтому я обновил его и только что опубликовал нашу первую версию, в которой используется новый сертификат. К сожалению, любой клиент, который устанавливает обновление, теряет параметры приложения в пользовательской области и получает сброс к значениям по умолчанию. Я уверен, что другие обновления всегда копировали пользовательские настройки из предыдущей версии, поэтому я предполагаю, что есть какая-то проблема, связанная с новым сертификатом. Мы используем купленный сертификат, а не тестовый сертификат. Наше приложение - это приложение WinForms, предназначенное для .NET 3.5. Центр сертификации, похоже, перешёл в другие руки за три года, с тех пор как мы приобрели первый сертификат, поэтому поля эмитента отличаются.

Есть ли способ избежать потери пользовательских настроек при обновлении сертификата для подписи кода?

Ответы [ 2 ]

4 голосов
/ 28 марта 2012

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

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

RobinDotNet написал исчерпывающую статью об истечении срока действия сертификата и ClickOnce . Я обнаружил, что есть сообщение об ошибке , но вряд ли оно будет исправлено. Похоже, что нацеливание на .NET 4.0 устранит эту проблему, но переход с 3.5 на 4.0 может быть немного хитрым .

Одна вещь, которая может сделать процесс истечения немного более гладким, - это отметка времени подписания. Таким образом, вам не нужно обновлять свой сертификат и публиковать новую версию до истечения срока действия старого сертификата. Единственный URL-адрес сервера отметок времени, о котором я упоминал, это:

http://timestamp.verisign.com/scripts/timstamp.dll

1 голос
/ 29 марта 2012

Давайте сначала рассмотрим некоторые ошибки, связанные с обновлением настроек приложения, и перейдем к специфике пользовательских настроек.

В статье, на которую вы ссылаетесь, говорится, что с вами все в порядке (без возможности обновления), если вы не являетесь приложением VSTO 2010. Если это так, перенацеливание на .NET 4.0 все еще довольно тривиальное упражнение с одним допущением: вам необходимо иметь .NET 4.0 в системах ваших клиентов. Если это не так, найдите письмо, отправленное им в день, когда вы представили свое приложение (с URL-адресом для установки), и распространите его снова. Этот метод снабдит их .NET 4 (но просто запустить приложение как обычно нет).

ClickOnce дополнительно требует, чтобы ваша идентификация (Subject - CN part) совпадала на обоих сертификатах, старых и новых, чтобы признать, что это все еще одно и то же приложение. Это тот случай? Покопайтесь в предметной детали.

В противном случае ваш последний шанс в отношении настроек приложения - манипулировать app.exe.config, который программно сохраняет настройки вашего приложения из вашего приложения. Если у вас есть права доступа для этого в системах ваших клиентов, то есть

Обновление пользовательских настроек немного сложнее по конструкции. Причина в том, что ClickOnce пытается объединить настройки по умолчанию новой версии с настройками конкретного пользователя в старой версии. Однако возможно настроить эту логику, переопределив ApplicationSettingsBase.Upgrade.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...