Проверьте.NET 4.0 с помощью Wix

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

<InstallUISequence>
  <Custom Action="VSDCA_VsdLaunchConditions" Before="ValidateProductID">NOT Installed</Custom>
</InstallUISequence>

Я не могу найти какие-либо настройки, чтобы изменить его, чтобы он проверял.NET 4.0, а не 2.0. Кажется, что он жестко запрограммирован, возможно, он связан с версией Wix или установщика Windows? В настоящее время мы используем Wix 3.0. Если на компьютере установлен только.NET 4.0, в журнале установщика появляется следующая ошибка:

Начало действия 15:53:36: VSDCA_VsdLaunchConditions. Информация 2898. Для текстового стиля VSI_MS_Sans_Serif13.0_0_0 система создала шрифт "MS Sans Serif" в наборе 0 символов высотой 13 пикселей. ОТЛАДКА: Ошибка 2835: элемент управления ErrorIcon не найден в диалоговом окне ErrorDialog Установщик обнаружил непредвиденную ошибку при установке этого пакета. Это может указывать на проблему с этим пакетом. Код ошибки - 2835. Аргументы: ErrorIcon, ErrorDialog, для этой установки требуется действие.NET Framework версии 4.0, завершившееся 15:53:39: VSDCA_VsdLaunchConditions. Возвращаемое значение 3. Действие завершено 15:53:39: УСТАНОВИТЬ. Возвращаемое значение 3.

Если установлен.NET 2.0, он продолжает установку.

2 ответа

Решение

С тех пор я обнаружил, что проект установки был изначально создан в VS2005 и преобразован в проект Wix с использованием dark и т. Д. При этом извлекается файл MSVBDPCA.dll, который проверяет наличие.NET 2.0 через <CustomAction Id="DIRCA_CheckFX" BinaryKey="MSVBDPCADLL" DllEntry="CheckFX" /> действие. Создание нового проекта настройки в VS2010, а затем преобразование в Wix создает новый файл MSVBDPCA.dll, который проверяет наличие.NET 4.0.

Если установлена ​​dotnet 4.0, в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4 будет находиться раздел реестра

Вы можете проверить этот раздел реестра и открыть сообщение в wix.

Вы можете использовать приведенный ниже код, чтобы сделать это.

<Property Id="DOTNET40">
    <RegistrySearch Id="NetFramework40"
                    Root="HKLM"
                    Key="Software\Microsoft\NET Framework Setup\NDP\v4"
             Name="Install"
                    Type="raw" />
</Property>


<Condition Message="Please install the .NET Framework 4.0 and run this installer again.">
    <![CDATA[Installed OR DOTNET40]]>
</Condition>
Другие вопросы по тегам