Сбой обновления ClickOnce после преобразования в .NET 4 - PullRequest
6 голосов
/ 21 сентября 2010

Наше приложение .NET 3.5 развернуто через ClickOnce.Мы просто обновляем до .NET 4.0 и соответствующим образом обновляем предварительные требования.

Установка по-прежнему работает нормально для начинающих пользователей или пользователей, которые устанавливают через HTML-страницу установки.Он автоматически установит .NET 4 Framework для них.Однако пользователи, которые уже установили приложение и пытаются запустить его через меню «Пуск», получают приглашение:

«Невозможно установить или запустить это приложение. Это приложение требует обновления вашей системы до Microsoft Common LanguageRuntime Version 4.0.30319.0. Дополнительную информацию можно найти здесь "(ссылка на сайт MS)

Почему он не устанавливает автоматически .NET 4.0, как это происходит при запуске с html-страницы?Это даже не дает возможность загружать обновления.Нам необходимо бесшовное решение для наших клиентов, чтобы перейти на новое приложение без переустановки вручную.

Ответы [ 2 ]

5 голосов
/ 21 сентября 2010

Прочитайте этот вопрос и ответ сначала.

Вот что происходит в ваших сценариях.

  1. "Установка отлично работает для начинающих пользователей ..."
    На самом деле, это будет работать для любого пользователя, который зашел на html-страницу, а не только для начинающих. На html-странице есть некоторый скрипт, который проверяет строку пользовательского агента на наличие инфраструктуры 4.0. Если у них его нет, он дает им объяснение и указывает установить его по ссылке на загрузчик, созданный Visual Studio (setup.exe). Это все отдельно от ClickOnce; ClickOnce не выполняет ничего до тех пор, пока они не нажмут на ссылку на файл .application или не запустят файл setup.exe, запускающий файл .application после его завершения.

  2. "Пользователи, которые уже установили приложение и пытаются запустить его через меню" Пуск "..."
    Что происходит здесь, это то, что приложение обновляется правильно. Они получают последнюю версию. Только они не могут запустить последнюю версию, потому что это исполняемый файл .Net 4.0, и у них нет платформы 4.0.

На данный момент у вас есть несколько вариантов ...

  • Жить с этим. Скажите пользователям, что им нужно посетить html-страницу, чтобы получить 4.0 Framework.
  • Откат до 3.5 и добавление пользовательского кода в ваше приложение, которое проверяет, установлен ли 4.0 или нет, предупреждает пользователя и дает ему ссылку на новый файл 4.0 setup.exe. Затем обновите до 4.0 через несколько недель, как только у людей появится возможность установить его. Это может не сработать, если ваши пользователи запускают приложение только изредка.
  • Откатитесь до 3.5 и измените ваши обновления ClickOnce так, чтобы они происходили после запуска приложения, а не до этого. Это даст вам возможность написать собственный код, чтобы определить, может ли обновление произойти или нет, и сообщить пользователю.
2 голосов
/ 25 сентября 2010

Другим вариантом является откат до версии .NET 3.5 и добавление пользовательского кода, который программным способом отменяет вызов приложения и переустанавливает его с другого URL-адреса, в котором в качестве предварительного условия используется .NET 4.Люди, у которых уже есть .NET 4, просто получат новую версию бита ClickOnce;люди с .NET 3.5 получит приложение удалено, установлен .NET 4 и установлена ​​новая версия приложения.

Вы можете найти код удаления / переустановки в этой статье MSDN здесь .

...