Минимальные требования к проекту проекта.NET Framework 3.5

обзор

У меня есть приложение, работающее под.NET Framework 3.5. Поскольку клиенты используют Windows 7 (по умолчанию:.NET 3.5) и Windows 8/8.1 (по умолчанию:.NET 4.5). На данный момент.NET Framework (3.5) устанавливается, если он недоступен в системе.

Само приложение может работать под.NET 4.5, поэтому я хочу удалить зависимость от.NET Framework 3.5.

проблема

В проекте установки я должен определить "Условия запуска", где указан.NET Framework и не может быть удален. Когда он настроен с версией 3.5, он будет запускаться в Windows 7 и выдает сообщение об ошибке в Win 8. При изменении версии 4.5 он будет работать на Win 8, но не на 7. Когда я меняю версию на "Any", она устанавливается на Win 7, но бросает ошибка во время установки на Win 8, говоря: "Ошибка 1001 InstallUtilLib.dll. неизвестная ошибка".

Вопрос

Как может проект установки проверить версию выше, чем.NET Framework 3.5 вместо "Any", и если мне нужно использовать "Any", как заставить ее работать под Win 8?

Детали

Я использую VS2013 с расширением Visual Studio Installer Projects v1.0.0

Структура раствора:

  • Custom_Action (NET 3.5, x86)
  • MyProject (NET 3.5, x86)
  • SetupProject (свойство 'TargetPlatform' установлено на x86)

Файл app.config для Custom_Action и MyProject устанавливается следующим образом: <configuration> <startup> <supportedruntime version="v2.0.50727"> <supportedruntime version="v4.0"> </supportedruntime> </supportedruntime> </startup> </configuration>

Когда я запускаю настройку на Win 7, все работает. Когда я запускаю настройку в Win 8, я просматриваю Диалоги настройки программы установки. Он остановится с ошибкой "Ошибка 1001 InstallUtilLib.dll. Неизвестная ошибка"

1 ответ

Куча вещей, не уверен, есть ли конкретный ответ.

Там нет такой вещи, как "Любая". Вы должны построить один для каждой архитектуры:

http://blogs.msdn.com/b/heaths/archive/2008/01/15/different-packages-are-required-for-different-processor-architectures.aspx

потому что я думаю, что ошибка InstallUtilLib может быть связана с 64-битным 32-разрядным. Ваше настраиваемое действие вызывается InstallUtilLib.dll и что Dll специфичен для битности (он находится внутри вашего файла MSI), поэтому вы не хотите никаких попыток перекрестных вызовов архитектуры, которые будут терпеть неудачу, поэтому все, что использует ваш класс установщика, должно также соответствуют битности установки. Поэтому, если вы построили установку x86, установите все классы кода и установщика, используемые также 32-разрядной установкой.

Убедитесь, что расширение вашего установщика VS является последним: раньше у него была ошибка InstallUtilLib.

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

licensed under cc by-sa 3.0 with attribution.