allen.thurman Ответов: 0

Использование utilregistrysearch в wixsharp


У меня есть пакет Wix sharp, который я создаю, и я пытаюсь использовать UtilRegistrySearch для проверки версии .NETFramework, которая находится на целевой машине:

новый UtilRegistrySearch
{
Root = RegistryHive.Локальная машина,
Ключ = "программное обеспечение\Майкрософт\net на настройка\НДП\В4\полный",
Значение = " Release",
Переменная = " NetFrameworkVersion";
}

Я хочу взять эту переменную NetFrameworkVersion и использовать ее в качестве моего условия установки для установки .NET framework 4.6.1 если целевой компьютер не находится по крайней мере в .NET Framework 4.5

ExePackage dotNet_exe = новый ExePackage (@"prereqs\DotNet4.6.1.exe")
{
Name = " Microsoft .NET Framework 4.6.1",
InstallCommand = " / passive /norestart",
InstallCondition = " NetFrameworkVersion < 394254",
};


Проблема в том, что значение реестра, которое я проверяю, является REG_SZ, и поэтому переменная NetFrameworkVersion является строкой. Так что, похоже, сравнение с целым числом (394254) не работает. Есть какие-нибудь идеи о том, как я могу привести переменную к int или что я должен сделать, чтобы правильно определить условие установки?

Что я уже пробовал:

Попробовал просто установить InstallCondition следующим образом:

InstallCondition = " NetFrameworkVersion"

InstallCondition = " NetFrameworkVersion < 394254"

и использование DetectCondition

DetectCondition = " NetFrameworkVersion",

Richard MacCutchan

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

Richard MacCutchan

В моей системе это значение является REG_DWORD и содержит число 394254.

allen.thurman

на самом деле ваше право-это REG_DWORD. Так стоит ли мне менять формат?

новый UtilRegistrySearch
{
Root = RegistryHive.Локальная машина,
Ключ = "программное обеспечение\Майкрософт\net на настройка\НДП\В4\@полная",
Значение = " Release",
Формат = WixSharp.Загрузчика.SearchFormat.совместимость,
Переменная = " NetFrameworkVersion"
}

Richard MacCutchan

Извините, я не понимаю, что вы имеете в виду.

0 Ответов