Проверьте.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>