2013-02-14 3 views
3

У меня есть продукт, который мы разработали, и мы просто тестируем на Windows 8 и Server 2012. Проблема заключается в том, что после установки на Win 8/2012 заканчивается совместимость (из того, что я понимаю до сих пор) появляется диалог, в котором говорится, что приложение требует .Net 3.5 для правильной работы. Смотрите скриншот ниже:Почему после установки установлена ​​совместимость с совместимостью с Windows 8?

.net required dialogue

Поскольку наш продукт является родным драйвером принтера, я считаю, что очень маловероятно! Это только предпосылка для Win 8/2012 - это версия визуального C++ re-distributable.

Я также использую install shield 2010 для создания установщика, если это помогает.

Кто-нибудь еще видел, что Win 8 неправильно предлагает приложениям требовать .net 3.5? Кто-нибудь знает о каком-либо надежном источнике, который определяет, как совместимость определяет, требует ли приложение .net 3.5?

Спасибо!

Энди

** Обновление **

Найдено этого блога MSDN: http://blogs.technet.com/b/askcore/archive/2012/05/14/windows-8-and-net-framework-3-5.aspx. Вкратце предлагается следующее:

  • Вы пытаетесь установить .Net 2.0, 3.0 или 3.5 с помощью распространяемого пакета, доступного для загрузки из Microsoft.
  • Приложение пытается установить один из распространяемых пакетов для требуемой версии во время своего собственного процесса установки.
  • Приложение, которое требует устаревшей версии, выполняется без предварительной установки требуемой версии.

К сожалению, ничто из этого не объясняет, почему я это вижу!

** Обновление **

Просто быть явным, у меня нет управляемых библиотек или EXEs, только чистый родной С и С ++, некоторые встроенные с Visual Studio компилятор (без CLr флагов) и некоторые с DDK.

... Как стыдно! ...

+0

Ну, странно. Используйте инструмент проверки MSI, такой как Orca, чтобы убедиться, что это не было InstallShield, который вызвал это. http://msdn.microsoft.com/en-us/library/windows/desktop/aa370557%28v=vs.85%29.aspx –

+0

Если вы пропустили установку, какие перерывы? :) –

+0

Ничего! :) Нам не нужен .net, установленный для работы нашего драйвера! lol – Andy

ответ

0

Ну, это немного неловко ....

... Оказывается, была создана библиотека .net, скомпилированная с CLR 2, которая запускалась глубоко внутри некоторого InstallScript внутри установщика. (В моей защите установщик довольно большой!)

Так что извинения за любого, кто думает, что это действительно было загадкой, диалог был правдой! Кроме того, извинения перед парнем, который догадался в первый раз и с тех пор удалил свой пост. Это было довольно информативно по этому вопросу. Не стесняйтесь добавлять его обратно, и я буду отмечать, как ответ! :)

Энди.

1

Я думаю, что вы смотрите на ложный положительный результат. Вот еще одна цитата из блога вы связаны между собой:

Классическое «Ваш пробег может варьироваться» отказ от ответственности применяется здесь, потому что мы действительно не знаю, как все приложения будут реагировать на регулировочной шайбы пересекающей попытку установки. Кроме того, некоторые приложения ищут наличие определенных файлов для проверки установки нужной версии .Net. Такие установки приложений могут завершиться неудачно, если .Net 3.5 был установлен в , поскольку некоторые файлы, ранее представленные в старых версиях , устарели в Windows 8. Однако мы тестируем многие часто используемые приложения, а в некоторых случаях внедряем прокси-прокси , если они обнаруживают .NET ненадлежащим образом.

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

Перевод: это полный взлом.

+0

Обычно вы можете играть с манифестом, чтобы отключить прокладки, интересно, что бы вы сделали в этом случае. – user7116

+0

@ Кристофер Пейнтер Я тоже нашел этот абзац! Удручает! – Andy

+0

@sixlettervariable Звучит неплохо, на что посмотреть! Я сделаю исследование и посмотрю! – Andy

1

Я намного более опытен с сообщением PCA, которое запускает «неудачные» установки. Для тех, кто определенно может улучшить ситуацию, отредактировав шаблон app manifests в папке поддержки InstallShield \ setupexe.<level>.manifest (уровень invoker или highest или admin), и в этих случаях вы добавляете элемент для каждой дополнительной ОС, которую вы заявляете для поддержки. как добавив <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> для Windows 8.

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

(Обратите внимание, что код, который мы проверили на данную целевую ОС следует обновить до версии InstallShield, который был на самом деле испытанной, но во многих случаях, копирование правильного supportedOS элемента будет достаточно.)

+0

Это интересная идея! Я немного попробую, если я все равно ничего не пойму. Думаю, я, возможно, немного сузил его! Я буду держать вас в курсе! :) – Andy