WPF ClickOnce Ошибка загрузки бутстрапа на одной машине - PullRequest
1 голос
/ 12 января 2011

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

Некоторый фон: - Я использую стандартную сгенерированную Visual Studio страницу publish.htm в качестве стартовой страницы. - Единственным условием является клиентский профиль .NET Framework 4.0. - Все клиенты, использующие IE 8. - На всех клиентах уже установлен клиентский профиль .NET 4.0.

ClickOnce работает так, как рекламируется на подавляющем большинстве машин. Генерируемый VS JScript правильно определяет, что платформа установлена, и предоставляет пользователю кнопку Run. Приложение запускается просто отлично.

Однако на одном из компьютеров я получаю странные результаты. На компьютере-нарушителе сгенерированный VS JScript сообщает пользователю, что предварительные требования могут быть не установлены, или, скорее, он НЕ СМОЖЕТ обнаружить, что платформа уже установлена. Ссылка «запуск» успешно запускает приложение, но ссылка «Выполнить» указывает на загрузчик setup.exe. Почему не удается определить структуру на этой машине?

Мне пришло в голову, что обнаружение фреймворка - это в основном вопрос проверки строки useragent, переданной браузером. Итак, ниже вы видите две строки UserAgent. Первый - от машины, где все работает правильно. Второй от машины-нарушителя.

ЭТО ОДИН РАБОТАЕТ: 2011-01-11 15:14:14 W3SVC1 192.168.0.36 GET /publish.htm - 80 - 72.130.187.100 Mozilla / 4.0 + (совместимо; + MSIE + 8.0; + Windows + NT + 6.0; + Trident / 4.0; + SLCC1 +. NET + CLR + 2.0.50727 + медиа + центр + PC + 5,0 +. NET + CLR + 3.5.21022 +. NET + CLR + 3.5.30729 +. NET + CLR 3.0.30729 + ; +. NET4.0C) 304 0 0

ЭТО ОДИН НЕ ДЕЛАЕТ: 2011-01-11 18:49:12 W3SVC1 192.168.0.36 GET /publish.htm - 80 - 76.212.204.169 Mozilla / 4.0 + (совместимый; + MSIE + 8.0; + Windows + NT + 6.1; + WOW64; + Trident / 4,0; + GTB6.6 + SLCC2 +. NET + CLR + 2.0.50727 +. NET + CLR + 3.5.30729 +. NET + CLR + 3.0.30729 + медиа + центр + PC + 6,0 + .NET4.0C) 200 0 0

Строка useragent на обеих машинах четко гласит: «Эй, здесь установлен клиентский профиль .NET 4.0», но вторая машина, похоже, не может его обнаружить. Я не знаю достаточно о строках useragent, чтобы понять, почему первое работает, а второе терпит неудачу. Насколько я могу судить, единственное отличие состоит в том, что компьютер, на котором происходит сбой, работает на 64-битной архитектуре. Но это не должно иметь значения. Должно ли это? Есть идеи?

Декстер Морган

1 Ответ

0 голосов
/ 14 января 2011

ПРОБЛЕМА РЕШЕНА!

Я внимательно посмотрел на файл publish.htm, который генерирует VS.NET. В коде JScript есть ошибка. Оскорбительная строка:

checkClient = ложь;

Я изменил строку на:

checkClient = истина;

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

Неверная строка кода должна быть результатом ошибки в логике публикации VS.NET. Надеюсь, MSFT исправит. До этого вам придется исправлять это вручную каждый раз, когда вы запускаете мастер публикации. Тьфу.

...